Python的正则表达式匹配IP范围(Python regex to match IP range)

2019-10-18 09:15发布

我想用一个Python正则表达式匹配IP范围。

对于防爆。 在谷歌机器人IP范围如下

66.249.64.0 - 66.249.95.255

re.compile(r"66.249.\d{1,3}\.\d{1,3}$")

我无法弄清楚如何做到这一点? 我发现这一个使用Java来完成。

Answer 1:

您可以使用此:

re.compile(r"66\.249\.(?:6[4-9]|[78]\d|9[0-5])\.\d{1,3}$")

如果你的动机,你可以替换\d{1,3}通过:

(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

说明:

一个正则表达式引擎不知道一个数字范围是什么。 描述范围的唯一方法是写一切准备用交替:

6[4-9]  |  [78][0-9]  |  9[0-5] 

6          can be followed by    4 to 9   --> 64 to 69
7 or 8     can be followed by    0 to 9   --> 70 to 89
9          can be followed by    0 to 5   --> 90 to 95 


Answer 2:

使用socket.inet_aton

import socket
ip_min, ip_max = socket.inet_aton('66.249.64.0'), socket.inet_aton('66.249.95.255')

if ip_min <= socket.inet_aton('66.249.63.0') <= ip_max:
    #do stuff here


Answer 3:

最后一个数字是:

[01]?\d{1,2}|2[0-4]\d|25[0-5]

第三位是:

6[4-9])|[78]\d|9[0-5]


文章来源: Python regex to match IP range
标签: python regex ip