`

python ipv6 正则校验

阅读更多
def ipv6_check(addr):
    '''
    Returns True if the IPv6 address (and optional subnet) are valid, otherwise
    returns False.
    '''
    ip6_regex = (
                r'(^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$)|'
                r'(\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,6}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,6}(:[0-9a-f]{1,4}){1,1}\Z)|'
                r'(\A(([0-9a-f]{1,4}:){1,7}|:):\Z)|(\A:(:[0-9a-f]{1,4}){1,7}\Z)|'
                r'(\A((([0-9a-f]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|'
                r'(\A(([0-9a-f]{1,4}:){5}[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|'
                r'(\A([0-9a-f]{1,4}:){5}:[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,1}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A(([0-9a-f]{1,4}:){1,5}|:):(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|'
                r'(\A:(:[0-9a-f]{1,4}){1,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)')
    return bool(re.match(ip6_regex, addr,flags=re.IGNORECASE))    

 

    
#测试用例

    print ipv6_check("2001:0DB8:0000:0000:0000:0000:1428:57ab")
    print ipv6_check("2001:0DB8:0000:0000:0000::1428:57ab")
    print ipv6_check("2001:0DB8:0:0:0:0:1428:57ab")
    print ipv6_check("2001:0DB8:0::0:1428:57ab")
    print ipv6_check("2001:0DB8::1428:57ab")
    print ipv6_check("2001:0DB8::1428:57ab")
    print ipv6_check("2001:0DB8:0000:0000:1428::57ab")
    print ipv6_check("2031:0000:1F1F:0000:0000:0100:11A0:ADDF")

 

 

 

分享到:
评论

相关推荐

    Python IPv6.zip

    在这个名为"Python IPv6.zip"的压缩包中,包含了关于Python在IPv6环境下的应用和实践的相关资料,让我们一起深入探讨这些知识点。 首先,我们来看"简介与Python基础模块"部分。这部分可能涵盖Python的基础语法、...

    Python使用正则表达式抓取网页图片的方法示例

    本文实例讲述了Python使用正则表达式抓取网页图片的方法。分享给大家供大家参考,具体如下: #!/usr/bin/python import re import urllib #获取网页信息 def getHtml(url): page = urllib.urlopen(url) ...

    Python 通过正则表达式快速获取电影的下载地址 Python源码

    Python 通过正则表达式快速获取电影的下载地址 Python源码Python 通过正则表达式快速获取电影的下载地址 Python源码Python 通过正则表达式快速获取电影的下载地址 Python源码Python 通过正则表达式快速获取电影的...

    Python实现正则表达式匹配任意的邮箱方法

    在Python中,正则表达式的功能通过re模块实现,它提供了一系列方法来支持正则表达式操作。 首先,我们来看如何利用Python实现匹配特定邮箱地址,比如163邮箱。在这里,我们使用了正则表达式r'[0-9a-zA-Z_]{0,19}@**...

    python之正则表达的常用方法

    这是一个关于python正则的常用方法的py文件,内含re.match,sub,search,findall,compile等方法。使用python3.6

    python使用正则表达式提取网页URL的方法

    本文实例讲述了python使用正则表达式提取网页URL的方法。分享给大家供大家参考。具体实现方法如下: import re import urllib url=//www.jb51.net s=urllib.urlopen(url).read() ss=s.replace( ,) urls=re.findall...

    L2正则化python实现案例(附代码)

    本文将深入探讨L2正则化的概念、原理,并通过Python代码实例进行详细解析。 首先,我们理解一下L2正则化。L2正则化,也称为Ridge回归,是在损失函数中添加了模型参数的平方和的系数λ(正则化参数)的项。这会使得...

    python的正则表达式资源包

    python的正则表达式资源包

    python正则表达式匹配不包含某几个字符的字符串方法

    Python中的正则表达式是一种强大的文本处理工具,可以用来搜索、替换那些符合某个模式(即规则)的文本。特别是在处理网络爬虫、数据清洗和文本分析等方面,正则表达式的应用非常广泛。但是,有时候我们需要匹配的不...

    python正则表达式全部方法

    一个描述全部python正则方法,正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 ...

    学习笔记:Python爬虫正则表达式.doc

    学习笔记:Python爬虫正则表达式.doc

    python使用正则筛选信用卡

    在Python编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于匹配、查找、替换等操作。本篇文章将详细讲解如何使用Python的正则表达式库`re`来筛选信用卡号。 首先,我们需要理解信用卡号...

    python正则表达式详细整理

    python语言正则表达式的详细整理,可以更加简单的看懂python正则表达式的使用规则

    Python re正则表达式爬取京东商品图片.py

    Python re正则表达式爬取京东商品图片,实例源代码代码, 部分代码:def geturllist(html): pattern = re.compile(r'data-lazy-img="//(.+?\\.jpg)"',re.M) imglist = re.findall(pattern, html) return imglist

    python正则. python正则介绍,及如何使用正则表达式.zip

    python正则. python正则介绍,及如何使用正则表达式.zip

    python3利用正则表达式匹配经纬度

    网上关于度分秒的经纬度提取我用不了,搞了好久的正则表达式,大家可以参考一下,如果有更好的方法,可以分享一下。

    python 根据正则表达式提取指定的内容实例详解

    python 根据正则表达式提取指定的内容 正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事。  下面演示了在python里,通过正则表达式来提取符合要求的内容。 实例代码: import re # 正则...

    [Python]网络爬虫(七):Python中的正则表达式教程.pdf

    Python中的正则表达式是通过标准库`re`来实现的。它可以用于搜索、匹配和替换文本中的字符串模式。在Python中,正则表达式是一种灵活、强大的工具,被广泛应用于字符串处理,尤其是在网络爬虫开发中。 2. `re`模块...

    python正则表达式使用指南

    【Python正则表达式使用指南】是一篇专为Python初学者设计的教程,旨在帮助读者理解和运用Python中的正则表达式。这篇文档采用中英文对照的方式,内容清晰易懂,适合快速学习和实践。 正则表达式是用于匹配字符串的...

    Python正则表达式指南

    Python正则表达式

Global site tag (gtag.js) - Google Analytics