我试过像这样的正则表达式,但我只是得到[]作为输出
import socket
import re
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
while True:
data = str(s.recvfrom(65565))
pattern = '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'
ips = re.findall(pattern, data)
print(ips)
答案 0 :(得分:1)
三四项改进:
(?:...)
)而不是捕获IP地址部分的组re.findall()
仅生成捕获组的结果$
),这是打算吗?如果是这样,最后\b
无意义所有这些结合起来,你可以使用
pattern = r'\b((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.|$)){4})'
# ---^---
你应该没事。请参阅a working demo on regex101.com。