我想使用正则表达式匹配不带空格或标点符号的数字,例如:
我想到了:
(?<![[:space:][:punct:]])\d+
但是,这不符合我的预期,对于示例,结果如下所示:
我了解,为什么在最后两个示例中它匹配一位数字(因为negative-lookbehind仅包括空格和标点符号),但是我不确定如何更改正则表达式以排除那些匹配项。如何纠正?
答案 0 :(得分:2)
部分匹配的原因是引擎不知道从您的需求出发应该从哪里开始。您通过在字符类中包含\d
来告诉引擎:
(?<![[:space:][:punct:]\d])\d+
^^
答案 1 :(得分:0)
This RegEx可以帮助您将字符串输入分为两组,其中第二组($2
)是目标数字,而第一组($1
)是非数字在它后面:
([A-Za-z_+-]+)([0-9]+)
如果您想将其用于文本处理,这样做可能是安全的。