Простой скрипт на Питоне для определения, является ли строка IP-адресом

Author: Vlad Goreletsky
License: Public Domain

Наверняка где-то в литературе и сети (а возможно и в стандартной библиотеке) есть готовые шаблоны, но я что-то с ходу не нашел.


#!/usr/bin/python

import string
import re

pattern = "[1-9]+[0-9]?[0-9]?\.[0-9]+[0-9]?[0-9]?\.[0-9]+[0-9]?[0-9]?\.[0-9]+[0-9]?[0-9]?"
ip_re = re.compile(pattern)

def if_ip(ip):
    iffind = ip_re.findall(ip)
    
    if iffind == []:
	return 0
    else:
	numbers = iffind[0].split('.')
	for i in numbers:
	    dig = string.atoi(i)
	    if dig > 255:
		return 0
	return 1
	

rightip1 = "123.123.123.123"
rightip2 = "100.11.3.131"
wrongip1 = "1233.123.123.4323"
wrongip2 = ".123.123.4323"

r1 = if_ip(rightip1)
r2 = if_ip(rightip2)
w1 = if_ip(wrongip1)
w2 = if_ip(wrongip2)

print r1
print r2
print w1
print w2

Функция вычленяет только семантически верные адреса, если нужно включить адреса вида 0.0.0.0 (любые сети, любые маски), тогда в первых квадратных скобках шаблона нужно вписать 0-9 вместо 1-9.

Назад