zoukankan      html  css  js  c++  java
  • Python 基础入门 8_2正则表达式

    """
    re的其他函数:
    re.split(patter,str) 将str以patter的匹配形式切割并返回list
    re.finditer(patter,str) 作用和findall一样,但findall返回的是列表,finditer返回的是迭代器

    re.sub(pattern, repl, string, count=0, flags=0)
    re.subn(pattern, repl, string, count=0, flags=0)
    rep1:替换的字符串
    count: 替换次数
    功能,用正则表达式的规则匹配字符串,并以rep1进行指定次数替换
    区别:sub()返回字符串,subn()返回以替换完后的字符串和替换次数位元素的tuple
    """
    print("-------------------------")
    str = "I am a man"
    print(re.split(" +",str))
    print(re.finditer("hj","hj hj hj dfs"))
    print(re.sub(r"a","v",str))
    print(re.subn(r"a","v",str))

    """
    分组:除了简单的判断是否匹配之外,正则表达式还有提取子串的功能。用()表示的就是提取分组
    (?P<str> ) 对这个组以str为命名

    _sre.SRE_Match.group(int/str) 根据序号或者组名获取对应组的信息
    _sre.SRE_Match.groups() 获取所有组的信息
    """
    print("-------------------------")
    str = "0075-27800075"
    m = re.match(R"(?P<h>d{4})-(d{8})",str)

    print(m)
    print(m.group(0))
    print(m.group(1))
    print(m.group("h"))
    print(m.group(2))
    # print(m.group(3)) #报错,因为正则中的规则一共3个组,不存在第四个组
    print(m.groups())

    """
    正则表达式的实现过程:
    当我们写完re.match(pattern,str,[flag])等函数使用正则表达式时,程序时先对pattern和flag进行编译,等编译好后再去匹配str字符串
    为了减少代码量,我们可以先对pattern和flag进行编译封装起来,等使用时再拿出来匹配对应str字符串,格式如下:

    变量 = re.compile(pattern,flags) #变量的type为_sre.SRE_Pattern
    变量.findall(str) #这个变量可以调用re的的match,search,findall,finditer,sub,subn等函数

    这种形式跟创建正则函数是一样的,只是函数需要创建和调用,相比之下,函数的代码量会多一些
    """
    print("--------------------")
    patter = "^d{6,8}$"
    re_User = re.compile(patter)
    print(re_User.match("123456789")) #返回对象
    print(re_User.match("123457")) #返回None


    """
    QQ 4位-13位纯数字
    mail
    password 包含数字字母(大小写)特殊字符
    ip地址
    """
    def checkQQ(str):
    patter = "^d{4,13}$"
    return re.match(patter,str)

    def checkEmail(str):
    patter = "^[0-9a-z]*@[0-9a-z]*.com$"
    return re.match(patter,str)

    checkPassword = re.compile("^(d+|[a-z]+|[A-Z]+){6,15}$")
    checkIp=re.compile("(d{1,2}|[1]d{1,2}|[2][0-5][0-5]).(d{1,2}|[1]d{1,2}|[2][0-5][0-5])."
    "(d{1,2}|[1]d{1,2}|[2][0-5][0-5]).(d{1,2}|[1]d{1,2}|[2][0-5][0-5])")

    print(checkQQ("1234567891111")) #返回对象
    print(checkEmail("hjl@afr.com")) #返回对象
    print(checkPassword.match("1ADsd123456")) #返回对象
    print(checkIp.match("256.1.99.0")) #返回None
  • 相关阅读:
    FTP命令行工具NCFTP
    XP 通过无线网卡 建立对等网
    Silverlight WCF 压缩
    EntityFramework Linq查询
    UCS2编码转换C#
    C#7Z压缩
    c#公钥加密私钥解密和验证
    SVN global ignore pattern for c#
    典型的DIV CSS三行二列居中高度自适应布局
    VC#窗体的大小设置
  • 原文地址:https://www.cnblogs.com/hjlin/p/10660833.html
Copyright © 2011-2022 走看看