我正在阅读Oracle文档中的Boundary Matcher。我理解大部分内容,但我无法掌握\b
边界匹配器。以下是文档中的示例。
检查图案是否在单词边界上开始和结束(相反 到较长字符串中的子字符串),只需在任一侧使用\ b; 例如,\ bdog \ b
输入你的正则表达式:\ bdog \ b输入要搜索的输入字符串:狗玩 在院子里。我找到了文字" dog"从索引4开始到结束于 指数7。
输入您的正则表达式:\ bdog \ b输入要搜索的输入字符串:小狗 在院子里玩。找不到匹配项。匹配a上的表达式 非字边界,改为使用\ B:
输入您的正则表达式:\ bdog \ B输入要搜索的输入字符串:狗 在院子里玩。找不到匹配。
输入您的正则表达式:\ bdog \ B输入要搜索的输入字符串:小狗 在院子里玩。我找到了文字" dog"从索引4开始 以索引7结束。
总之,我无法理解\ b的工作。有人可以帮助我描述它的用法,并帮助我理解这个例子。
由于
答案 0 :(得分:3)
\b
就是你可以称之为"锚点#34;它将匹配输入文本中的位置。
更具体地说,\b
将匹配输入文本中的每个位置:
例如,文字dog\b
中的正则表达式"my dog eats"
将与g
dog
之后的位置(这是一个单词字符)以及之后的位置匹配空间(不是)。
请注意,与所有锚一样,它与位置匹配的事实意味着它不使用任何输入文本。
其他锚点为^
,$
,外观。
答案 1 :(得分:2)
文档似乎无法解释word boundary 究竟是什么。让我试试:
\b
匹配字符之间的位置(因此它与任何文本本身都不匹配,它只是断言在字符串中的当前位置满足某个条件)。该条件定义为:
在当前位置或 之前,有\w
(字母数字和下划线)定义的字符集字符。 >当前位置,但不是两者。
\B
的反之亦然 - 它匹配iff \b
在当前位置不匹配。
答案 2 :(得分:0)
简单来说,\b
匹配\w
和\W
(如非\w
)字符之间的位置,
因此是一个词的结束或开始。字符串的结束/开始在此处计为\W
。
您可能会找到最常见的\W
字符:
\B
只是\b
- >它匹配\b
不匹配的位置(例如[\ w] [\ w]或[\ W] [\ W])
您可以尝试使用java正则表达式here
答案 3 :(得分:0)
\ b - 匹配单词开头或结尾的空字符串。
The metacharacter \b is an anchor like the caret and the dollar sign.
It matches at a position that is called a "word boundary". This match is zero-length.
\ B 与\ b
相反\B matches the empty string not at the beginning or end of a word.
答案 4 :(得分:0)
对于\b
,如果\b
的一侧有'word'字符,则另一侧必须有一个非'字'字符。
对于\B
,如果一边有'word'字符,那么另一边也必须有一个'word'字符。如果一边有一个非''字'字符,那么另一边也必须有一个非'字'字符。
'word'字符为A-Za-z0-9
和_
,其他字符不是C语言环境的字词。