gpt4 book ai didi

python - 检查字符串是否与python中的IP地址模式匹配?

转载 作者:IT老高 更新时间:2023-10-28 21:55:50 24 4
gpt4 key购买 nike

检查字符串是否匹配特定模式的最快方法是什么?正则表达式是最好的方法吗?

例如,我有一堆字符串,想检查每个字符串是否是有效的 IP 地址(在这种情况下有效意味着格式正确),是使用正则表达式执行此操作的最快方法吗?或者是否有更快的字符串格式或其他东西。

到目前为止,我一直在做这样的事情:

for st in strs:
if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', st) != None:
print 'IP!'

最佳答案

更新:下面的原始答案适用于 2011 年,但自 2012 年以来,使用 Python 的 ipaddress stdlib module 可能会更好- 除了检查 IPv4 和 IPv6 的 IP 有效性之外,它还可以做很多其他事情。 </update>

您似乎正在尝试 validate IP addresses .正则表达式可能不是最好的工具。

如果您想接受所有有效的 IP 地址(包括一些您可能甚至不知道有效的地址),那么您可以使用 IPy (Source) :

from IPy import IP
IP('127.0.0.1')

如果IP地址无效会抛出异常。

或者您可以使用 socket (Source) :

import socket
try:
socket.inet_aton(addr)
# legal
except socket.error:
# Not legal

如果您真的只想匹配带有 4 个小数部分的 IPv4,那么您可以按点拆分并测试每个部分是否为 0 到 255 之间的整数。

def validate_ip(s):
a = s.split('.')
if len(a) != 4:
return False
for x in a:
if not x.isdigit():
return False
i = int(x)
if i < 0 or i > 255:
return False
return True

请注意,您的正则表达式不会执行此额外检查。它将接受 999.999.999.999作为有效地址。

关于python - 检查字符串是否与python中的IP地址模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462784/

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