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开始
up(0))  # <p>life is short, i use python<a/>i love it<p>
python正则表达式判断
up(1))  # life is short, i use python
up(2))  # i love it
# ⽤⼀个元组来返回所有组中的内容
up(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组
ups())  # ('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)