Heim  >  Artikel  >  Backend-Entwicklung  >  PHP – PCRE-Mustermodifikator für reguläre Ausdrücke

PHP – PCRE-Mustermodifikator für reguläre Ausdrücke

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

Die derzeit verfügbaren PCRE-Modifikatoren sind unten aufgeführt. Die in Klammern genannten Namen sind die Namen dieser PCRE-internen Modifikatoren. Leerzeichen und Zeilenumbrüche in Mustermodifikatoren werden ignoriert und andere Zeichen verursachen Fehler.

i (PCRE_CASELESS)

Wenn dieser Modifikator festgelegt ist, werden Buchstaben im Muster ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen.

m (PCRE_MULTILINE)

Standardmäßig geht PCRE davon aus, dass die Zielzeichenfolge aus einer einzelnen Zeichenzeile besteht (tatsächlich kann sie jedoch mehrere Zeilen enthalten), dem Metazeichen „Zeilenanfang“. ( ^) stimmt nur mit dem Anfang der Zeichenfolge überein, und das Metazeichen „Zeilenende“ ($) stimmt nur mit dem Ende der Zeichenfolge oder dem letzten Zeilenumbruchzeichen überein (es sei denn, der Modifikator D ist festgelegt). Dieses Verhalten ist das gleiche wie bei Perl. Wenn dieser Modifikator festgelegt ist, stimmen „Zeilenanfang“ und „Zeilenende“ vor oder nach jedem Zeilenumbruchzeichen in der Zielzeichenfolge überein. Darüber hinaus stimmen sie auch mit dem Anfang bzw. Ende der Zielzeichenfolge überein. Dies entspricht dem Perl-Modifikator /m. Wenn die Zielzeichenfolge keine „n“ Zeichen enthält oder ^ oder $ nicht im Muster erscheinen, hat das Setzen dieses Modifizierers keine Auswirkung.

s (PCRE_DOTALL)

Wenn dieser Modifikator festgelegt ist, entspricht das Punkt-Metazeichen im Muster allen Zeichen, einschließlich Zeilenumbrüchen. Ohne diesen Modifikator stimmt der Punkt nicht mit Zeilenumbruchzeichen überein. Dieser Modifikator entspricht dem Modifikator /s in Perl. Eine negierte Zeichenklasse wie [^a] stimmt immer mit einem Zeilenumbruchzeichen überein, unabhängig von der Einstellung dieses Modifikators.

x (PCRE_EXTENDED)

Wenn dieser Modifikator festgelegt ist, werden Leerzeichen im Muster, die nicht maskiert sind oder nicht zu einer Zeichenklasse gehören, immer ignoriert und in einem nicht maskierten Zeichen dazwischen platziert Das #-Zeichen außerhalb einer definierten Zeichenklasse und das nächste Zeilenumbruchzeichen werden ebenfalls ignoriert. Dieser Modifikator entspricht dem Modifikator /x in Perl und ermöglicht die Einbindung von Kommentaren in das kompilierte Schema. HINWEIS: Dies gilt nur für Datenzeichen. Leerzeichen können immer noch nicht in der Sonderzeichenfolge des Musters vorkommen. Beispielsweise führt die Sequenz (?( eine bedingte Untergruppe ein (Anmerkung: Wenn in der durch diese Syntax definierten Sonderzeichenfolge ein Leerzeichen auftritt, tritt ein Kompilierungsfehler auf. Beispielsweise führt (?( zu einem Fehler).

e (PREG_REPLACE_EVAL)

Wenn dieser Modifikator festgelegt ist, ersetzt preg_replace() die ersetzten Zeichen, nachdem eine Rückreferenzersetzung durchgeführt wurde auf der Ersetzungszeichenfolge Die Zeichenfolge wird als PHP-Code ausgewertet und ausgeführt (Auswertungsfunktionsmodus), und das Ausführungsergebnis wird als tatsächliche Zeichenfolge verwendet, die an der Ersetzung beteiligt ist. Einfache Anführungszeichen, doppelte Anführungszeichen, Backslash () und NULL-Zeichen werden ersetzt mit Backslashes. Escape.


