gpt4 book ai didi

python - 使用 RegEx 匹配 IP 地址

转载 作者:IT老高 更新时间:2023-10-28 21:05:32 27 4
gpt4 key购买 nike

我正在尝试进行测试以检查 sys.argv 输入是否与 IP 地址的 RegEx 匹配...

作为一个简单的测试,我有以下...

import re

pat = re.compile("\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}")
test = pat.match(hostIP)
if test:
print "Acceptable ip address"
else:
print "Unacceptable ip address"

但是,当我向其中传递随机值时,它在大多数情况下会返回“可接受的 IP 地址”,除非我有一个基本上等同于 \d+ 的“地址”。

最佳答案

使用正则表达式验证 IP 地址是个坏主意 - 这会将 999.999.999.999 作为有效地址传递。改用套接字尝试这种方法 - 更好的验证,并且同样简单,如果不是更容易做到的话。

import socket

def valid_ip(address):
try:
socket.inet_aton(address)
return True
except:
return False

print valid_ip('10.10.20.30')
print valid_ip('999.10.20.30')
print valid_ip('gibberish')

如果您真的想改用解析主机方法,这段代码将完全做到这一点:

def valid_ip(address):
try:
host_bytes = address.split('.')
valid = [int(b) for b in host_bytes]
valid = [b for b in valid if b >= 0 and b<=255]
return len(host_bytes) == 4 and len(valid) == 4
except:
return False

关于python - 使用 RegEx 匹配 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com