我的问题
我试图只返回有效的 IP(任务只需要 1-255.0-255.0-255.0-255,即没有前导 0)
我的正则表达式匹配得很好,而且我有一个不太可靠的解决方案来解决“正确”的问题但我试图理解为什么我会得到我的输出。
我的问题
为什么每次函数调用后都会返回“NONE”?
我做了什么
我已经用 Regex101.com 验证了我的正则表达式
我已经尝试注释掉除 1 之外的所有方法调用,但得到的结果与
我尝试从 python 解释器执行此操作的结果相同
>> rev = re.compile(r"(?P<octet>((((2[0-4]\d)|(25[0-5])).?){4}))")
> > x = rev.search("255.255.255.255")
>> x.group("octet")
'255.255.255.255'
>> print(x.group("octet"))
255.255.255.255
没有返回任何 'NONE' 值
最后,我尝试添加额外的 Print() 以查看何时返回 'NONE' 值。
我能确定的最好的结果是,由于某种原因,在函数结束时发送了“NONE”。
我一直在尝试阅读Python RE Docs,但似乎找不到列出的原因。
我的代码
import re
def ip_checker(var):
print("-----1------")
rev = re.compile(r"(?P<octet>(^([^0])(((25[0-5])|(2[0-4][0-9])|(1?[0-9][0-9])|([0-9]))\.?){4}$))")
try:
print("-----2------")
x = rev.match(var)
print(x.group("octet"))
print("-----3a------")
except:
print("No Results")
print("-----3b------")
#Method Calls
print(ip_checker("255.255.255.255")) # Returns True
print(ip_checker("0.0.0.0")) # Returns False
print(ip_checker("192.168.0.55")) # Returns True
print(ip_checker("0.156.37.15")) # Returns False
我的输出
-----1------
-----2------
255.255.255.255
-----3a------
None
-----1------
-----2------
No Results
-----3b------
None
-----1------
-----2------
192.168.0.55
-----3a------
None
-----1------
-----2------
No Results
-----3b------
None
我的 Python 版本
注意:我有一台 Mac,它显然有特定版本的 Python 可以使用?
me@hostname dir % python3 --version
Python 3.6.3
只是为了确保我完全是最新的
me@hostname dir % brew update && brew upgrade python
---
#Stuff I'm not gonna show...
#But it updated Portable Ruby & Python
---
==> Upgrading 1 outdated package:
python 3.7.6_1 -> 3.7.7
---
me@hostname dir % python3 --version
Python 3.7.7
即使在更新之后,输出中也没有看到任何变化