zoukankan      html  css  js  c++  java
  • python模块之re模块

      re模块

      通过re模块可以在python中使用正则表达式进行字符串匹配!

      导入:import re

      常用方法:

      findall

    import re
    # findall查找整个字符串找到所有匹配的元素,以列表形式返回
    ret = re.findall('z', 'abca')
    print(ret)  # ['a', 'a']

      search

    # search按顺序查找字符串,找到一个就返回,可以用group()来获取找到的,找不到返回None,返回None时,不能用group(),会报错
    ret = re.search('a', 'abca')
    print(ret.group())

      match

    # match查找字符串的开头,开头是匹配的就返回,同样使用group()来获取,找不到返回None,返回None时,不能用group(),会报错
    ret = re.match('a', 'abca')
    print(ret.group())

      split

    # split按顺序找到匹配的字符依次进行分割,返回列表,没有匹配的字符就将整个字符串作为一个列表元素返回
    ret = re.split('a', 'abac')
    print(ret)

      sub

    # sub按顺序找到匹配的字符,将其替换为指定字符,可以指定替换的个数,没有匹配的就返回原字符串
    ret = re.sub('a', 'A', 'abac', 1)
    print(ret)

      subn

    # subn找到匹配字符并替换为指定的字符,返回一个元组,第一个元素为替换后的内容,第二个为替换的次数
    ret = re.subn('a', 'A', 'abac')
    print(ret)

      compile

    # compile将比较长或需要多次使用的正则表达式编译后,方便后面使用。
    ret = re.compile('(zxc)')
    print(ret.findall('zxcsdkfjzxcvskdfj'))
    print(ret.search('zxcsdkfjzxcvskdfj').group())

      finditer

    # finditer返回一个存放匹配结果的迭代器,可以通过for循环一个一个取值
    ret = re.finditer('d', 'a1bc3ac4dr')
    print(ret)   # <callable_iterator object at 0x0000019F533BF320>
    for i in ret:
        print(i.group())

      findall 和 split的优先匹配

    ret = re.findall('zxc is (good|bad)', 'zxc is good')  # 会返回优先匹配到的结果
    print(ret)  # ['good']
    ret = re.findall('zxc is (?:good|bad)', 'zxc is good')  # 通过添加?:取消优先
    print(ret)  # ['zxc is good']
    
    ret = re.split('(,)', 'zxc,is,good')  # 会将()里的匹配内容一起返回
    print(ret)   # ['zxc', ',', 'is', ',', 'good']
    ret = re.split(',', 'zxc,is,good')  # 没有(),将只返回分割后的内容
    print(ret)   # ['zxc', 'is', 'good']

      ps:re模块中的几个方法的参数中都有一个默认参数flags,他有几种可选值:

    """
    re.I(IGNORECASE)忽略大小写,括号内是完整的写法
    re.M(MULTILINE)多行模式,改变^和$的行为
    re.S(DOTALL)点可以匹配任意字符,包括换行符
    re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 w, W, , B, s, S 依赖于当前环境,不推荐使用
    re.U(UNICODE) 使用w W s S d D使用取决于unicode定义的字符属性。在python3中默认使用该flag
    re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
    """
  • 相关阅读:
    洛谷—— P1187 3D模型
    商铺项目(Redis缓存)
    商铺项目(使用DES加密配置信息)
    Linux下tomcat启动项目原因排查
    商铺项目(商品详情页开发)
    商铺项目(店铺详情页开发)
    商铺项目(店铺列表开发)
    商铺项目(首页前端开发)
    商铺项目(首页后台开发)
    商铺项目(商品类别模块二)
  • 原文地址:https://www.cnblogs.com/zxc-Weblog/p/8259534.html
Copyright © 2011-2022 走看看