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

    import re
    
    
    # 字符串查找
    # findall 匹配所有结果
    # re.findall('正则表达式','需要匹配的字符串')
    ret = re.findall('d','asdffda23432')
    print(ret) # 返回值类型:列表
    
    # search 只匹配第一个结果
    ret = re.search('d+','asdffda23432')
    print(ret) # 返回值类型:正则匹配结果的对象或者None 返回个数1 如果匹配成功返回对象,如果没有匹配上返回None
    print(ret.group())# 返回 Match 对象 通过group来获取匹配到的结果 如果没有匹配上使用group会报错
    
    # match 匹配开头
    ret = re.match('ad+','a1123asdffda23432')
    print(ret.group()) # 返回 Match 对象 需要group取值 如果没有匹配上使用group会报错
    
    # 字符串替换
    # sub
    # re.sub('正则表达式','新数据','需要匹配的字符串',['替换次数'])
    ret = re.sub('d','','abdsfs3asfde33',1)
    print(ret) # 返回替换后的字符串
    # subn
    # re.subn('正则表达式','新数据','需要匹配的字符串',['替换次数'])
    ret = re.subn('d','','abdsfs3asfde33adfa4')
    print(ret) # 返回值:('替换后的字符串',替换了几次)
    
    # 字符串切割
    # split
    # re.split('正则表达式','字符串')
    ret = re.split('d+','aba123abb45kkk4')
    print(ret) # 返回值:列表
    
    # 进阶
    # compile
    # 因为正则表达式也需要编译,如果我们每次使用finall,search,match都使用一样的正则表达式,每次都需要编译会比较耗时
    # 所以我们使用compile提前编译好,来提供给finall,search,match使用,这样正则表达式就只需要编译一次,比较节省时间
    ret = re.compile('d')
    res = ret.findall('fasfa1232fdsaf434afds3w') # 相当于 re.findall('d','fasfa1232fdsaf434afds3w')
    print(res)
    
    # finditer
    ret = re.finditer('d','fasfa1232fdsaf434afds3w')
    print(ret) # 返回一个迭代器,节省内存 效果相当于findall 迭代器返回 Match 对象 需要group取值
    for r in ret:
        print(r.group())
    
    
    # 分组
    ret = re.findall(r'www.(.*?).com','www.baidu.com')
    print(ret) # 结果:['baidu']
    # 原因:在python中,如果使用了()(分组模式),那么python会默认优先显示分组内的内容
    ret = re.findall(r'www.(?:.*?).com','www.baidu.com') # 如果要取消分组内容优先显示,那么需要在分组表达式开始的时候加上?:
    print(ret) # 结果:['www.baidu.com']

    # 分组命名 命名:?P<name> 使用:?P=name
    import re
    ret = re.search(r'<(?P<tag_name>w+)>(w+)</(?P=tag_name)>','<a>asdfsda</a>')
    print(ret.group('tag_name'))

  • 相关阅读:
    SVN打tag
    validate命令---rman进行备份和回复的验证
    通达OA 小飞鱼工作流在线培训教程(一)HTML基础介绍
    How to improve Java&#39;s I/O performance( 提升 java i/o 性能)
    mybatis批量插入、批量删除
    Java測试覆盖率工具----Cobertura,EclEmma
    Java Secret: Using an enum to build a State machine(Java秘术:用枚举构建一个状态机)
    灵活数据源的固定行列交叉报表的制作
    HDFS学习笔记(1)初探HDFS
    JPEG压缩图像超分辨率重建算法
  • 原文地址:https://www.cnblogs.com/wtil/p/11040466.html
Copyright © 2011-2022 走看看