首頁  >  文章  >  後端開發  >  PHP 中的單字邊界如何處理非單字字元?

PHP 中的單字邊界如何處理非單字字元?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-21 07:25:03290瀏覽

How Do Word Boundaries in PHP Handle Non-Word Characters?

揭開PHP 中正規表示式單字邊界的神秘面紗

當使用正規表示式來定位文字中的特定單字時,通常需要強加指定單字是否標記單字單元的開頭或結尾的約束。但是,當嘗試使用字邊界實現此操作時,可能會出現一些意外行為。

考慮以下正規表示式:

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

我們預期匹配會失敗,因為分組表達式將消耗「@」符號,讓「nimal」與「@nimal」匹配,而它不應該。然而,在這個例子中,分組表達式匹配一個空字串,允許“@nimal”匹配,這意味著“@”被視為單字的一部分。

要解開這個謎團,理解這一點至關重要PHP 中的單字邊界是如何決定的。單字邊界(b)表示單字字元(w)和非單字字元(W)之間的過渡點。要匹配必須從單字開頭開始的單詞,附加單字字元必須位於預期單字之前。

因此,在第一個範例中:

something@nimal
        ^^

匹配成功,因為有字母「g」和「@」符號之間的單字邊界。然而,在第二種情況下:

something!@nimal
         ^^ 

匹配失敗,因為「!」和「@」符號都是非單字字符,不創建單字邊界。為了解決這個問題,您可以使用以下正規表示式:

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

此表達式需要“@”之前有一個單字字符,“@”之後有一個單字字符,確保僅在“@”出現時配對一言以蔽之。

以上是PHP 中的單字邊界如何處理非單字字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn