为什么在这个正则表达式模式中 left 执行为 left \B? [重复]

问题描述 投票:0回答:1

为什么在这种情况下 left

\b
的表现与 left
\B
一样?

\b\$[0-9]+(\.[0-9][0-9])?\b

这个模式应该省略像

a$99.99
这样的短语,因为左
\b
的表现。

\b
检测未被字母、数字或下划线包围的短语。但不是!我在 regex101 中检查了它。 as you see it detects phrases such tyh666.8 but doesn't detect $99

然而,正确的

\b
完全正确地执行!

令人惊讶的是,我把它改成了左边

\B
它起作用了!

\B
检测被字母、数字或下划线包围的短语。但在这里它作为左
\b
! 我不知道为什么?!

As you see it detects phrases which have not been bounded with letters, digits or underscore

regex nlp boundary
1个回答
0
投票

您对

\b
的理解不正确。它匹配一侧有“单词”字符而另一侧有“非单词”字符的位置。
$
不是单词字符,因此它只会匹配
$
紧跟在单词字符之前的位置(字母数字,加上在某些实现中,例如
@
_

© www.soinside.com 2019 - 2024. All rights reserved.