python - 我无法解决正则表达式,我不知道出了什么问题

标签 python expression ipv4

我正在尝试编写一段代码,使用正则表达式来查明 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/

相关文章:

python - 搜索目录和子目录

python - 如何创建在继承操作下关闭的类型?

ios - 预期的表达式错误 Xcode

java - 迷失与弦

java - 带数字键的 MVEL 表达式

C - Linux - 内核模块 - TCP header

networking - TCP 数据包的旅程和每一跳的变化(IP 地址和端口发生)

python - 根据参数类型调用类 A 的方法