在一个字符串中,我想要所有的十进制数,即类似23.45
的数字。
但条件是数字应该在空格之间,而不是length23.455
或23.45is the length
。
所以字符串length 23.455
中的小数是可以接受的。
如果有23.45.34
这样的数字,则应忽略它,即不应显示23.45
和45.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
答案 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']