Heim > Artikel > Backend-Entwicklung > php – Interne Optionseinstellungen für reguläre PCRE-Ausdrücke
Mustermodifikatoreinstellungen wie PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_UNGREEDY, PCRE_EXTRA, PCRE_EXTENDED und PCRE_DUPNAMES können innerhalb des Musters über eine Perl-Optionszeichenfolge festgelegt werden. Die verfügbaren Modifikatoren sind:
Interne Optionsbuchstaben
i für PCRE_CASELESS
m für PCRE_MULTILINE
s für PCRE_DOTALL PCRE_EXTENDED
U für PCRE_UNGREEDY
X für PCRE_EXTRA
J für PCRE_INFO_JCHANGED
Zum Beispiel gibt die Einstellung (?im) einen mehrzeiligen Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung an. Sie können es auch verwenden, um diese Einstellungen abzubrechen. Beispiel: (?im-sx) setzt PCRE_CASELESS, PCRE_MULTILINE, löscht aber gleichzeitig PCRE_DOTALL und PCRE_EXTENDED. Wenn ein Buchstabe sowohl vor als auch nach - erscheint, ist diese Option deaktiviert.
Wenn sich eine Option an der Spitze des Musters befindet (d. h. nicht in einer Untergruppe), wirkt sich die Änderung auf den Rest des Musters aus. Beispielsweise stimmt /ab(?i)c/ nur mit „abc“ und „abC“ überein. Dieses Formular wurde in PCRE 4.0 (PHP 4.3.3) geändert. In früheren Versionen verhielt sich /ab(?i)c/ genau wie /abc/i.
Wenn eine Option in einer Untergruppe festgelegt ist, ist die Auswirkung unterschiedlich. Dies ist eine Variante des Verhaltens in Perl 5.005. Eine Option wird innerhalb einer Untergruppe festgelegt und ändert nur den Rest der Untergruppe, sodass (a(?i)b)c nur mit „abc“ und „aBc“ übereinstimmt (vorausgesetzt, die Option PCRE_CASELESS wird nicht verwendet). Dies bedeutet, dass Optionen an verschiedenen Stellen im Muster unterschiedliche Auswirkungen haben können. Innerhalb desselben Untermodus werden Optionseinstellungen für einen Zweig auf die verbleibenden folgenden Zweige übertragen. Beispielsweise stimmt (a(?i)b|c) mit „ab“, „aB“, „c“ und „C“ überein. Allerdings wird bei Übereinstimmung mit „C“ der erste Zweig verworfen, bevor die Option gesetzt wird. Dies liegt daran, dass die Optionseinstellungen zur Kompilierungszeit festgelegt werden, andernfalls kann es zu sehr seltsamem Verhalten kommen.
Die PCRE-spezifischen Optionen PCRE_UNGREEDY und PCRE_EXTRA können auf die gleiche Weise wie die Perl-Kompatibilitätsoptionen geändert werden, indem die Buchstaben U bzw. X verwendet werden. Die Flag-Einstellung (?X) ist etwas Besonderes, sie muss vorher erscheinen Bei allen anderen Attributen ist es am besten, sie ganz am Anfang zu platzieren.