检索未用空格括起来的小数

时间:2015-09-28 10:47:57

标签: python regex

在一个字符串中,我想要所有的十进制数,即类似23.45的数字。

但条件是数字应该在空格之间,而不是length23.45523.45is the length

所以字符串length 23.455 中的小数是可以接受的。

如果有23.45.34这样的数字,则应忽略它,即不应显示23.4545.34

需要一个在Python中找到所有匹配项的正则表达式模式。

例如,请考虑以下字符串:

"6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987"

我需要一个如下代码

import re
input_str = "6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987"
print(re.findall(<regex>, input_str)) # replace <regex> with appropriate regex.

生成的输出应为:

6.5, 12.34, 11.43, 12.3, 66.8987

1 个答案:

答案 0 :(得分:3)

您需要检查数字是否在非空格字符之前或之后,您可以使用环视(?<!\S)(?!\S)来实现。将浮点数与强制整数和小数部分匹配的正则表达式是微不足道的:\d+\.\d+

import re
input_str = "6.5 from1.2 .34 12.34 13.44.55 12.34.55.66 11.43 12.3 12. 12.78~ fdasfdashf 66.8987"
print(re.findall(r"(?<!\S)\d+\.\d+(?!\S)", input_str))

请参阅IDEONE demo

结果:['6.5', '12.34', '11.43', '12.3', '66.8987']