Hinweis: Bitte stellen Sie sicher, dass der Ersetzungsparameter aus einer gültigen PHP-Codezeichenfolge besteht, sonst generiert PHP einen Interpretationsfehler in der Zeile, in der preg_replace( ) wird aufgerufen. preg_replace() verwendet diesen Modifikator, andere PCRE-Funktionen ignorieren diesen Modifikator

A (PCRE_ANCHORED)

Wenn dieser Modifikator gesetzt ist, wird der Modus ebenfalls in den „verankerten“ Modus gezwungen . Das bedeutet, die Übereinstimmung so einzuschränken, dass nur am Anfang der Zielzeichenfolge gesucht wird. Dieser Effekt kann auch mit dem entsprechenden Muster erstellt werden, und dies ist die einzige Möglichkeit, dieses Muster in Perl zu implementieren D (PCRE_DOLLAR_ENDONLY)

Wenn dieser Modifikator festgelegt ist, stimmt das Dollarzeichen-Metazeichen im Muster nur mit dem Ende der Zielzeichenfolge überein. Wenn dieser Modifikator nicht festgelegt ist, stimmt das Dollarzeichen auch mit der Zeichenfolge überein endet mit einem Zeilenumbruchzeichen (wird jedoch nicht mit einem vorangehenden Zeilenumbruchzeichen übereinstimmen) wird ignoriert. Es gibt keinen entsprechenden Modifikator in Perl

S

Wenn a Das Muster muss mehrmals verwendet werden. Um die Übereinstimmungsgeschwindigkeit zu verbessern, lohnt es sich, etwas Zeit in die Durchführung einer zusätzlichen Analyse zu investieren. Wenn dieser Modifikator festgelegt ist, wird diese zusätzliche Analyse nur für nicht verankerte Muster durchgeführt Musterübereinstimmungen (d. h. ohne ein einzelnes festes Startzeichen)

U (PCRE_UNGREEDY) Der Modifikator

kehrt den Modus „Gierig“ um kann es gierig machen, indem man dem Quantifizierer ? folgt. Dies ist mit Perl nicht kompatibel. Es kann auch mit der Intra-Modus-Modifikatoreinstellung (?U) eingestellt werden, oder es mit einem Fragezeichen nach dem Quantifizierer (z. B.) als nicht gierig markieren als .*?)

Hinweis: Im Non-Greedy-Modus werden Zeichen, die pcre.backtrack_limit überschreiten, normalerweise nicht abgeglichen.

X (PCRE_EXTRA)

Dieser Modifikator aktiviert die Anhangsfunktion, die zwischen PCRE und Perl nicht kompatibel ist. Jeder umgekehrte Schrägstrich im Muster, gefolgt von einem Zeichen ohne besondere Bedeutung, führt zu einem Fehler. Diese Zeichen werden aus Gründen der Abwärtskompatibilität beibehalten. Standardmäßig wird in Perl ein Backslash gefolgt von einem Zeichen ohne besondere Bedeutung als Originaltext dieses Zeichens betrachtet. Derzeit werden keine anderen Funktionen von diesem Modifikator gesteuert.

J (PCRE_INFO_JCHANGED)

Interne Optionseinstellungen (?J) ändern die lokale PCRE_DUPNAMES-Option. Untergruppen mit doppelten Namen zulassen (Anmerkung: kann nur über interne Optionen festgelegt werden, externe /J-Einstellungen erzeugen Fehler.)

u (PCRE_UTF8)

Dieser Modifikator aktiviert eine zusätzliche Funktion, die mit Perl nicht kompatibel ist. Musterzeichenfolgen gelten als UTF-8. Dieser Modifikator ist ab PHP 4.1.0 für Unix und PHP 4.2.3 für Win32 verfügbar. PHP 4.3.5 beginnt mit der Überprüfung der UTF-8-Gültigkeit von Mustern.


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