【发布时间】:2018-05-18 12:04:02
【问题描述】:
我在网上找到了一些匹配 IP 地址的正则表达式。我使用了看起来最好的那个,然后将其更改为匹配该 IP 地址的网络掩码。这是我的代码:
prefix = 'None' while re.search(r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$', prefix) is None: prefix = raw_input('\n\n Enter the prefix (destination IP) > ') mask = 'None' while re.search(r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|0?)$', mask) is None: mask = raw_input('\n\n Enter the network mask > ')
我在www.regexr.com 中测试了两个正则表达式并且都工作正常,但是当我运行我的脚本时,Python 解释器在mask 变量中找不到匹配项,即使我插入了像255.255.255.0 这样的有效掩码.因此,它总是在第二个问题上循环。
这里有什么问题?我不应该使用“搜索”选项吗?
总结:我需要验证用户提供的网络掩码。它可以在0.0.0.0 和255.255.255.255 之间,并且总是有4 个元素,用点分隔。
【问题讨论】:
-
这些库对于验证 IP 地址很有用,但我不知道如何使用它们来验证网络掩码。此外,如果两个正则表达式匹配,我仍然不明白为什么我的代码不起作用
标签: python regex ip-address netmask