zoukankan      html  css  js  c++  java
  • Python中使用正则表达式获取两个字符中间部分

    问题背景:当我们爬取网页信息时,对于一些标签的提取是没有意义的,所以需要提取标签中间的信息。

    解决办法:用到了re包下的函数

    方法1:用到了research()方法和group()方法

    方法2:用到了findall()方法

    具体实现:

    import re
    # 匹配两个字符中间的所有字符
    a = '<p>life is short, i use python<a/>i love it<p>'
    
    r = re.search('<p>(.*)<a/>(.*)<p>', a)
    
    # python中正则匹配,如果不加(),默认是一个分组,group()中的参数,如果是0,默认是所有组,即返回整个字符串
    # 如果是要访问自定义的组的元素,则需要从1开始
    
    print(r.group(0))  # <p>life is short, i use python<a/>i love it<p>
    print(r.group(1))  # life is short, i use python
    print(r.group(2))  # i love it
    
    # 用一个元组来返回所有组中的内容
    print(r.group(0, 1, 2))
    # ('<p>life is short, i use python<a/>i love it<p>', 'life is short, i use python', 'i love it')
    
    # 返回所有元组的信息,不包括第0组
    print(r.groups())  # ('life is short, i use python', 'i love it')
    
    # 另一种匹配方式:使用findall()
    b = re.findall('<p>(.*)<a/>(.*)<p>', a)
    print(b)  # [('life is short, i use python', 'i love it')]

    像边界字符集(^,$等)或者概括字符集(d,D,w等)匹配的都是一个字符,我们需要匹配一个连续的字符串时,会需要有组的概念,一个组中的元素是且的关系;例如:匹配Python字符串时,需要如下处理:()表示的组的概念,不可将()和[]混淆

    import re
    
    a = 'PythonPythonPythonPython'
    # ()表示且的关系,[]表示或的关系
    
    r = re.findall('(Python){3}', a)
    print(r)
  • 相关阅读:
    使用VisualVM检测
    《自控力》读书笔记
    【转】Oracle索引的类型
    【转】Oracle索引HINT的使用
    【转】Oracle 执行计划(Explain Plan) 说明
    Oracle分区
    【转】Oracle索引失效问题
    【转】《从入门到精通云服务器》第七讲—负载均衡和CDN技术
    【转】《从入门到精通云服务器》第七讲—IAAS、PAAS、SAAS
    【转】《从入门到精通云服务器》第六讲—OpenStack基础
  • 原文地址:https://www.cnblogs.com/syq816/p/12612263.html
Copyright © 2011-2022 走看看