Chcem porovnávať rozsah IP pomocou regulárneho výrazu Python.
Napr. rozsah IP adresy Google nasledovne
66.249.64.0 - 66.249.95.255
re.compile(r"66.249.d{1,3}.d{1,3}$")
Nemôžem prísť na to, ako to urobiť? našiel som toto jeden pomocou Java.
odpovede:
1 pre odpoveď č. 1Môžete použiť toto:
re.compile(r"66.249.(?:6[4-9]|[78]d|9[0-5]).d{1,3}$")
ak ste motivovaný, môžete ho nahradiť d{1,3}
podľa:
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
vysvetlenie:
Regex motor nevie, čo je to číselný rozsah. Jediný spôsob, ako opísať rozsah, je napísať všetky možnosti so striedaniami:
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
1 pre odpoveď č. 2
použitie 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
0 pre odpoveď č. 3
Posledná číslica je:
[01]?d{1,2}|2[0-4]d|25[0-5]
Tretia číslica je:
6[4-9])|[78]d|9[0-5]