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']
    
    这里使用(.*?)的()括起来的内容为子模式 用来输出





  • 相关阅读:
    浅谈Sass与Less区别、优缺点
    混合开发的几个框架
    什么是Node.js?
    初入AngularJS
    jQuery的效果函数
    jQuery的一些选择器
    CSS3新增的属性有哪些:
    linux 新建用户、用户组 以及为新用户分配权限
    linux各个文件作用
    Linux CentOS6.5 命令修改网络配置
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7363720.html
Copyright © 2011-2022 走看看