我正在寻找一些字边界来涵盖这三种情况:
是否有类似的东西,因为\ b也包括 - ,/ etc。?
想要通过上述内容替换此模式中的\ b:
(\b\d*\sx\s|\b\d*x|\b)
答案 0 :(得分:20)
尝试将\b
替换为(?:^|\s|$)
这意味着
( ?: don't consider this group a match ^ match beginning of line | or \s match whitespace | or $ match end of line )
适用于Python和JavaScript。
答案 1 :(得分:9)
好的,所以你真正的问题是:
我如何匹配一个单位,可选地前面有一个数量,但只有在比赛前没有任何内容或空格?
使用
(?<!\S)\b(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*ml\b
<强>解释强>
(?<!\S)
:断言在比赛前无法匹配非空格字符。
\b
:匹配字边界
(?:\d+\s*x\s*)?
:可选择匹配量词(仅限整数)
\d+(?:\.\d+)?
:匹配一个数字(小数可选)
\s*ml\b
:匹配ml
,可选地以空格开头。
答案 2 :(得分:1)
\b
带来的边界不对空白敏感。它们是与\w\W
或\W\w
之间的转换相关的复杂条件断言。有关如何更精确地编写锚点,请参阅this answer,以便您可以按照自己的方式处理空格。