字界限
\b
元字元
為了更容易找到整個單詞,我們可以使用元字元\b
。它標誌著開始和的結束字母數字序列*。此外,由於它僅用於標記此位置,因此它實際上不匹配任何字元。
*:通常將一個字母數字序列稱為一個單詞,因為我們可以用\w
(單詞字元類)來捕獲它的字元。然而,這可能會產生誤導,因為\w
還包括數字,並且在大多數情況下,還包括下劃線。
例子:
正規表示式 | 輸入 | 匹配? |
---|---|---|
\bstack\b |
stackoverflow |
不,因為整個單詞 stack 沒有發生 |
\bstack\b |
foo stack bar |
是的,因為在此之前和之後都沒有什麼 |
\bstack\b |
stack!overflow |
是的 :在 stack 之前沒有什麼,! 不是一個單詞字元 |
\bstack |
stackoverflow |
是的,因為在此之前沒什麼 |
overflow\b |
stackoverflow |
是的,因為在節目之後沒什麼 |
\B
元字元
這與\b
相反,與每個非邊界字元的位置相匹配。像\b
一樣,因為它匹配位置,所以它本身不匹配任何字元。它對於查詢非整個單詞很有用。
例子:
正規表示式 | 輸入 | 匹配? |
---|---|---|
\Bb\B |
abc |
是的,因為 b 沒有字邊界。 |
\Ba\B |
abc |
不,a 的左側有一個單詞邊界。 |
a\B |
abc |
是的,a 的右側沒有單詞邊界。 |
\B,\B |
a,,,b |
是的,它與第二個逗號匹配,因為 \B 也將匹配兩個非單詞字元之間的空格 (應該注意的是,第一個逗號的左邊和第二個逗號的右邊有一個單詞邊界)。 |