在Python中解析文本中的IP和CIDR的正确方法是什么

时间:2017-07-04 15:50:51

标签: python python-2.7

我找到了很多关于这个话题的主题,答案各不相同。

对于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?

1 个答案:

答案 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()