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.
- \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«.
- 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˼.
- Es wird die Unicode-Version 4.1.0 unterstützt.
Unicode-Schriftsysteme (Scripts) werden ohne Präfix ›Is‹ 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.
- 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.
- 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.
- 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).
- 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