我在网上找到了一些与IP地址匹配的正则表达式。我使用的似乎是最好的,然后改变它,以匹配该IP地址的网络掩码。这是我的密码:
前缀= 'None‘,而re.search(r'^(250-5|20-4|010-9.){3}(250-5|20-4|010-9?)$',前缀是None:前缀= raw_input('\n\n’输入前缀(目标IP) > ')掩码= 'None‘,而re.search(r'^((250-5|20-4|010-9?).){3}(250-5|20-4|010-9?|0?)$',则为’None‘。掩码)为无:掩码= raw_input('\n\n输入网络掩码> ')
我在www.regexr.com中测试了这两个regex,并且都很好,但是当我运行我的脚本时,Python解释器在mask变量中找不到匹配,即使我插入了一个有效的掩码,比如255.255.255.0。正因为如此,它总是反复讨论第二个问题。
这里有什么问题?我不应该使用“搜索”选项吗?
总结中的:我需要验证用户提供的网络掩码。它可以介于0.0.0.0和255.255.255.255之间,它总是有4个元素被点隔开。
发布于 2018-05-18 13:38:44
将正则表达式改为: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),因为它被多次使用。
https://stackoverflow.com/questions/50410956
复制相似问题