Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind Mustermodifikatoren für reguläre PHP-Ausdrücke?

Was sind Mustermodifikatoren für reguläre PHP-Ausdrücke?

零下一度
零下一度Original
2017-07-25 11:45:141336Durchsuche

PHP-Mustermodifikator, auch Mustermodifikator genannt, wird zusätzlich zu den Trennzeichen regulärer Ausdrücke verwendet. Es wird hauptsächlich verwendet, um die Interpretation regulärer Ausdrücke anzupassen, einige Funktionen regulärer Ausdrücke beim Vergleichen, Ersetzen und anderen Vorgängen zu erweitern und die Fähigkeiten regulärer Ausdrücke zu verbessern. Allerdings sind die Erklärungen an vielen Stellen falsch und können andere leicht in die Irre führen, daher habe ich heute dieses Dokument als Referenz zusammengestellt.

模式修正符号 功能描述
i 在和正则匹配是不区分大小写
m 将字符串视为多行。默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此)。如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就是“^”结束就是“$”。
s 如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。
x 忽略空白,除非进行转义的不被忽略。
e 只用在preg_replace()函数中,在替换字符串中逆向引用做正常的替换,将其(即“替换字符串”)作为PHP代码求值,并用其结果来替换所搜索的字符串。
A 如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
D 模式中的$字符权匹配目标字符的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前。如果设定了修正符m则忽略此项。
E 与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U 贪婪模式,和问号的作用差不多,最大限度的匹配就是贪婪模式。


Weitere Informationen:

Mustermodifikatoren: Erläutern Sie die Modifikatoren, die in regulären Ausdrucksmustern verwendet werden

Hinweis: Im Folgenden sind die aktuellen PCRE-Modifikatoren aufgeführt, die möglicherweise vorhanden sind verwendet in . In Klammern stehen die internen PCRE-Namen dieser Modifikatoren. Leerzeichen und Zeilenumbrüche in Modifikatoren werden ignoriert, andere Zeichen verursachen Fehler.

i (PCRE_CASELESS)

Wenn dieser Modifikator festgelegt ist, stimmen die Zeichen im Muster sowohl mit Groß- als auch mit Kleinbuchstaben überein.

m (PCRE_MULTILINE)

Standardmäßig behandelt PCRE die Zielzeichenfolge auf diese Weise als eine einzelne „Zeile“ von Zeichen (auch wenn sie Zeilenumbrüche enthält). Das Metazeichen „Zeilenanfang“ (^) entspricht nur dem Anfang der Zeichenfolge, und das Metazeichen „Zeilenende“ ($) entspricht nur dem Ende der Zeichenfolge oder dem letzten Zeichen davor, wenn es sich um eine neue Zeile handelt (es sei denn D ist gesetzt) ​​Modifikator). Dies ist dasselbe wie Perl. Wenn dieser Modifikator festgelegt ist, stimmen „Zeilenanfang“ und „Zeilenende“ zusätzlich zum Anfang und Ende der gesamten Zeichenfolge überein, sie stimmen auch nach bzw. vor dem darin enthaltenen Zeilenumbruchzeichen überein. Dies entspricht dem Perl-Modifikator /m. Wenn die Zielzeichenfolge oder ^ oder $ im Muster keine „n“ Zeichen enthalten, hat das Setzen dieses Modifikators keine Auswirkung.

s (PCRE_DOTALL)

Wenn dieser Modifikator festgelegt ist, entspricht das Punkt-Metazeichen (.) im Muster allen Zeichen, einschließlich Zeilenumbrüchen. Ohne diese Einstellung werden keine Zeilenumbrüche berücksichtigt. Dies entspricht dem /s-Modifikator von Perl. Ausgeschlossene Zeichenklassen wie [^a] stimmen immer mit Zeilenumbrüchen überein, unabhängig davon, ob dieser Modifikator festgelegt ist.

x (PCRE_EXTENDED)

Wenn dieser Modifikator gesetzt ist, werden Leerzeichen im Muster vollständig ignoriert, es sei denn, sie sind maskiert oder innerhalb einer Zeichenklasse, alle Zeichen zwischen # außerhalb der Zeichenklasse ohne Escapezeichen und das nächste Zeilenumbruchzeichen (einschließlich) werden ebenfalls ignoriert. Dies entspricht dem /x-Modifikator von Perl und ermöglicht das Hinzufügen von Kommentaren zu komplexen Mustern. Beachten Sie jedoch, dass dies nur für Datenzeichen gilt. Leerzeichen dürfen niemals in Sonderzeichenfolgen in einem Muster vorkommen, beispielsweise in der Folge, die ein bedingtes Untermuster (?( in der Mitte einleitet.

e

falls festgelegt Mit diesem Modifikator führt preg_replace() eine normale Ersetzung der Rückreferenz im Ersetzungsstring durch, wertet ihn als PHP-Code aus und ersetzt den gesuchten String durch sein Ergebnis. Nur preg_replace() verwendet diesen Modifikator, andere PCREs ignorieren ihn. Hinweis: Dieser Modifikator ist in PHP3 nicht verfügbar.

A (PCRE_ANCHORED)

Wenn dieser Modifikator gesetzt ist, wird der Modus „verankert“, d. h. erzwungen Dieser Effekt kann auch durch das entsprechende Muster selbst erreicht werden (die einzige Möglichkeit, dies in Perl zu tun) ist

D (PCRE_DOLLAR_ENDONLY). >Wenn dieser Modifikator festgelegt ist, stimmt das Dollar-Metazeichen im Muster nur mit dem Ende der Zielzeichenfolge überein. Ohne diese Option stimmt das Dollarzeichen auch überein, wenn das letzte Zeichen ein Zeilenumbruchzeichen ist (aber). nicht vor irgendeinem anderen Zeilenumbruchzeichen). Um den Abgleich zu beschleunigen, wird eine zusätzliche Analyse durchgeführt. Derzeit wird ein Muster nur dann analysiert, wenn kein einzelnes Muster vorhanden ist. Nützlich für nicht verankerte Muster

U (PCRE_UNGREEDY)

Dieser Modifikator kehrt den Wert der Übereinstimmungsanzahl um, sodass er standardmäßig nicht wiederholt wird. Er wird wiederholt, wenn ihm ein „?“ folgt Sie können auch den Modifizierer (?U) im Muster festlegen oder dem Quantifizierer ein Fragezeichen folgen lassen (z. B.

X (PCRE_EXTRA)

Dieser Modifikator aktiviert eine zusätzliche Funktion in PCRE, die mit keinem Backslash-Muster in Perl kompatibel ist. Wenn ein Buchstabe ohne besondere Bedeutung folgt, wird diese Kombination wie in Perl standardmäßig beibehalten , ein Backslash, gefolgt von einem Buchstaben ohne besondere Bedeutung, wird als der Buchstabe selbst behandelt

u (PCRE_UTF8)

Dieser Modifikator Aktiviert eine zusätzliche Funktion in PCRE, die nicht mit Perl kompatibel ist. Dieser Modifikator ist seit PHP 4.1.0 unter Unix und seit PHP 4.2.3 unter Win32 verfügbar. Muster werden seit PHP 4.3.5 auf UTF-8-Gültigkeit überprüft.

Das obige ist der detaillierte Inhalt vonWas sind Mustermodifikatoren für reguläre PHP-Ausdrücke?. 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