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

Python正则表达式搜索网络掩码,python,regex,ip-address,netmask,Python,Regex,Ip Address,Netmask,我在网上找到了一些与IP地址匹配的正则表达式。我使用了看起来最好的一个,然后更改它以匹配该IP地址的网络掩码。这是我的代码: 我在中测试了两个正则表达式,它们都可以正常工作,但是当我运行脚本时,Python解释器在mask变量中找不到匹配项,即使我插入了一个有效的mask,如255.255.255.0。因此,它总是绕着第二个问题转 这里有什么问题?我不应该使用“搜索”选项吗 总之:我需要验证用户提供的网络掩码。它可以介于0.0.0.0和255.255.255.255之间,并且始终有4个由点分隔的

我在网上找到了一些与IP地址匹配的正则表达式。我使用了看起来最好的一个,然后更改它以匹配该IP地址的网络掩码。这是我的代码:

我在中测试了两个正则表达式,它们都可以正常工作,但是当我运行脚本时,Python解释器在
mask
变量中找不到匹配项,即使我插入了一个有效的mask,如
255.255.255.0
。因此,它总是绕着第二个问题转

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


总之:我需要验证用户提供的网络掩码。它可以介于
0.0.0.0
255.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]|,前缀
问题在于,在原始表达式中,
\.
只是OR运算符中一个可能模式的一部分


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

这些库对于验证IP地址很有用,但我不知道如何使用它们来验证网络掩码。此外,我仍然不明白,如果两个正则表达式的匹配问题都不在第一个循环中,而在第二个循环中,为什么我的代码不起作用。第二个循环中存在一些问题。我在[www.regexr.com](www.regexr.com)网站上测试了regex,它运行正常,因此在脚本中应该可以正常工作。你能测试一下我的代码吗?我测试过了,对我来说效果很好。只有当地址的前三组小于200时,其原始形式的第一个循环才起作用。在第二组中,最后的
|0?
表示第四组可以为空,我不确定这是您想要的。
[01]?[0-9][0-9]?
我应用了您建议的更改,效果良好。我甚至没有意识到IP地址的限制。这里最奇怪的是,netmask循环在一段时间后,甚至在任何更改之前,又开始工作了。谢谢你的帮助
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 >  ')