Der Regex-Dialekt von PHP

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

Tabelle: Elemente von regulären Ausdrücken im preg-Paket von PHP – Übersicht.

Abkürzungen für Zeichen 1.
siehe Abkürzungsmetazeichen (K) \a [\b] \e \f \n \r \t \oktal \xhex \x{hex} \cZeichen
Zeichenklassen und ähnliche Konstrukte
siehe Normale Klassen Klassen: [...] [^...] (kann auch POSIX-artige Konstrukte wie [:alpha:] enthalten, siehe POSIX-Klammerausdruck »Zeichenklasse«)
siehe Fast jedes Zeichen: Punkt Jedes Zeichen außer Newline: Punkt (mit dem s-Modifikator: wirklich jedes Zeichen)
siehe Unicode-Sequenz für kombinierende Zeichen (u) Unicode-Kombinationssequenz: \X
siehe Abkürzungen für Zeichenklassen (K) Abkürzungen für Zeichenklassen: \w \d \s \W \D \S (nur 8-Bit-Zeichen)2.
siehe Unicode-Eigenschaften, Schriftsysteme (Scripts) und Blockbereiche (K) (u) Unicode-Eigenschaften und -Schriftsysteme (Scripts):3. \p{Prop} \P{Prop}
siehe Genau ein Byte Exakt ein Byte (gefährlich!):4. \C
Anker und andere Zusicherungen der Länge null
siehe Zeilenanfang, Stringanfang Anfang der Zeile oder des Strings: ^ \A
siehe Zeilenende, Stringende Ende der Zeile oder des Strings:5. $ \z \Z
siehe Beginn der neuen (oder Ende der letzten) Mustersuche Ende des letzten Treffers: \G
siehe Wortgrenzen Wortgrenze: \b \B (nur 8-Bit-Zeichen)2.
siehe Lookahead; Lookbehind Lookaround:6. (?=...) (?!...) (?<=...) (?<!...)
Kommentare und Modus-Modifikatoren
siehe Modus-Modifikatoren Modus-Modifikatoren: (?mod-mod) Erlaubte Modifikatoren: x7. s m i X U
siehe Modus-Modifikatoren mit Klammerung Bereich für Modus-Modifikatoren: (?mod-mod:...)
siehe Kommentare Kommentare: (?#...) (mit dem x-Modifikator; auch von ›#‹ bis zum Newline oder Ende der Regex)
Gruppieren und Einfangen von Text
siehe Gruppierende und einfangende Klammern Einfangende Klammern: (...) \1 \2 ...
siehe Benannte Unterausdrücke Benannte Klammern: (?P<Name...>) (?P=Name)
siehe Nur gruppierende (nicht-einfangende) Klammern Nur gruppierende Klammern: (?:...)
siehe Atomare Klammern Atomare Gruppen: (?>...)
siehe Alternation Alternation: |
Rekursion: (?R) (?Zahl) (?P>Name)
siehe Bedingte reguläre Ausdrücke Bedingte reguläre Ausdrücke: (? if then|else) – »if« kann Lookaround, (R) oder (Zahl) sein
siehe Gierige Quantoren Gierige Quantoren: * + ? {n} {n,} {x,y}
siehe Nicht-gierige, »genügsame« Quantoren Nicht-gierige (genügsame) Quantoren: *? +? ?? {n}? {n,}? {x,y}?
siehe Possessive Quantoren Possessive Quantoren: *+ ++ ?+ {n}+ {n,}+ {x,y}+
siehe Modus für literalen Text (K) Modus für literalen Text: \Q . . . \E

(K) – kann auch in einer Zeichenklasse verwendet werden
(u) – nur bei Verwendung des u-Modifikators, siehe PHP-spezifische Modifikatoren
(Diese Tabelle gilt auch für PCRE, die Regex-Implementation, die von preg verwendet wird, siehe Eine Flurbereinigung bei den Regex-Dialekten.)
1. .... 7. siehe Texte

In dieser Tabelle sind die Eigenheiten des Regex-Dialekts von PHP zusammengefasst.

  1. \b steht nur innerhalb von Zeichenklassen für das Backspace-Zeichen. Außerhalb von Zeichenklassen ist \b das Metazeichen für eine Wortgrenze (siehe Wortgrenzen).

    Oktale Escapes sind auf zwei- und dreistellige 8-Bit-Werte beschränkt. Die Sequenz ˹\0˼ passt auf ein NUL-Byte.

    Bei ˹\xhex˼ kann man eine oder zwei hexadezimale Ziffern angeben, mit der Notation ˹\x{hex auch eine beliebige Anzahl. Werte über \x{FF} sind allerdings nur dann zulässig, wenn der u-Modifikator verwendet wird (siehe PHP-spezifische Modifikatoren). Ohne den u-Modifikator führt ein Wert \x{FF} zu einem Laufzeitfehler »ungültige Regex«.

  2. Auch im UTF-8-Modus (also bei Verwendung des u-Modifikators) beziehen sich Wortgrenzen und die akgekürzten Zeichenklassen wie ˹\w˼ nur auf die ASCII-Buchstaben. Wenn man die Vorteile von Unicode wirklich ausnutzen will, benutzt man ˹\pL˼ (siehe unter Unicode-Eigenschaften, Schriftsysteme (Scripts) und Blockbereiche) statt ˹\w˼, ˹\pN˼ statt ˹\d˼ und ˹\pZ˼ statt ˹\s˼.
  3. Es wird die Unicode-Version 4.1.0 unterstützt.

    Unicode-Schriftsysteme (Scripts) werden ohne PräfixIs‹ oder ›In‹ geschrieben, es genügt ein bloßes ˹\p{Cyrillic}˼.

    Ein- und zweibuchstabige Unicode-Eigenschaften werden unterstützt, also beispielsweise ˹\p{Lu}˼, ˹\p{L}˼ und ˹\pL˼. Die langen Namen wie ˹\p{Letter}˼ können nicht verwendet werden.

    Sowohl die zusammengesetzte Untereigenschaft ˹\p{L&}˼ als auch die Eigenschaft ˹\p{Any}˼ (die auf jedes beliebige Zeichen passt) werden unterstützt.

  4. Normalerweise arbeitet die Regex-Maschine des preg-Pakets mit Bytes, in diesem Fall ist ˹\C˼ dasselbe wie ˹(?s:.)˼, also ein Punkt mit s-Modifikator. Mit dem u-Modifikator wird die Maschine in den UTF-8-Modus geschaltet, und dann kann ein Zeichen aus bis zu 6 Bytes aufgebaut sein. Aber auch dann passt \C immer noch auf genau ein Byte. Beachten Sie dazu die Bemerkungen bei Genau ein Byte.
  5. Die Metazeichen ˹\z˼ und ˹\Z˼ passen beide auf das Ende des Suchtexts, ˹\Z˼ außerdem auch auf die Position vor einem Newline am Ende des Suchtexts. Die Interpretation von ˹$˼ hängt von den Modifikatoren m und D ab (siehe unter Pattern-Modifikatoren), und zwar wie folgt: Ohne die beiden Modifikatoren verhält sich ˹$˼ genauso wie ˹\Z˼, passt also auf das Ende des Strings oder auf das Newline davor; mit eingeschaltetem m-Modifikator passt es auch vor jedem Newline mitten im String. Mit eingeschaltetem D-Modifikator verhält sich ˹$˼ genauso wie ˹\z˼, passt also nur noch auf das Ende des Suchstrings. Wenn beide Modifikatoren aktiviert sind, wird D ignoriert.
  6. Lookbehind ist im Allgemeinen auf Unterausdrücke beschränkt, die auf Texte fester Länge passen müssen. Nur bei Alternationen auf der obersten Ebene sind Alternativen unterschiedlicher Länge zugelassen (siehe Lookahead; Lookbehind).
  7. Beim x-Modifikator (»Freie Form«) ist nur ASCII-Whitespace zulässig; andere Whitespace-Zeichen aus Unicode sind nicht erlaubt.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:
   

Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln