字界限
\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 也将匹配两个非单词字符之间的空格 (应该注意的是,第一个逗号的左边和第二个逗号的右边有一个单词边界)。 |