我有一个带有多个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
问题是这匹配多次,但我不需要。此正则表达式缺少什么,因此只能匹配一次?
谢谢
答案 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'