我正在读一本关于正则表达式的书,我遇到了 \b
的这个示例:
The cat scattered his food all over the room.
使用正则表达式 - \bcat\b
将匹配单词 cat
,但不匹配 scattered
中的 cat
。
对于\B
,作者使用以下示例:
Please enter the nine-digit id as it
appears on your color - coded pass-key.
使用正则表达式 \B-\B
匹配单词 color - coded
之间的 -
。另一方面,使用 \b-\b
与 nine-digit
和 pass-key
中的 -
匹配。
为什么在第一个示例中我们使用 \b
来分隔 cat
而在第二个示例中使用 \B
来分隔 -
?在第二个示例中使用 \b
的作用与之前的作用相反。
请向我解释一下其中的区别。
编辑:另外,有人可以用一个新的例子来解释一下吗?
最佳答案
困惑源于你的思维\b
匹配空格(可能是因为“b”暗示“空白”)。
\b
匹配单词开头或结尾处的空字符串。 \B
匹配不在单词开头或结尾的空字符串。这里的关键是“-”不是单词的一部分。所以<left>-<right>
匹配\b-\b
因为 -
的两侧都有单词边界。另一方面对于<left> - <right>
(注意空格),破折号两侧没有单词边界。单词边界向左和向右各一格。
另一方面,当搜索\bcat\b
时单词边界表现得更直观,它符合预期的“cat ”。
关于regex - 正则表达式中\b和\B之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6664151/