Modifier sind Schalter, die das Verhalten der Regulären Ausdrücke beeinflussen. Normalerweise werden diese am Ende des Ausdrucks, hinter dem abschließenden Delimiter angegeben, sie beziehen sich somit auf das gesamte Suchmuster. Es besteht auch die Möglichkeit, innerhalb des Suchmuster bestimmte Modifier anzugeben.
Globale Modifier
Modifier, die am Ende des Regulären Ausdrucks definiert werden, gelten für den gesamten Ausdruck. Folgende Modifier sind dabei erlaubt:
Modifier A (anchored)
Ist der Modifier A angegeben, muss der Anfang des Suchmuster mit dem Anfang des zu durchsuchenden Textes übereinstimmen. Die selbe Funktionalität lässt sich mit Hilfe des Accent Zirkumflex erreichen.
Modifier D (dollar end only)
Falls der Modifier m gesetzt ist, wird dieser hier ignoriert. Soll im Zusammenhang mit der Verwendung des Dollarzeichens ein Zeilenumbruch als letztes Zeichen gefunden werden, so muss dieser Schalter gesetzt werden.
Modifier e (evaluate, execute)
Dieser Modifier gilt nur bei der Verwendung von preg_replace, in anderen PHP-Funktionen wird er ignoriert und bleibt ohne Wirkung. Ist er gesetzt, werden die Backreferences im Ersatzstring normal ersetzt, der Ersatz wird dann als PHP-Code ausgewertet, und die Rückgabe wird als eigentlicher Ersatzstring verwendet.
Modifier i (ignore case)
Ist dieser Modifier gesetzt, wird nicht zwischen Groß- und Kleinschreibung eines Zeichens unterscheiden.
Modifier m (multiline)
Falls im Regulären Ausdruck Zirkumflex und Dollarzeichen
in ihrer Funktion als Metazeichen verwendet werden, beziehen sich
diese immer auf den gesamten Text. Ist der Modifier m gesetzt, so gelten
^ und $ nur für jede einzelne Zeile.
Modifier s (dot all)
Normalerweise trifft der Punkt nicht auf Zeilenumbrüche zu. Mit diesem Schalter werden mit dem Punkt auch Zeilenumbrüche erkannt.
Modifier U (ungreedy)
Ein Regulärer Ausdruck trifft immer auf die größtmögliche Anzahl an Zeichen zu. Mit Hilfe dieses Modifier lässt sich diese sogenannte Gier unterdrücken.
Modifier x (extended)
Ist der Modifier x gesetzt,
werden alle Leerzeichen, die nicht maskiert sind oder sich innerhalb von Zeichenklassen
befinden, ignoriert. Damit lässt sich ein Ausdruck viel übersichtlicher gestalten.
Außerdem werden alle Zeichen, die sich außerhalb einer Zeichenklasse zwischen
zwei unmaskierten # befinden, ignoriert (einschließlich
dem nächsten Zeilenumbruch). Damit lassen sich Kommentare in den Regulären
Ausdruck einfügen.
Modifier innerhalb des Suchmusters
Zusätzlich zur Angabe der Modifier am Ende des
Regulären Ausdrucks können bestimmte Modifier auch innerhalb des
Suchmusters definiert werden. Dies geschieht durch
das Konstrukt (?...), wobei anstelle der
... die Modifier angegeben werden. Erlaubt sind
an dieser Stelle nur die Modifier i,
m, s,
x, U und
X.
So lässt sich zum Beispiel durch die Angabe (?is)
sowohl der Modifier i
(Groß/Kleinschreibung ignorieren) als auch der Modifier
s (Punkt trifft auch auf Zeilenumbruch zu) aktivieren.
Eventuell gesetzte Modifier lassen sich auf diese Weise
auch deaktivieren, indem der Angabe ein Bindestrich -
vorangestellt wird. Erweitert man die Angabe also auf (?is-mU),
so aktivert sie Modifier i und s, und deaktiviert
die Modifier m und U. Sollte ein
Modifier sowohl aktiviert als auch deaktiviert
werden, so gilt er als deaktiviert.
Wird ein Modifier auf der obersten Ebene (also nicht innerhalb von Unterausdrücken) gesetzt, so gilt er bis zum Ende des Regulären Ausdrucks. Wird ein Modifier innerhalb eines Unterausdrucks gesetzt, so gilt er bis zum Ende des Unterausdrucks, als bis zur schließenden Klammer.
Verwandte Themen
Kapitelnavigation
- Letzte Änderung: 19.07.2006, 18:11:30
- © 2003 - 2010 nophia web