Python正则十四之group 分组

先看一个例子:
s='life is short,i use python'字符串中返回lifepython之间的一系列字符

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'字符串中lifepython之间所有的字符,同时还需要找出两个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 ')

两个方法得出的结果类型都是元组。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值