如何从字符串中的多个数字中提取一个十进制数字

时间:2019-01-04 19:54:37

标签: regex python-3.x

我有这种模式的string1。 apple:car-cat-3.1.1.1: going to 2.2 home。 我想grep一个十进制数字。在此字符串中,它将为2.2

我尝试使用re.search(r'\d+\.\d+',string1),当我这样做时得到3.1而不是2.2。我在它的字符串循环中搜索,其中某些字符串只有一个十进制数字,而另一些字符串的数字则大于1。

re.search(r'\d+\.\d+',string1)

执行此操作时,我得到的是3.1而不是2.2

1 个答案:

答案 0 :(得分:0)

您使用re.search返回第一个匹配项,但是您的正则表达式具有3 matches3.11.12.2

如果您想匹配您的值,则可以使用否定环视方法检查左侧和右侧的内容是否非非空格字符:

(?<!\S)\d+\.\d+(?!\S)

Regex demo | Python demo

例如:

import re

string1 = "apple:car-cat-3.1.1.1: going to  2.2 home"
print(re.search(r'(?<!\S)\d+\.\d+(?!\S)',string1).group())
# 2.2