【发布时间】:2019-04-21 15:43:27
【问题描述】:
我想要一个正则表达式来匹配前面没有空格或标点符号的数字,例如:
- foo12 -> 匹配 12
- foo 42 -> 不匹配
- foo.42 -> 不匹配
我想出了:
(?<![[:space:][:punct:]])\d+
但是,这并没有按我的意愿工作,至于示例,结果如下:
- foo12 -> 匹配 12 (OK)
- foo 42 -> 匹配 2(不正确)
- foo.42 -> 匹配 2(不正常)
我明白,为什么它在最后两个示例中匹配单个数字(因为负向后视仅包括空格和标点符号),但是我不知道如何更改我的正则表达式以排除这些匹配项。如何纠正?
【问题讨论】:
-
将
\d添加到字符类:(?<![[:space:][:punct:]\d])\d+ -
@revo 我确定我试过了!您可以添加您的评论作为答案,以便我接受吗?
-
您似乎只想匹配字符串开头或字母之后的数字。然后您可以使用
(?<![^[:alpha:]])\d+/(?<!\P{L})\d+。见this regex demo。你在哪里使用正则表达式?