【发布时间】:2020-06-20 19:22:36
【问题描述】:
我的问题
我试图只返回有效的 IP(任务只需要 1-255.0-255.0-255.0-255,即没有前导 0)
我的正则表达式匹配得很好,我有一个不太可靠的解决方案来“正确”地解决问题,但我试图理解为什么我会得到我的输出。
我的问题
为什么每次函数调用后都会返回“NONE”?
我做了什么
我已经通过 Regex101.com 验证了我的正则表达式
我已经尝试注释掉除 1 之外的所有方法调用,但得到相同的结果
我试过用 python 解释器来做这个
>> rev = re.compile(r"(?P
((((2[0-4]\d)|(25[0-5])).?){4})) ")
>> x = rev.search("255.255.255.255")
>> x.group("八位字节")
'255.255.255.255'
>> 打印(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
即使更新后,输出中也没有变化
【问题讨论】:
标签: python python-3.x output python-re named-captures