Python中使用正则表达式获取两个字符中间部分

Posted 狗子的进阶史

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中使用正则表达式获取两个字符中间部分的主要内容,如果未能解决你的问题,请参考以下文章

Java 正则表达式获取两个字符中间的内容

求个正则表达式,获取两个字中间的内容!比如“a123啊45,c”

正则表达式:java获取两个字符中间的字符串

Python 正则表达式匹配两个指定字符串中间的内容

php用正则表达式怎么获得两个字符串之间字符

仅使用 python 正则表达式从最新的字符串中获取