Heim >Backend-Entwicklung >PHP-Tutorial >Wann treten Wortgrenzen in regulären PHP-Ausdrücken auf?
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!