美文网首页
Day17 贪婪、非贪婪、re模块

Day17 贪婪、非贪婪、re模块

作者: ququququ | 来源:发表于2019-01-16 17:19 被阅读0次

    一、贪婪和非贪婪

    非贪婪:

    在正则表达式中控制匹配不确定次数的符号后边可以加?,来表示尽可能少的匹配

    在贪婪的时候,匹配是尽可能多的匹配。

    注意:尽可能少是在能够匹配到的前提下尽可能少

    以下都是贪婪匹配:

    - *
    - +
    - ?
    - {M,N}
    - {M,}
    - {,N}

    import re
    
    a = re.findall(r"a(\d+?)", 'a23b')
    print(a) # ['2']
    b = re.findall(r"a(\d+)", 'a23b')
    print(b) # ['23']
        
    

    二、re模块

    1、complie(正则表达式)

    将正则表达式转换成对象,编译后直接调用对象方法

    2、fullmatch(正则表达式, 字符串)

    正则表达式和字符串匹配,匹配成功返回对象,失败返回None。用途:检测账号,密码等

    import re
        re_str = r'(\d\d)\.([a-z]+)'
        result = re.fullmatch(re_str, '12.adsf')
    

    返回对象

    a、span()

    匹配到字符串在原字符串中的下标范围(结果是元祖)

    b、star()和end()

    匹配到的字符串在元字符中的开始下标和结束下标

    c、group()

    获取匹配到的字符串(结果是字符串)

    d、string

    获取原字符串

    3、match(正则表达式, 字符串)

    让字符串的开头和正则表达式匹配,匹配成功结果是匹配对象,否则是None

    4、search(正则表达式, 字符串)

    在字符串中匹配出一个符合正则表达式的子串,匹配成功结果是对象,否则是None

    5、split(正则表达式, 字符串)

    将字符串按照满足正则要求的子串进行切割(返回值是列表)

    6、sub(正则表达式, 字符串1, 字符串2)

    将字符串2中能够和正则表达式匹配的子串替换成字符串1,产生一个新的字符串

    7、findall(正则表达式, 字符串)

    在字符串中获取满足正则表达式的所有字符串(结果是列表)

    注意:如果正则表达式有分组,直接获取到的是分组中匹配到的内容;如果有多个分组列表中的元素是元祖

    8、finditer(正则表达式, 字符串)

    在字符串中获取满足正则表达式的所有的子串(结果是迭代器)

    9、re.I

    匹配的时候忽略大小写,匹配的约束条件是放在flags参数中的。

    print(re.fullmatch(r'[a-z]{2}', 'SA', re.I))
    

    相关文章

      网友评论

          本文标题:Day17 贪婪、非贪婪、re模块

          本文链接:https://www.haomeiwen.com/subject/avomdqtx.html