我有以下案例:
Test (2.00001) Test (2.000) Test 2.1 Test (2,0001) Test 2,000 Test 2,1000 test 2
我尝试使用regex只查找整数:
2.000
2,000
2
而不是其它浮点数。
我尝试了不同的方法:
re.search('(?<![0-9.])2(?![.,]?[1-9])(?=[.,]*[0]*)(?![1-9]),...)
但对于以下情况,返回true:
2.00001
2.000
2,000
2,0001
2
我该怎么办?
更新
我已经更新了这个问题,它也应该找到一个没有任何逗号和点的整数(2
)。
4条答案
按热度按时间vyswwuz21#
我会用途:
输出量:
正则表达式:
regex demo
如果您还想单独匹配“integers”(用空格或圆括号/方括号括起来):
正则表达式:
regex demo
p4rjhz4m2#
您可以使用
请参阅regex demo。* 详细数据 *:
\b
-字边界(?<!\d[.,])
-没有数字紧跟在.
或,
的左边\d+
-一个或多个数字(?:[.,]0+)?
-.
或,
的可选序列,然后是一个或多个零\b
-字边界(?![,.]\d)
-不允许出现,
或.
,并且允许在紧靠右侧的位置出现一个数字。如果需要支持千位分隔符:
请参阅this regex demo。
5sxhfpxr3#
如果不需要正则表达式,您也可以在尝试将值转换为相应的数值格式后考虑使用
is_integer()
。虽然它有点难读,但它不需要正则表达式,并且对于给定的字符串结构的进一步用例应该是健壮的:返回列表中以前的值:
或者,如果您需要清洁:
返回:
yks3o0rb4#
这应该很容易-只需得到一个数字,然后检查“这是一个int值吗?"。Meaby类似这样的东西...
输出量:
还是我错过了什么?