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)