Heim  >  Artikel  >  Backend-Entwicklung  >  php – Interne Optionseinstellungen für reguläre PCRE-Ausdrücke

php – Interne Optionseinstellungen für reguläre PCRE-Ausdrücke

伊谢尔伦
伊谢尔伦Original
2016-11-21 17:21:241302Durchsuche

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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn