1

Python 正規表現を使用して IP 範囲を一致させたい。

例の場合。Google ボットの IP 範囲は次のとおりです

66.249.64.0 - 66.249.95.255

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

これを行う方法がわかりませんか?これはJavaを使用して行われたことがわかりました。

4

3 に答える 3

1

使用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
于 2013-07-16T09:13:47.657 に答える
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 
于 2013-07-16T08:59:10.270 に答える
0

最後の桁は次のとおりです。

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

3 桁目は次のとおりです。

6[4-9])|[78]\d|9[0-5]
于 2013-07-16T09:02:55.373 に答える