Heim >Backend-Entwicklung >PHP-Tutorial >Was sind die Modifikatoren in regulären PHP-Ausdrücken?

Was sind die Modifikatoren in regulären PHP-Ausdrücken?

零下一度
零下一度Original
2017-07-25 11:39:191853Durchsuche

Bevor wir PHP-Modifikatoren für reguläre Ausdrücke lernen, sollten wir uns zunächst mit dem Greedy-Modus befassen. Wie bereits erwähnt, spielt „?“ auch eine wichtige Rolle.

Gieriger PHP-Modus für reguläre Ausdrücke :

Zum Beispiel möchten wir eine Zeichenfolge abgleichen, die mit dem Buchstaben „a“ beginnt und mit dem Buchstaben „b“ endet ", aber wir müssen übereinstimmen. Die Zeichenfolge enthält viele „b“ nach „a“, wie zum Beispiel „a bbbbbbbbbbbbbbbbb“. Wird der reguläre Ausdruck mit dem ersten „b“ oder dem letzten „b“ übereinstimmen? Wenn Sie den Greedy-Modus verwenden, wird das letzte „b“ abgeglichen, andernfalls wird nur das erste „b“ abgeglichen.

PHP-Verwendungsbeispiel für reguläre Ausdrücke im Greedy-Modus:

/a.+?b/
/a.+b/U

Der Vergleich von Beispielen ohne Greedy-Modus lautet wie folgt:

/a.+b/

Ein Modifikator U wird oben verwendet. Einzelheiten finden Sie in der Einführung zu Modifikatoren.

Was sind die regulären PHP-Ausdrücke /i, /is, /s, /isU usw.?

i unterscheidet nicht zwischen Groß- und Kleinschreibung

s Das Punkt-Metazeichen (.) im Muster entspricht allen Zeichen, einschließlich Zeilenumbrüchen

x Leerzeichen im Muster sind außer Escapezeichen oder außerhalb Zeichenklassen werden vollständig ignoriert, und alle Zeichen zwischen # außerhalb einer Zeichenklasse ohne Escapezeichen und dem nächsten Zeilenumbruch (einschließlich) werden ebenfalls ignoriert.

A (PCRE_ANCHORED) Wenn dieser Modifikator festgelegt ist, wird das Muster zu „ verankert“, d. h. es wird erzwungen, nur vom Anfang der Zielzeichenfolge aus übereinzustimmen, d. h. ^ wird automatisch am Anfang des Musters hinzugefügt.

D (PCRE_DOLLAR_ENDONLY) Wenn dieser Modifikator festgelegt ist, stimmen Dollar-Metazeichen im Muster nur mit dem Ende der Zielzeichenfolge überein. Wenn das letzte Zeichen ohne diese Option ein Zeilenumbruchzeichen ist, stimmt das Dollarzeichen auch vor diesem Zeichen überein (jedoch nicht vor allen anderen Zeilenumbruchzeichen). Diese Option wird ignoriert, wenn der Modifikator m gesetzt ist. In Perl gibt es keinen entsprechenden Modifikator. S Wenn ein Muster mehrmals verwendet werden soll, lohnt es sich, es zunächst zu analysieren, um den Vergleich zu beschleunigen. Wenn dieser Modifikator festgelegt ist, wird eine zusätzliche Analyse durchgeführt. Derzeit ist die Analyse eines Musters nur für nicht verankerte Muster sinnvoll, die kein einziges festes Startzeichen haben.

U (PCRE_UNGREEDY) Dieser Modifikator invertiert den Wert der Anzahl der Übereinstimmungen, sodass er nicht standardmäßig wiederholt wird, sondern wiederholt wird, wenn darauf ein „?“ folgt. Dies ist nicht mit Perl kompatibel. Diese Option kann auch durch Setzen des Modifikators (?U) im Modus aktiviert werden.

X (PCRE_EXTRA) Dieser Modifikator aktiviert eine zusätzliche Funktion in PCRE, die nicht mit Perl kompatibel ist. Jeder Backslash im Muster, gefolgt von einem Buchstaben ohne besondere Bedeutung, führt zu einem Fehler, sodass diese Kombination für zukünftige Erweiterungen erhalten bleibt. Standardmäßig wird, wie bei Perl, ein Backslash gefolgt von einem Buchstaben ohne besondere Bedeutung als der Buchstabe selbst behandelt. Derzeit werden keine anderen Eigenschaften von diesem Modifikator gesteuert. Das heißt: Greedy-Modus, maximale Übereinstimmung wie: /a[w]+?e/U entspricht abceade in abceadeddd anstelle von abce. Wenn keine U-Korrektur hinzugefügt wird, entspricht es abce u (PCRE_UTF8). Dieser Modifikator aktiviert eine PCRE-Extra-Funktionalität das ist mit Perl nicht kompatibel. Musterzeichenfolgen werden als UTF-8 behandelt. Dieser Modifikator ist seit PHP 4.1.0 unter Unix und seit PHP 4.2.3 unter Win32 verfügbar.

Verständnis über PHP-Modifikatoren für reguläre Ausdrücke:

Modifikatoren in regulären PHP-Ausdrücken können viele Eigenschaften regulärer Ausdrücke ändern, sodass reguläre Ausdrücke für Sie besser geeignet sind (Hinweis: Modifikatoren). Groß-/Kleinschreibung wird beachtet, d. h. „e“ ist nicht gleich „E“).

Typen und Einführung von PHP-Modifikatoren für reguläre Ausdrücke:

◆i: Wenn dem Modifikator „i“ hinzugefügt wird, hebt der reguläre Ausdruck die Groß-/Kleinschreibung auf, d. h. „a“ ist das gleiche wie „A“.

◆m: Der standardmäßige reguläre Anfang „^“ und das Ende „$“ gelten nur für reguläre Zeichenfolgen. Wenn „m“ zum Modifikator hinzugefügt wird, beziehen sich Anfang und Ende auf jede Zeile der Zeichenfolge : Der Anfang jeder Zeile ist „^“ und das Ende ist „$“.

◆s: Wenn dem Modifikator „s“ hinzugefügt wird, bedeutet die Standardeinstellung „.“ dass jedes Zeichen außer dem Zeilenumbruchzeichen zu einem beliebigen Zeichen wird, einschließlich des Zeilenumbruchzeichens!

◆x: Wenn dieser Modifikator hinzugefügt wird, werden Leerzeichen im Ausdruck ignoriert, es sei denn, sie wurden maskiert.

◆e: Dieser Modifikator ist nur zum Ersetzen nützlich, was bedeutet, dass er als PHP-Code zum Ersetzen verwendet wird.

◆A: Wenn dieser Modifikator verwendet wird, muss der Ausdruck der Anfang der übereinstimmenden Zeichenfolge sein. Beispielsweise entspricht „/a/A“ „abcd“.

◆E: Im Gegensatz zu „m“ entspricht „$“ dem absoluten Ende der Zeichenfolge und nicht vor dem Zeilenumbruch. Dieser Modus ist standardmäßig aktiviert.

◆U: Es hat die gleiche Funktion wie das Fragezeichen und wird zum Einstellen des „Greedy-Modus“ verwendet.

Damit ist die Einführung in PHP-Modifikatoren für reguläre Ausdrücke abgeschlossen. Ich hoffe, dass es für Sie hilfreich sein wird, PHP-Modifikatoren für reguläre Ausdrücke zu verstehen und zu beherrschen.

Das obige ist der detaillierte Inhalt vonWas sind die Modifikatoren in regulären PHP-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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