打印 ip 时的正则表达式错误

regex bug while printing an ip

import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|"
ip = re.findall("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
print(ip)

程序搜索 txt 文件并使用正则表达式找到这一行:

|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|

当我打印 var ip 时,它打印如下:

[('70', '.12', '12')]

而不是:

[('70.19.66.12')]

你的评论澄清了问题让我相信这可能是一个可能的解决方案。

text = text.split('|')[-2]

您可以使用 re.search() 并只打印组 (0),如果有任何匹配项

import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|"
ip = re.search("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
if ip:
    print(ip.group(0))
else:
    print('none')

编辑:

如果你需要得到超过1个匹配项,你可以使用re.finditer()

import re

text = "|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.12|\n|2018-11-03 18:20:59.0|FrozoneMD|8607446f-5748-479f-b72a-e0d25c1c7757|70.19.66.13|"
ip = re.finditer("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}", text)
for i in ip:
    print(i.group(0))

输出:

70.19.66.12
70.19.66.13