python - 通过python正则表达式忽略ip地址第一个八位字节中的这两个数字(以127或0开头)

标签 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

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

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

最佳答案

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

Demo

说明:

在\d 后面添加否定查找以消除以 27 开头的匹配

关于python - 通过python正则表达式忽略ip地址第一个八位字节中的这两个数字(以127或0开头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979572/

相关文章:

python - 具有负步长的列表切片

python - 如何在 Python 上使用正则表达式删除括号?

python - 如何忽略缺失数据的行

javascript - JS正则表达式提取括号中的数据

python-3.x - 固定字符串或任何有效整数的 FastAPI 路径参数验证

python - 如何在已放置的 QLabel 或 QPixmap 之上使用 QPainter 进行绘制?

python - 模块导入自身的目的

ruby - 仅匹配 RAR 文件集中第一个文件的正则表达式

regex - ? : Notation in Regular Expression

python - 模块未找到错误 : No module named 'google_auth_oauthlib'