我正在尝试编写一段代码,使用正则表达式来查明 ipv4 地址是否正确,但我似乎无法找出问题所在。
import re
pattern=re.compile('([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])')
ip=['17.255.16.45','255.255.255.255','0.0.0.0','0.14.255.14','2555.2564.0.3','0.3.255']
for i in range (len(ip)):
if re.search(pattern,ip[i]):
print(ip[i],'ok')
else:
print(ip[i],"nope")
最佳答案
我认为问题在于您的 \.
包含在交替中,而它应该始终包含在其之前的任何选项之后。您只需将这些选项放在一对括号内即可修复它。另外,建议使用 raw strings用于正则表达式以避免转义问题。
import re
pattern=re.compile(r'(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])')
ip=['17.255.16.45','255.255.255.255','0.0.0.0','0.14.255.14','2555.2564.0.3','0.3.255']
for i in range (len(ip)):
if re.search(pattern,ip[i]):
print(ip[i],'ok')
else:
print(ip[i],"nope")
输出:
17.255.16.45 ok
255.255.255.255 ok
0.0.0.0 ok
0.14.255.14 ok
2555.2564.0.3 nope
0.3.255 nope
关于python - 我无法解决正则表达式,我不知道出了什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59094836/