我希望有正则表达式匹配前面没有空格或标点符号的数字,例如:
我想出了:(?<![[:space:][:punct:]])\d+
但是,这不符合我的意图,对于示例,结果如下:
我明白,为什么它匹配最后两个例子中的单个数字(因为负面后观仅包括空格和标点符号),但我不知道如何更改我的正则表达式以排除这些匹配。怎么纠正?
部分匹配的原因是引擎并不确切地知道它应该从您的要求开始。你通过在字符类中包含\d
来告诉引擎:
(?<![[:space:][:punct:]\d])\d+
^^
This RegEx可能会帮助您将字符串输入分成两组,其中第二组($2
)是目标数字,第一组($1
)是其后面的非数字:
([A-Za-z_+-]+)([0-9]+)
如果您可能希望将其用于文本处理,那么这样做可能是安全的。