先看一个例子:
将s='life is short,i use python'
字符串中返回life
和python
之间的一系列字符
import re
s = 'life is short,i use python'
r = re.search('life(.*)python',s)
print(r.group())
------------------------------------
输出:
life is short,i use python
它会把整串字符都返回过来,group()
里面是可以传递参数的。
import re
s = 'life is short,i use python'
r = re.search('life(.*)python',s)
print(r.group(0))
print(r.group(1))
------------------------------------------
输出:
life is short,i use python
is short,i use
在group()
传入一个参数1
就可以得到想要的结果。group(0)
是一个特殊情况,它永远的是记录的正则表达式一个完整匹配结果。如果想访问这样一个完整匹配结果内部的其中一个分组,必须从1
开始访问。爬虫匹配html
标签之间的内容经常使用。
而用findall
就简单的很多
import re
s = 'life is short,i use python'
r = re.findall('life(.*)python',s)
print(r)
---------------------------------------------
输出:
[' is short,i use ']
所以推荐使用findall
再看一个例子,多个组的情况
返回d = 'life is short,i use python,i love python'
字符串中life
和python
之间所有的字符,同时还需要找出两个python
之间所有的字符。
import re
d = 'life is short,i use python,i love python'
r = re.search('life(.*)python(.*)python',d)
print(r.group(0))
print(r.group(1))
print(r.group(2))
----------------------------------------
输出:
life is short,i use python,i love python
is short,i use
,i love
group
还有更简洁的写法,打印这3
个内容的话就可以直接用group(0,1,2)
,同时打印group(1)
和group(2)
这两个组的话可以直接使用groups()
import re
d = 'life is short,i use python,i love python'
r = re.search('life(.*)python(.*)python',d)
print(r.group(0,1,2))
print(r.groups())
-----------------------
输出:
('life is short,i use python,i love python', ' is short,i use ', ',i love ')
(' is short,i use ', ',i love ')
两个方法得出的结果类型都是元组。