You are here: Perldoc Web>PerlDokumentListe>Perlreref (2008-04-09)
perlreref Dokumentation zu Perl 5.9.2 | Download als POD | Wie kann ich hier etwas ändern?

BEZEICHNUNG

perlreref - Perl Reguläre Ausdrücke Kurzreferenz

BESCHREIBUNG

Dies ist eine Kurzreferenz zu Perls Regulären Ausdrücken. Vollständige Informationen findet man in perlre und perlop sowie im Abschnitt SIEHE AUCH dieses Dokumentes.

OPERATOREN

  =~ bestimmt, auf welche Variablen die Regex angewendet wird.
     In Abwesenheit des Operators wird die Variable $_ benutzt.

        $var =~ /foo/;

  !~ bestimmt, auf welche Variablen die Regex angewendet wird 
     und negiert das Ergebnis des Matches; es liefert falsch
     zurück, wenn das Muster passt und wahr, wenn nicht.

       $var !~ /foo/;

  m/Muster/igmsoxc durchsucht einen Strings nach einem Muster
     und wendet die angegebenen Modifikatoren an.

        i  Groß-/Kleinschreibung ignorieren
        g  Global - alle Vorkommen des Musters
        m  Multiline Mode - ^ und $ passen auf Zeilenanfang/-ende
           innerhalb des Strings
        s  als einzelne Zeile matchen - . passt auf \n
        o  Muster nur einmal kompilieren
        x  erweiterte Lesbarkeit - beliebiger Whitespace und Kommentare
        c  bei fehlgeschlagenen Matches und Benutzung von /g
           den Wert für pos nicht zurücksetzen

     Wenn 'muster' ein leerer String ist, wird das letzte 
     I<erfolgreich> passende Muster benutzt. Es können andere
     Begrenzer als '/' für diesen und die folgenden Operatoren 
     genommen werden.

  qr/Muster/imsox erlaubt es, eine Regex in einer Variablen zu 
     speichern oder zu übergeben. Modifikatoren gelten wie bei m// 
     und werden mit der Regex gespeichert.

  s/Muster/Ersetzung/igmsoxe ersetzt Treffer von 'Muster' durch
     'Ersetzung'. Modifikatoren gelten wie bei m// mit einer Ergänzung:

        e  Werte 'Ersetzung' als Ausdruck aus

     'e' kann mehrfach genannt werden. 'Ersetzung' wird wie ein
     String in doppelten Anführungszeichen interpretiert, wenn nicht
     einzelne Anführungszeichen (') die Begrenzer sind.

  ?Muster? ist wie m/Muster/, aber passt nur einmal. Es können 
     keine anderen Begrenzer benutzt werden. Muss mit der Funktion
     L<reset|perlfunc/reset> zurück gesetzt werden.

SYNTAX

   \       Entwertet die Sonderbedeutung des darauf folgenden Zeichens
   .       Passt auf ein beliebiges Zeichen außer Newline (außer /s wird benutzt)
   ^       Passt auf den Anfang des Strings (oder einer Zeile, wenn /m benutzt wird)
   $       Passt auf das Ende des Strings (oder einer Zeile, wenn /m benutzt wird)
   *       Passt auf das vorherige Element 0- oder mehr Mal
   +       Passt auf das vorherige Element 1- oder mehr Mal
   ?       Passt auf das vorherige Element 0- oder 1-mal
   {...}   Spezifiziert einen Bereich für das Auftreten des Elementes davor
   [...]   Passt auf ein beliebiges der Zeichen innerhalb der Klammern
   (...)   Gruppiert Unterausdrücke, um sie in $1, $2, ... einzufangen
   (?:...) Gruppiert Unterausdrücke ohne sie zu einzufangen
   |       Passt auf den Unterausdruck davor oder dahinter
   \1, \2 ...  Der Text der n-ten Gruppe

ESCAPE-SEQUENZEN

Diese funktionieren wie in normalen Zeichenketten:

   \a       Alarm (Piepton)
   \e       Escape
   \f       Seitenvorschug (Formfeed)
   \n       Zeilenvorschub (Newline)
   \r       Wagenrücklauf (Carriage return)
   \t       Tab
   \037     Ein beliebiger oktaler ASCII-Wert
   \x7f     Ein beliebiger hexadezimaler ASCII-Wert
   \x{263a} Ein hexadezimales 2-Byte-Zeichen
   \cx      Control-x
   \N{Name} Ein benanntes Zeichen

   \l  Wandle das folgende Zeichen in Kleinschrift
   \u  Wandle das folgende Zeichen in Großschrift
   \L  Wandle bis \E in Kleinschrift
   \U  Wandle bis \E in Großschrift
   \Q  Deaktiviere Muster-Metazeichen bis \E
   \E  Ende der obigen Modifikatoren

Zur Großschrift siehe L</Großschrift>.

Dieses funktioniert anders als in normalen Zeichenketten:

   \b  Eine Wortgrenze, kein Backspace, außer in Zeichenklassen

ZEICHENKLASSEN

   [amy]    Passt auf 'a', 'm' oder 'y'
   [f-j]    Ein Bindestrich bezeichnet einen "Bereich"
   [f-j-]   Ein Bindestrich mit vorstehendem '\' oder am Anfang oder Ende zählt als Bindestrich
   [^f-j]   Ein '^' am Anfang bedeutet "passt auf alle Zeichen _außer_ diesen"

Die folgenden Sequenzen innerhalb und außerhalb von Zeichenklassen. Die ersten sechs beachten die Locale, alle beachten Unicode. Das Default-Äquivalent einer Zeichenklasse steht am Ende. Für Details siehe perllocale und perlunicode.

   \d      Eine Ziffer                  [0-9]
   \D      Eine Nicht-Ziffer            [^0-9]
   \w      Ein Wortzeichenr             [a-zA-Z0-9_]
   \W      Ein Nicht-Wortzeichen        [^a-zA-Z0-9_]
   \s      Ein Whitespace-Zeichen       [ \t\n\r\f]
   \S      Ein Nicht-Whitespace-Zeichen [^ \t\n\r\f]

   \C      Passt auf ein Byte (in Unicode passt '.' auf ein Zeichen)
   \pP     Passt auf das mit P benannte (Unicode-)Objekt
   \p{...} Passt auf das Unicode-Objekt mit langem Namen
   \PP     Passt auf ein Nicht-P-Objekt
   \P{...} Passt auf das Fehlen eines Unicode-Objektes mit langem Namen
   \X      Passt auf eine erweiterte Unicode-Sequenz

POSIX-Zeichenklassen und ihre Unicode- und Perl-Äquivalente:

   alnum   IsAlnum              Alphanumerisch
   alpha   IsAlpha              Alphabetisch
   ascii   IsASCII              Beliebiges ASCII-Zeichen
   blank   IsSpace  [ \t]       Horizontaler Whitespace (GNU-Erweiterung)
   cntrl   IsCntrl              Steuerzeichen
   digit   IsDigit  \d          Ziffern
   graph   IsGraph              Alphanumerisch und Satzzeichen
   lower   IsLower              Kleinbuchstaben (berücksichtigt Locale und Unicode)
   print   IsPrint              Alphanumerisch, Satzzeichen und Leerzeichen
   punct   IsPunct              Satzzeichen
   space   IsSpace  [\s\ck]     Whitespace
           IsSpacePerl   \s     Perls Definition von Whitespace
   upper   IsUpper              Großbuchstaben (berücksichtigt Locale und Unicode)
   word    IsWord   \w          Alphanumerisch plus _ (Perl-Erweiterung)
   xdigit  IsXDigit [0-9A-Fa-f] Hexadezimale Ziffer

Innerhalb einer Zeichenklasse:

    POSIX       Traditionell   Unicode
    [:digit:]       \d         \p{IsDigit}
    [:^digit:]      \D         \P{IsDigit}

ANKER

Die folgenden sind Zusicherungen ("Assertions") der Länge Null, kurz "Anker" genannt.

   ^  Passt auf den Stringanfang (oder einer Zeile, wenn /m benutzt wird)
   $  Passt auf das Stringende (oder einer Zeile, wenn /m benutzt wird) oder vor Newline
   \b Passt auf eine Wortgrenze (zwischen \w und \W)
   \B Passt außer bei einer Wortgrenze (zwischen \w und \w oder \W und \W)
   \A Passt auf den Stringanfang (unabhängig von /m)
   \Z Passt auf das Stringende (vor einem optionalen Newline)
   \z Passt auf das absolute Stringende
   \G Passt, wo ein voheriges m//g aufgehört hat

QUANTIFIZIERER

Quantifizierer sind per default gierig, d.h. sie passen auf die längste erlaubte Folge.

   Maximal Minimal Erlaubter Bereich
   ------- ------- -----------------
   {n,m}   {n,m}?  Muss mindestens n-mal, aber nicht mehr als m-mal treffen
   {n,}    {n,}?   Muss mindestens n-mal treffen
   {n}     {n}?    Muss genau n-mal treffen
   *       *?      0 oder mehr Male (dasselbe wie {0,})
   +       +?      1 oder mehr Male (dasselbe wie {1,})
   ?       ??      0 oder 1 Mal (dasselbe wie {0,1})

Es gibt keinen Quantifizierer {,n} - dies wird wörtlich als String interpretiert.

ERWEITERTE KONSTRUKTIONEN

   (?#Text)         Ein Kommentar
   (?imxs-imsx:...) Option ein-/ausschalten (wie bei m// Modifikatoren)
   (?=...)          Positive Vorschau-Zusicherung der Breite Null
   (?!...)          Negative Vorschau-Zusicherung der Breite Null
   (?<=...)         Positive Rückschau-Zusicherung der Breite Null
   (?<!...)         Negative Rückschau-Zusicherung der Breite Null
   (?>...)          Sammeln, was möglich ist - kein Backtracking
   (?{ Code })      Eingebetteter Code, Rückgabewert landet in $^R
   (??{ Code })     Dynamische Regex, Rückgabewert wird als Regex benutzt
   (?(Bed)ja|nein)  Bed ist ein Integer, der einem eingefangenen Unterausdruck
   (?(Bed)ja)       entspricht, oder eine Vor-/Rückschau-/Code-Zusicherung

VARIABLEN

   $_    Default-Variable, die von Operatoren genutzt wird
   $*    Erlaubt Matching über mehrere Zeilen (nicht mehr in 5.9.0 oder höher)

   $&    Der ganze matchende String
   $`    Alles vor dem matchenden String
   $'    Alles nach dem matchenden String

Die Verwendung einer der drei letzteren Variablen will die Verarbeitung aller regulären Ausdrücken in Ihrem Programm verlangsamen. Erfahren Sie in perlvar unter @LAST_MATCH_START , wie äquivalente Ausdrücke aussehen, die keine Verlangsamung bewirken. Siehe auch Devel::SawAmpersand?.

   $1, $2 ... enthält den n-ten eingefangenen Unterausdruck
   $+    Der letzte Treffer eines geklammerten Musters
   $^N   Das Ergebnis des letzten Unterausdrucks
   $^R   Enthält das Ergebnis des letzten (?{...}) Ausdrucks
   @-    Offsets der Gruppenanfänge. $-[0] enthält den Anfang des gesamten Treffers
   @+    Offsets der Gruppenenden. $+[0] enthält das Ende des gesamten Treffers

Eingefangene Gruppen werden entsprechend ihrer öffnenden Klammern nummeriert.

FUNKTIONEN

   lc          Einen String in Kleinbuchstaben umwandeln
   lcfirst     Den ersten Buchstaben eines Strings klein machen
   uc          Einen String in Großbuchstaben umwandeln
   ucfirst     Den ersten Buchstaben eines Strings groß machen

   pos         Position des letzten Treffers liefern oder setzen
   quotemeta   Metazeichen entwerten
   reset       Den Status einer ?Muster?-Suche zurücksetzen
   study       Einen String zur optimierten Suche analysieren

   split       Eine Regex nutzen, um einen String aufzuteilen

Die ersten vier dieser Liste sind wie die Escape-Sequenzen \L , \l , \U und \u . Für Großbuchstaben siehe L</Großbuchstaben>.

TERMINOLOGIE

Großbuchstaben

Das Unicode-Konzept des "Titlecase" entspricht in den meisten Fällen dem ASCII "uppercase", aber für einzelne Zeichen, wie dem deutschen "scharfen s" gibt es einen Unterschied.

AUTOR

Iain Truskett.

Dieses Dokument darf unter den gleichen Bedingungen verbreitet werden wie Perl selbst.

SIEHE AUCH

  • perlretut - ein Tutorium für Reguläre Ausdrücke.

  • perlrequick - ein schnelles Tutorium.

  • perlre - mehr Details.

  • perlvar - Details zu den Variablen.

  • perlop - Details zu den Operatoren.

  • perlfunc - Details zu den Funktionen.

  • perlfaq6 - FAQs zu Regulären Ausdrücken.

  • Das Modul re ändert das Verhalten und hilft bei der Fehlersuche in Regulären Ausdrücken.

  • L<perldebug/"Reguläre Ausdrücke debuggen">

  • perluniintro, perlunicode, charnames und locale beschäftigen sich mit Details zu Regulären Ausdrücken und Internationalisierung.

  • Reguläre Ausdrücke von Jeffrey Friedl ( http://regex.info/ ) liefert eine ausführliche Grundlage und Referenz zu diesem Thema.

DANKSAGUNG

David P.C. Wollmann, Richard Soderberg, Sean M. Burke, Tom Christiansen, Jim Cromie, und Jeffrey Goff für nützlichen Rat.

ÜBERSETZUNG

Harald H.-J. Bongartz dubu {at} perl-community.de

-- HaraldBongartz - 26 May 2005
Topic attachments
I Attachment Action Size Date Who Comment
perlreref-5.9.2.podpod perlreref-5.9.2.pod manage 11.1 K 2008-04-09 - 00:35 HaraldBongartz dezimal => hexadezimal (Dank an Frank Nagel)
Topic revision: r3 - 2008-04-09 - 00:35:40 - HaraldBongartz
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.