• day 17 re模块 正则表达式


    import re    引用re模块

    查找  

      finall:匹配所有,每一项都是列表中的一个元素

      search:只匹配从左到右的第一个,得到的不是直接的结果而是一个变量,通过group方法获取结果,没有匹配到会返回None,使用group会报错

      match:从头开始匹配,相当于search中的正则表达式加上一个^

    字符串处理的扩展: 替换 切割

      split  切割

      sub  替换  格式re.sub(旧的,新的,字符串,替换次数)

      subn  返回一个元组,第二个元素是替换的次数

    re模块的进阶:时间/空间

      compile  节约你使用正则表达式解决问题的时间  

     ret = re.compile('d+')   # 已经完成编译了
     print(ret)
     res = ret.findall('alex83taibai40egon25')
     print(res)
    

       finditer  节省你使用正则表达式解决问题的空间/内存

    ret = re.finditer('d+','alex83taibai40egon25')
    for i in ret:
        print(i.group())
    

    rearch()  .group()   括号中数字代表的是去对应分组中的内容

    1 import re
    2 s = '<a>wahaha</a>'  # 标签语言 html 网页
    3 ret = re.search('<(w+)>(w+)</(w+)>',s)
    4 print(ret.group())  # 所有的结果
    5 print(ret.group(1)) # 数字参数代表的是取对应分组中的内容
    View Code

    findall()  中有一个特殊的语法,优先显示正则表达式中()括号的内容

    取消分组优先(?:正则表达式)

        ret = re.findall('d+(?:.d+)?','1.234*4')

         print(ret)

    关于分组:

      1、对正则表达式来说,有时候我们需要进行分组,来约束某一字符出现的次数(.[w]+)? 

      2、对python语言来说,分组可以帮助你更好更精准的找到你真正需要的内容,例<(w+)>(d+)<

    split

    1 ret = re.split('d+','alex83taibai40egon25')
    2 print(ret)
    3 ret = re.split('(d+)','alex83taibai40egon25aa')
    4 print(ret)
    View Code

    python 与正则表达式 之间的特殊约定

      1、分组命名(?P<这个组的名字>正则表达式)

      2、使用前面的分组,要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致

    pattern = '<(?P<tab>w+)>(w+)</(?P=tab)>'
    ret = re.search(pattern,s)
    print(ret
    
  • 相关阅读:
    NOIP初赛知识点大全-普及+提高组
    cron表达式详解,cron表达式写法,cron表达式例子
    n2n的编译和运行、配置
    Visual Studio 2017 扩展
    iis url重写
    http重定向到https
    基于git命令的代码统计方法
    UseSwagger
    docker中mysql数据库的数据导入和导出
    Win10远程桌面提示你的凭据不工作的处理方法
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/11681958.html
Copyright © 2020-2023  润新知