正则表达式拦截整数并在python中浮动

时间:2015-07-28 12:01:55

标签: python regex

我正在使用此正则表达式[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?对照以下数字列表:

1
1.2
1.0 
1,0

1wer,043 
1dd.44
1D

我的正则表达式匹配发布列表中的每个示例。

这适用于第一组(11.21.01,1),但它也会返回第二组匹配({{1} },1wer,0431dd.44)。

如何更新我的正则表达式以排除最后3个示例?

2 个答案:

答案 0 :(得分:1)

问题似乎是你没有逃避期间角色。这反过来转换为匹配任何角色。我把你的表达改为:

^[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?$

应该做你想做的事。

有一个例子here

分别在开头和结尾的额外^$应确保字符串仅包含数字数据。如果这不是您所追求的,也就是说,您希望使用该表达式来提取数值数据,那么您可以简单地省略它们。

根据@ nhahtdh的评论,可以通过将.,放在字符类中来改进您的表达式:

^[+-]?(\d+([.,]\d*)?|[.,]\d+)([eE][+-]?\d+)?$

答案 1 :(得分:0)

您应该使用开始(^)和结束($)元字符

^[+-]?(\d+((.|\,)\d*)?|(.|\,)\d+)([eE][+-]?\d+)?$