匹配浮点数的Python正则表达式
可能重复:匹配浮点数的Python正则表达式,python,regex,floating-point,Python,Regex,Floating Point,可能重复: 如何编写与浮点数的字符串表示形式匹配的Python正则表达式 表达式应该匹配float构造函数接受的任何字符串,如float('3.5')。因此,表达式应该匹配'0.和'.0',而不是'. 不需要匹配无穷大和NaN的字符串表示形式。开玩笑地回答:尝试:float(foo),ValueError除外:…@Amber:是的,但这不能用作构建更复杂正则表达式的构建块。为什么要使用locale标记?您是否还希望将浮点数与千位分隔符(1234.56)、替代十进制分隔符(1'234,56)、非
如何编写与浮点数的字符串表示形式匹配的Python正则表达式 表达式应该匹配
float
构造函数接受的任何字符串,如float('3.5')
。因此,表达式应该匹配'0.
和'.0'
,而不是'.
不需要匹配无穷大和NaN的字符串表示形式。开玩笑地回答:
尝试:float(foo),ValueError除外:…
@Amber:是的,但这不能用作构建更复杂正则表达式的构建块。为什么要使用locale
标记?您是否还希望将浮点数与千位分隔符(1234.56
)、替代十进制分隔符(1'234,56
)、非ASCII数字、其他编号系统(如南亚编号系统)(1,0000000
)相匹配等等?听起来你可能想在你走太远的正则表达式之路之前检查一下Python的十进制模块使用的正则表达式:你可能想调整特殊值的位(NaN,无穷大)。05.5是一个无效的浮点数,也可以与这个正则表达式匹配?和5.5e+1.2。这也是有效的,但不能被正则表达式匹配。@静杰詹:Python和C++都接受5.5作为有效浮点文字。Python和C++都不接受5.5E+1.2,谢谢!詹京杰:但是你是对的,正则表达式不是100%正确的05.0
、05.
和05e0
是有效的浮点文字,而05
不是(它是一个八进制整数文字)。但是,正则表达式接受所有四个字符串。这对43543ff5.4不起作用,因此在数字中输入任何字母,它就会通过
r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?'