我看到有\b
我从未使用过,我想知道是否有人可以在没有\b
的情况下给我用例。
答案 0 :(得分:6)
我想知道是否有人可以在没有\ b。
的情况下给我用例
表达式\b
只是你已经可以用其他结构做的一种方便的简写。
例如,如果您的正则表达式引擎具有外观,那么\b
等同于以下更长的表达式:
(?<=\w)(?!\w)|(?<!\w)(?=\w)
同样,\w
,\d
等只是使用字符类可以完成的简写,例如[A-Za-z0-9_]
或[0-9]
。您通常希望使用简短版本,因为每次写出完整定义都很麻烦,难以阅读并增加了出错的风险。
答案 1 :(得分:2)
它们匹配不同的内容 - \s
匹配空白,\b
匹配字边界。
一个很好的例子是角色.
。
在字符串hello.hi
中:
\s
与.
不匹配,但\b
会在之前和之后匹配。
答案 2 :(得分:2)
它们完全不同。
\s
是“空格字符”。这意味着它是包含空格字符(如\t, \r, \n
或空格)的预定义字符类的快捷方式。 \s
匹配其中一个字符。
\b
是“字边界”。它是零宽度断言,与预定义的字符类\w
相关。零宽度断言意味着它的宽度为0,即它与字符不匹配。它确实匹配一个满足断言的位置。这里的断言在一侧是单词字符,在另一侧是非单词字符。 Mark provided already the long version of \b
和Oded an example where \b
would match。
\w
是“字符”,表示它包含[a-zA-Z0-9_]
之类的内容。在某些语言中,它基于Unicode并包含所有字母。