/ / Python regex, aby zodpovedal rozsahu IP - python, regex, ip

Python regex, ktorý zodpovedá rozsahu IP - python, regex, ip

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ď č. 1

Môž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]