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





  • 相关阅读:
    集合框架学习笔记<二>
    Notepad++ Emmet安装方法教程
    vi 常用命令行
    iOS应用架构谈 view层的组织和调用方案
    搭建ssh框架项目(二)
    eclipse安装主题插件(Color Theme)
    eclipse安装properties插件
    Eclipse安装SVN插件
    搭建ssh框架项目(一)
    J2SE基础小结
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7363720.html
Copyright © 2011-2022 走看看