Python中的re模块使用

re模块

  • 导入: import re

  • 使用

    • findall

      • # findall(正则表达式, 字符串)  返回值: 匹配上值的列表
        ret = re.findall(r"\d+", "123456aaa213")  # ['123456', '213'],没有就返回一个[]
        
        
    • search

      • # search(正则表达式, 字符串)  返回值: 匹配对象,没有匹配上就返回None
        ret = re.search(r"\d+", "123456aaa213")  # <_sre.SRE_Match object; span=(0, 6), match='123456'>
        ret.group()  # 123456
        ret.span()  # (0, 6)
        ret.groups()  # ()
        
        
    • match

      • # match(正则表达式, 字符串)  返回值: 匹配对象,没有匹配上就返回None
        ret = re.match(r"\d+", "123456aaa213")  # <_sre.SRE_Match object; span=(0, 6), match='123456'>
        ret.group()  # 123456
        ret.span()  # (0, 6)
        ret.groups()  # ()
        
        
    • sub

      • # sub替换,sub(正则表达式/旧字符串, 新字符串, 整个字符串, 替换的个数,不填默认所有)  
        # 返回值: 已修改的字符串
        ret = re.sub(r'\d+', 'H', '123replace123')  # HreplaceH,默认全部替换
        ret = re.sub(r'\d+', "H", '123replace123', 1)  # Hreplace123,替换一次
        ret = re.sub(r'\d+', "H", '123replace123', 100)  # HreplaceH,替换的个数填的大于匹配的个数,就是全部替换
        
        
    • subn

      • # subn替换,subn(正则表达式/旧字符串, 新字符串, 整个字符串, 替换的个数,不填默认所有)
        # 返回值: 一个元组(已修改的字符串, 替换的个数)
        ret = re.sub(r'\d+', 'H', '123replace123')  # ('HreplaceH', 2)
        
        
    • split

      • # split切割,split(正则表达式/字符串, 整个字符串)
        # 返回值: 列表["匹配上就为空字符串", "未匹配上的保留", "匹配上就为空字符串"]
        ret = re.split(r'\d+', '123replace123')  # ["", "replace", ""]
        ret = re.split(r'\d+', 'repla123ce123')  # ["replace", ""]  中间匹配上就不会缓存空字符串,只有两侧才会
        
        
    • compile

      • # compile提取编译,提高速度
        pattern = re.compile(r"\d+")  # 提前编译
        pattern.search("123compile123").group()  # 123,可以直接使用提前编译好的
        pattern.search("111aaa111").group()  # 111
        
        
    • finditer

      • # finditer省空间,返回的是一个迭代器
        ret = re.finditer(r'\d', 'fafaggeag131fafafq141fafaef65')  # 返回是一个迭代器
        for i in ret:  # 依次取出来
            print(i.group())  # 1  3  1  1  ...
            
        
    • 分组()和分组命名(?P<name>)

      • # (?:正则)可以取消分组的特性
        # split使用分组会保留匹配到字符串
        ret = re.split(r'\d+', 'aaa123bbb456')  # ['', 'aaa.', 'bbb', '']
        ret = re.split(r'(\d+)', 'aaa123bbb456')  # ['aaa', '123', 'bbb', '456', '']
        
        # search使用分组就可以通过group(n)来按照分组的顺序查看分组匹配到的内容
        ret = re.search(r'(\d+)\.(\d+)', 'aaa123.456')
        ret.group()  # 123.456
        ret.group(0)  # 123.456
        ret.group(1)  # 123
        ret.group(2)  # 456
        
        # 分组命名一般是用于匹配html
        ret = re.search(r"<(?P<tag_name>\w+)>(?P<t>\w+)</(?P=tag_name)>", "dawd<a>hello</a>dwad")
        ret.group()  # <a>hello</a>
        ret.group("tag_name")  # a
        ret.group("t")  # hello
        
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值