小编tig*_*nk2的帖子

IPAddress或CIDR块匹配正则表达式

我需要检查字符串是否有任何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地址正则表达式本身并不完美,但我更感兴趣的是获得有关所述问题的帮助.

python regex

1
推荐指数
2
解决办法
5411
查看次数

标签 统计

python ×1

regex ×1