我需要检查字符串是否有任何IPv4地址或以下CIDR块之一:/ 16或/ 24.所以,192.168.0.1应该匹配.192.168.0.0/16应匹配.192.168.0.0/17不匹配我正在使用以下正则表达式:
re.compile(r'^([0-9]{1,3}\.){3}[0-9]{1,3}(/(16|24))?')
Run Code Online (Sandbox Code Playgroud)
这匹配所有IP地址,但也匹配192.168.0.0/aaaa等字符串
现在,如果我更改正则表达式(删除?结尾):
re.compile(r'^([0-9]{1,3}\.){3}[0-9]{1,3}(/(16|24))')
Run Code Online (Sandbox Code Playgroud)
它匹配CIDR块/ 16或/ 24,但不再匹配IP地址(例如,192.168.0.1).
不是'?' 应该检查一个组是否有可选的发生?我究竟做错了什么?
注意:我知道IP地址正则表达式本身并不完美,但我更感兴趣的是获得有关所述问题的帮助.