正则表达式匹配数字零

时间:2016-01-28 05:08:55

标签: python regex python-2.7

我需要一个匹配数字零的十进制形式的正则表达式,如0或0.0或0.00000但不是10的倍数,如110.0000

我已经看到了this这样的问题而且它并不匹配。

我一直在使用优秀的在线正则表达式工具here来测试模式,但我的成功有限。

我能想到的最好的是enctype很遗憾,正则表达式将(\b0+(\.)?0+\b)视为字边界,因此它最终会捕获.中的.000。删除我的25.000修复了该问题,但随后错过了任何孤立的单?个字符

5 个答案:

答案 0 :(得分:2)

(?<![\d.])0+(?:\.0+)?(?![\d.])

前面没有数字或小数点;那么任意数量的零,可选地后跟一个小数点和任意数量的零;并且没有数字或小数点。

然而,这不适用于没有后瞻性的引擎,例如JavaScript。

答案 1 :(得分:1)

(?<!\.)\b0(?:\.0+)?(?!\.)\b

试试这个。看看演示。

https://regex101.com/r/cZ0sD2/13

答案 2 :(得分:0)

(?:^|[ ])0+(?:\.0+)?(?:[ ]|$)

如果您需要检索零的确切文本,只需将其包裹在parens中即可将其匹配。将您想要的任何其他字符添加到大括号或替换为\s[:[space]:]等类(或者用您的语言表示)

答案 3 :(得分:0)

这种模式很难看出来:

(?:^|[^.\d])(0?\.0+|0)(?:[^.\d]|$)

(?:^|[^.\d])非匹配组的任何不是数字也不是句号但可以作为一行的开头

(0?\.0+|0)匹配组以匹配浮点数或整数零

(?:[^.\d]|$)非匹配组的任何不是数字也不是句号但可以是一行的结尾

应该处理明显的情况,即使是在一条线上。应该在上下文中处理零,例如“0.0in”或坐标“(34.8,0.0)”当前拧紧“0”。

答案 4 :(得分:0)

也许这会有所帮助:

在您指向的正则表达式工具网站上,此表达式为:

((!(\d+0\.0*))|(\d*[^0]\.0*)|([^\d]0\.0)|([^\d]0\.)|(^0))

说明:

!(\d+0\.0*)    => does not match digits ends with 0 following by a dot and zeros
(\d*[^0]\.0*)  => match digits that not have a zero before the dot, following by zeros
([^\d]0\.0)    => match 0.0 that having no digits before the first zero
([^\d]0\.)     => match 0. that having no digits before the first zero
(^0)           => math a zero on the starts of the line

结果:

0              <- match
0.0            <- match
25.00000       <- match
10.00000       <- does not match
110.0000       <- does not match
2818.0000      <- match
120901821.000  <- match
0.             <- match