Python 正则表达式搜索网络掩码



我在网上找到了一些与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('nn    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('nn    Enter the network mask >  ')

我在www.regexr.com 中测试了两个正则表达式并且都工作正常,但是当我运行脚本时,Python 解释器在mask变量中找不到匹配项,即使我插入了像255.255.255.0这样的有效掩码。正因为如此,它总是在第二个问题上循环往复。

这里有什么问题?我不应该使用"搜索"选项吗?

总而言之:我需要验证用户提供的网络掩码。它可以在0.0.0.0255.255.255.255之间,并且始终有 4 个由点分隔的元素。

将您的正则表达式更改为以下内容: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问题在于,在原始表达式中,.只是 OR 运算符中一种可能模式的一部分。

你可以预编译它(用re.compile(,因为它被多次使用。

相关内容

  • 没有找到相关文章