4

我看到有\b一个我从未使用过的,我想知道如果没有\b.

4

3 回答 3

6

我想知道如果没有 \b 是不可能的,是否有人可以给我用例。

该表达式\b只是您已经可以使用其他构造执行的操作的便捷简写。

例如,如果您的正则表达式引擎有环视,则\b等效于以下更长的表达式:

(?<=\w)(?!\w)|(?<!\w)(?=\w)

类似地\w,\d等只是使用字符类已经可以完成的事情的简写,例如[A-Za-z0-9_][0-9]。您通常希望使用简短版本,因为每次都写出完整的定义很麻烦,更难阅读并且增加了出错的风险。

于 2012-11-14T13:09:57.633 回答
2

它们是完全不同的东西。

\s是一个“空白字符”。这意味着它是预定义字符类的快捷方式,其中包含空格字符\t, \r, \n或空格。\s匹配其中一个字符。

\b是一个“词界”。它是一个零宽度断言,与预定义的字符类有关\w。零宽度断言意味着它的宽度为 0,即它不匹配字符。它确实匹配满足断言的位置。这里的断言将是一侧的单词字符和另一侧的非单词字符。Mark 已经提供了长版本\bOded 一个\b匹配的例子。

\w是一个“单词字符”,表示它包含类似[a-zA-Z0-9_]. 在某些语言中,它基于 Unicode 并包含所有字母。

于 2012-11-14T13:38:19.247 回答
2

它们在不同的事物\s上匹配——在空格、\b单词边界上匹配。

一个很好的例子是字符.

在字符串中hello.hi

\s不会匹配.,但\b会在它之前和之后匹配。

于 2012-11-14T13:05:35.630 回答