zoukankan      html  css  js  c++  java
  • 正则提取关键字符-python代码实现

    原文地址:http://www.bugingcode.com/blog/python_re_extraction_key.html

    关于python的正则使用在以前的文章中 http://www.bugingcode.com/blog/python_regular_expressions.html ,都有介绍,但是这边文章比较大,内容讲的不够细,这里专门讲如何用python正则匹配到自己需要的字符串。

    正则提取数据

    还是以url字符串来进行匹配:http://www.bugingcode.com/blog/python_regular_expressions.html,url的字符串有明显的一样,bugingcode 为域名,blog 为目录名,python_regular_expressions 为文章的名称。在这里需要把这三个字符串都提取出来。

    贪婪和非贪婪匹配

    查看正则匹配规则:

    . : 匹配任意除换行符" "外的字符
    + : 匹配前面字符1次到无限次

    在我们可以用/ 来对提取的字符进行限制,也就是卡死头和尾,看看会得到什么样的结果。

    import re
    str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
    print re.findall(r"/(.+)/",str)
    

    会输出什么样的结果呢?

    有人猜结果:

    ['/www.bugingcode.com','blog']
    

    不可能出现这种结果的,因为r"/(.+)/"中已经把/ 用掉了,往下匹配已经找不到/ 号了。

    有人猜结果:

    ['/www.bugingcode.com']
    

    也有人猜:

    ['/www.bugingcode.com/blog']
    

    这是关于正则表达式的贪婪和非贪婪匹配,简单的记住正则匹配中有出现 ? 才是 非贪婪匹配,这里的正则匹配是贪婪的,也就是最大的匹配情况,一般来说我们选用的是非贪婪 模式。

    import re
    str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
    print re.findall(r"//(.+?)/",str)
    

    匹配的结果为:

    ['www.bugingcode.com']
    

    提取所有需要的字段

    刚才说了一个(.+?) 只能匹配到一个字符串,而我们需要提取 三个字段:bugingcode 为域名,blog 为目录名,python_regular_expressions

    import re
    
    str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
    print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)
    

    输出如下我们需要的结果:

    [('bugingcode', 'blog', 'python_regular_expressions')]

    再来一个看看是什么结果:

    import re
    
    str = "http://www.bugingcode.com/blog/python_regular_expressions.htmlhttp://www.bugingcode.com/blog/python_regular_expressions.html"
    print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)
    

    有的时候需要提取的字符串比较复杂是,可以通过不断的进行尝试,先把条件放的比较苛刻,后面在慢慢的放开,找到自己需要的字符串。

    转载请标明来之:http://www.bugingcode.com/

    更多教程:阿猫学编程

  • 相关阅读:
    android 入门-Service
    android 入门-Activity及 字体
    android 入门-安装环境
    PS 零基础训练1
    wp8 入门到精通 ImageCompress 图片压缩
    wp8 入门到精通 Gallery
    C# DateTime时间格式转换为Unix时间戳格式
    wp8 入门到精通 MultiMsgPrompt
    C# Func<T,TResult>
    redis简介
  • 原文地址:https://www.cnblogs.com/bugingcode/p/8430698.html
Copyright © 2011-2022 走看看