Heim >Backend-Entwicklung >PHP-Tutorial >PHP – Der Unterschied zwischen regulären PCRE- und POSIX-Ausdrücken

PHP – Der Unterschied zwischen regulären PCRE- und POSIX-Ausdrücken

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

Ab PHP 5.3.0 sind POSIX-Erweiterungen für reguläre Ausdrücke veraltet. Es gibt einige Unterschiede zwischen POSIX-Regexes und PCRE-Regexes. In diesem Artikel werden die wichtigsten Unterschiede aufgeführt, die Sie beim Wechsel zu PCRE beachten sollten.

Die PCRE-Funktion erfordert, dass das Muster mit einem Trennzeichen abgeschlossen wird.

Im Gegensatz zu POSIX verfügt die PCRE-Erweiterung nicht über dedizierte Funktionen für den Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung. Stattdessen verwendet der Support den Modusmodifikator i (PCRE_CASELESS), um die gleiche Aufgabe zu erfüllen. Andere Mustermodifikatoren können ebenfalls verwendet werden, um die Matching-Strategie zu ändern.

POSIX-Funktionen suchen von links beginnend nach der längsten Übereinstimmung, PCRE stoppt jedoch nach der ersten zulässigen Übereinstimmung. Es macht keinen Unterschied, wenn die Zeichenfolgen nicht übereinstimmen, aber wenn doch, gibt es einen Unterschied in den Ergebnissen und in der Geschwindigkeit. Um diesen Unterschied zu veranschaulichen, betrachten Sie das folgende Beispiel (aus dem Buch Mastering Regular Expressions von Jeffrey Friedl). Wenn man das Muster one(self)?(selfsufficient)? verwendet, um die Zeichenfolge „oneselfsufficient“ abzugleichen, wird PCRE mit „oneself“ übereinstimmen, aber mit POSIX ist das Ergebnis die gesamte Zeichenfolge „oneselfsufficient“. Beide Teilzeichenfolgen stimmen mit der Originalzeichenfolge überein, POSIX behandelt jedoch die längste als Ergebnis.

Funktionsvergleichstabelle

POSIX

PCRE

ereg_replace() preg_replace()

ereg() preg_match()

eregi_replace() preg_replace()

eregi() preg_match()

split() preg_split()

spliti() preg_split()

sql_regcase() Keine äquivalente Funktion


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