• 正則表達式re中的贪心算法和非贪心算法 在python中的应用


    之前写了一篇有关正則表達式的文章。主要是介绍了正則表達式中通配符 转义字符 字符集 选择符和子模式 可选项和反复子模式 字符串的開始和结尾 ,有兴趣的能够查看博客内容

    此文章主要内容将要介绍re中的贪心和非贪心算法:


    贪心:

    使用 .* 匹配字符串

    当中标点 . 表示通配符,能够用来匹配除换行符之外的随意符号。* 为反复子模式,同意模式反复0次或者多次。

    贪心算法将会依照尽可能大的原则去匹配字符串。

    非贪心: 

    使用 .*?

    匹配字符串

    当中标点 . 表示通配符,能够用来匹配除换行符之外的随意符号,* 为反复子模式,同意模式反复0次或者多次;?

     为可选项。


    举例说明:

    使用贪心

    import re
    <pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Consolas';font-size:12.8pt;"><pre name="code" class="python">s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif"
    r=re.compile('xx.*xx')
    content=r.findall(s)
    print content

    
    #输出结果 尽可能多地去匹配
    
    
    
    ['xxIxxefahxxlovexxhoghexxpythonxx']
    


    使用非贪心:

    import re
    s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif"
    r=re.compile('xx.*xx')
    content=r.findall(s)
    print content
    #输出结果
    ['xxIxx', 'xxlovexx', 'xxpythonxx']
    

    s="gaxxIxxefahxxlovexxhoghexxpythonxxghaweoif"
    r=re.compile('xx(.*?

    )xx') content=r.findall(s) print content

    #输出结果
    ['I', 'love', 'python']
    
    这里使用(.*?)的()括起来的内容为子模式 用来输出





  • 相关阅读:
    rpc框架thrift
    rpc框架 SimpleXMLRP
    pyqt与拉勾网爬虫的结合
    python打造线程池
    python concurrent.futures包使用,捕获异常
    linux环境下pytesseract的安装和央行征信中心的登录验证码识别
    使用装饰器捕捉错误
    hbase 学习(十六)系统架构图
    大数据入门:各种大数据技术介绍
    How MapReduce Works
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7363720.html
Copyright © 2020-2023  润新知