字界限

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