zoukankan      html  css  js  c++  java
  • 正則表達式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']
    
    这里使用(.*?)的()括起来的内容为子模式 用来输出





  • 相关阅读:
    Grunt VS Gulp
    Gulp开发教程(翻译)
    JavaScript的ajax使用
    移动端交互手势详解及实现
    JavaScript获取页面宽度高度
    JavaScript中的this(你不知道的JavaScript)
    前端Web开发MVC模式-入门示例
    RequireJS实例分析
    JavaScript 模块化历程
    LABjs、RequireJS、SeaJS 哪个最好用?为什么?- 玉伯的回答
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7363720.html
Copyright © 2011-2022 走看看