使用正则表达式在字符串中查找数字

时间:2018-10-22 19:31:18

标签: python-3.x

i_know_this = "11.22"

我真的对正则表达式不满意。我正在寻找以"11.22"开头但字符串中不完整的版本号。此字符串的示例为:

“ bla bla bla bla bla 73.12。bla bla bla 11.22.33.444 bla”

在此字符串中,我想提取11.22.33.444并绑定到变量: z = "11.22.33.444"

另一个例子:

"bla bla bla bla 13.762. bla bla bla 11.22.01.4. bla"

,在这种情况下,我想找到11.22.01.4(没有多余的点)并将其链接到变量: z = "11.22.01.4"

3 个答案:

答案 0 :(得分:0)

您可以使用

import re

R=re.compile(r'(11\.22\.[0-9]+\.[0-9]+)')
S=R.search(yourstring) # I tried .match(); but that didn't work
S.group()

答案 1 :(得分:0)

使用re.search()

z = re.search( r'[0-9]+(?:\.[0-9]+){3}', s ).group(0)

演示:

>>> import re
>>> s = "bla bla bla bla 73.12. bla bla bla 11.22.33.444 bla"
>>> z = re.search( r'[0-9]+(?:\.[0-9]+){3}', s ).group(0)
>>> print(z)
11.22.33.444

>>> s = "bla bla bla bla 13.762. bla bla bla 11.22.01.4. bla"
>>> z = re.search( r'[0-9]+(?:\.[0-9]+){3}', s ).group(0)
>>> print(z)
11.22.01.4

答案 2 :(得分:0)

使用re.findall()的另一个选项:

import re  
a = 'bla bla bla bla 13.762. bla bla bla 11.22.01.4. bla'
b = 'bla bla bla bla 73.12. bla bla bla 11.22.33.444 bla'

r = re.compile(r'(11\.22\.[\d\.]+\d)')

print(r.findall(a))
print(r.findall(b))