python实现查找合法IP并分类内网和外网地址

实现目的

将一组IP地址,可能含有不合法的IP地址,放到一个列表中,查找出合法的IP地址,并分类内网和外网地址。

# coding:gbk
import re

_input = ['10.12.30.254', '10.256.8.56', '192.168.257.1', '172.56.25.2', '183.18.46.53', '86.17.46.12', '213.49.56.38','58.61.152.300']


def divide_ips(ips):
    intranet = []
    extranet = []
    ip_rules = '((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$'   #正则匹配合法IP

    for item in ips:
        if re.match(ip_rules,item):
            if re.match('^10\.|192|172',item):
                intranet.append(item)
            else:
                extranet.append(item)
                
    #return intranet, extranet
    print("内网地址有:",intranet)
    print("外网地址有:",extranet)

divide_ips(_input)

输出:
内网地址有: ['10.12.30.254', '172.56.25.2']
外网地址有: ['183.18.46.53', '86.17.46.12', '213.49.56.38']