我的目标是定位文本中的IP地址。
使用grep时,我可以使用正则表达式([0-9]+\.){3}[0-9]+
来完成此操作。
对于Python中的re
,除非在括号内的表达式前面加上?:
,否则我不明白为什么它不能工作
我知道使用?:
会阻止创建一个组,但是我不能解释这个前缀被删除后的结果。
>>> s
'64 bytes from 10.11.1.5: icmp_seq=2 ttl=128 time=215 ms'
>>> p=re.compile(r"(?:[0-9]+\.){3}")
>>> p.findall(s)
['10.11.1.']
>>> p=re.compile(r"([0-9]+\.){3}")
>>> p.findall(s)
['1.']
发布于 2018-07-31 06:53:29
您可以使用以下命令,link to repl:
import re
s = '64 bytes from 10.11.1.5: icmp_seq=2 ttl=128 time=215 ms'
r = re.compile(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
ip = r.findall(s)
print(ip)
https://stackoverflow.com/questions/51602700
复制相似问题