正则表达式:仅匹配一次

时间:2018-06-23 11:57:29

标签: python python-3.x python-2.7

我有一个带有多个IP地址的字符串以及一些随机的东西。例如这样的例子:

(@arg seconds: -u +takes_value default_value[1.0] "Update time")

得到这个正则表达式:

21/Jun/2018:01:15:38 +0000    188.79.169.152    157.52.69.50    443    -    -    GET / 157.52.69.30 157.52.69.10

问题是这匹配多次,但我不需要。此正则表达式缺少什么,因此只能匹配一次?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用re.match来匹配字符串开头的ptrn 因此,只需在模式的开头添加.*,我们就可以匹配从字符串开头到第一个IP地址的所有内容

>>> import re
>>> s = "21/Jun/2018:01:15:38 +0000    188.79.169.152    157.52.69.50    443    -    -    GET / 157.52.69.30 157.52.69.10"
>>> 
>>> ptrn = r'.*?([0-9]+(?:\.[0-9]+){3})'
>>> re.match(ptrn, s).groups()[0]
'188.79.169.152'