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)

免责声明:文章转载自《Python中使用正则表达式获取两个字符中间部分》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android混淆、反编译以及反破解的简单回顾java利用SuffixFileFilter统计目录下特定后缀名文件的数目下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

正则表达式总结,正则表达式匹配不包含某个字符串

1、匹配a标签及其url: Regex regA = new Regex(@"<a[s]+[^<>]*href=(?:""|')([^<>""']+)(?:""|')[^<>]*>([^<>]+)</a>", RegexOptions.IgnoreCase); 说明:在上面的正则表达式...

apache配置虚拟目录和URL重定向

1. 虚拟目录 认识虚拟目录 虚拟目录就是在站点中建立一个链接指向某个物理路径,可用于发布站点主目录以外资源或缩短物理路径 虚拟目录配置命令 a. alias URL-path 物理路径 映射URL到文件系统的特定区域 b. aliasMatch 正则表达式 物理路径 使用正则表达式映射URL到文件系统 c. scriptAlias URL-path 物理...

python使用zipfile解压文件中文乱码问题

中文在编程中真实后娘养的,各种坑爹,python3下中文乱码这个问题抓破了头皮,头疼。看了alex的文章,才有种恍然大悟的感觉(链接在底部)。 一句话,就是转换成unicode,压缩前是什么编码,使用什么编码encode再decode回来 先看测试代码: #-*- coding: utf-8 -*- import zipfile # 默认模式r,读 az...

Python项目读取配置的几种方式

1. 将配置写在Python文件中 配置文件(config.py 或 settings.py) 通常放置在程序源代码的目录,方便引用 配置文件 # settings.py class Config(object): DEBUG = False TESTING = False DATABASE_URI = 'sqlite://:memo...

QString和string互转中文字符

string -> QString 1 std::string strStd = "可可西";2 QString strQ = QString::fromLocal8Bit(strStd.c_str()); QString -> string 1 QString strQ("可可西");2 std::string strStd= strQ...

Python使用grequests并发发送请求

目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。 为了提升测试效率,一般我们需要并行发送请求。这里可以使用多线程,或者...