Skip to main content
 首页 » 编程设计

python之正则表达式在python中拦截整数和 float

2025年05月04日27mengfanrong

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

1 
1.2 
1.0  
1,0 
 
1wer,043  
1dd.44 
1D 

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

这对于第一组(1、1.2、1.0、1,1)是可以的,但是它还会返回第二组的匹配项(1wer,043、1dd.44、1D)。

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

请您参考如下方法:

问题似乎是您没有转义句点字符。这反过来翻译以匹配任何字符。我已将你的表情更改为:

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

哪个应该做你想要的。

有一个例子here .

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

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

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