通过python regex忽略IP地址的第一个八位字节中的这两个数字(以127或0开头)

时间:2018-06-22 01:47:49

标签: python regex python-3.x python-2.7 ip-address

我有一个存储在文本文件中的IP列表以及一些其他数据,我试图从这些数据中仅提取有效IP。在这里,我有一些IP,例如0.0.0.0和localhost IP(以127 ...开头),我正尝试使用正则表达式消除它们。 这是我想出的可过滤0.0.0.0 IP的正则表达式模式,但无法有效删除127 .. * IP。

import re
with open("data","r") as f:
    for line in f:
        test = re.search(r'(?!0|127)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', line)
        if test:
            print(test.group(0))

IP位于文本文件中,如下所示:

127.3.65.7
alkjgfbvui vluiybr vk ru r127.0.0.1fal;iufnaw  waoun
12.0.1.5
mjhgvjg0.0.0.0kjuycuj
0.0.0.0
0.0.0.0
gare bloing r pgnao wyin212.2.174.64
207.71.31.224
awuie nvp; vwa rv;awiu n ;lkirjght94.206.93.104ta;wourit mrt'
172.20.128.1
172.20.164.207
172.20.164.203
172.20.164.209
1.8.0.144

我得到以下输出,在其中您可以看到通过删除第一个数字“ 1”也打印了以127开头的IP。

27.3.65.7
27.0.0.1
12.0.1.5
212.2.174.64
207.71.31.224
94.206.93.104
172.20.128.1
172.20.164.207
172.20.164.203
172.20.164.209
1.8.0.144

1 个答案:

答案 0 :(得分:3)

尝试使用正则表达式:(?<!\d)(?!0|127)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

Demo

说明:

在\ d后面添加否定的外观以消除以27开头的匹配项