我找到了很多关于这个话题的主题,答案各不相同。
对于IPv4:
ip = re.findall(r'[0-9]+(?:\.[0-9]+){3}', file)
适用于8.8.8.8
,但不适用于8.8.8.8/32
。我尝试添加一些(?:/(\d+)
来捕获/X
。没有成功。
现在我也在我的文件中看到IPv6 IP。你真的必须以同样的方式搜索IPv6 IP吗?有没有更简单的方法用Python搜索文本中的IP?
答案 0 :(得分:1)
您可以使用此模式(对于IPv4):
[0-9]+(?:\.[0-9]+){3}(?:\/[\d]+)?
与可选子网匹配时存在。这是一个demo。
要在python中进行匹配,您需要这样做:
ip = re.findall(r'\b[0-9]+(?:\.[0-9]+){3}(?:\/[\d]+)?\b', file, flags=re.M)
假设file
是多行字符串。如果没有,您需要执行file.read()
。