Heim  >  Artikel  >  Backend-Entwicklung  >  Wann treten Wortgrenzen in regulären PHP-Ausdrücken auf?

Wann treten Wortgrenzen in regulären PHP-Ausdrücken auf?

Linda Hamilton
Linda HamiltonOriginal
2024-10-21 07:27:02157Durchsuche

When Do Word Boundaries Occur in PHP Regular Expressions?

Wortgrenzensemantik in regulären PHP-Ausdrücken

In PHP werden Wortgrenzen mithilfe des b-Metazeichens implementiert, das Übergänge zwischen Wortzeichen ( w) und Nicht-Wort-Zeichen (W). Allerdings kann sein Verhalten nuanciert sein, wie die von Ihnen bereitgestellten Testfälle zeigen.

Unerwartete Wortgrenzen

In Ihren Testfällen haben Sie die folgenden Ergebnisse erwartet:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match); // false
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match); // true

Aber die tatsächlichen Ergebnisse waren umgekehrt:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match); // true
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match); // false

Diese Anomalie tritt auf, weil das b-Metazeichen beim Übergang von einem Wortzeichen (w) zu einem Nicht-Wortzeichen (W) übereinstimmt. . Im ersten Fall, „something@nimal“, liegt die Wortgrenze zwischen „g“ (einem Wortzeichen) und „@“ (einem Nicht-Wortzeichen), was zu einer Übereinstimmung führt. Im zweiten Fall, „something!@nimal“, gibt es jedoch keine Wortgrenze zwischen „!“ und „@“, da es sich bei beiden nicht um Wortzeichen handelt.

Übereinstimmende Wortanfänge

Um Wörter zuzuordnen, die mit einer bestimmten Reihenfolge beginnen, müssen Sie sicherstellen, dass dies der Fall ist eine Wortgrenze (b) vor Ihrer Zielsequenz. Um beispielsweise Wörter abzugleichen, die mit „@nimal“ beginnen, würden Sie den folgenden regulären Ausdruck verwenden:

preg_match("/(\b)@nimal/i", "something@nimal", $match); // true
preg_match("/(\b)@nimal/i", "something!@nimal", $match); // false

In diesem regulären Ausdruck stellt die Wortgrenze (b) sicher, dass es einen Übergang von einem Wortzeichen gibt zu einem Nicht-Wort-Zeichen vor „@nimal.“ Dadurch werden Wörter gefunden, die mit „@nimal“ beginnen, aber keine Wörter, die „@nimal“ in der Mitte haben, wie zum Beispiel „ducat.“

Das obige ist der detaillierte Inhalt vonWann treten Wortgrenzen in regulären PHP-Ausdrücken auf?. 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