Verhalten des RegExp beeinflussen - Modifier

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