python在正则表达式中获取浮点数

时间:2014-03-08 22:12:05

标签: python regex python-2.7

我有这些格式的可能性:

1,34$
1.34$
114$
0,34$
0.34$

我希望得到这个号码。

我用这个普通快递

(\d+),(\d*)

但是当我在1,34$中测试时,我得到了两个结果,134

请我只需使用正则表达式

显然我并不喜欢点和逗号的情况,因为我不知道该怎么做

我的问题是谁得到了整数

我的第二个问题是我怎么不在乎它是逗号还是点。

感谢

1 个答案:

答案 0 :(得分:1)

正确的正则表达式是:

(\d+(?:[.,]\d*)?)

这意味着:一个或多个数字可选地后跟一个点或逗号,后跟零个或多个数字。

捕获组是整个表达式(括号之间的所有内容)。请注意,(?...) 是一个捕获组,只是一个表达式分组,以便?适用于该组中的所有内容。

您获得两个结果的原因是您使用了两个捕获组。

如果您想将结果转换为数字,则必须处理用点替换可能的逗号并转换为浮点数。假设捕获的文本位于text

float(text.replace(',','.'))

例如:

import re
text = '1,32$'
match = re.match(r'(\d+(?:[.,]\d*)?)',text)
float(match.group(1).replace(',','.'))
>>> 1.320