(6-11)re模块使用-匹配对象

1.re模块使用-匹配对象

  • 使用前面介绍的match函数和search函数,匹配成功时都会返回一个Match对象,匹配失败时则返回None。
    这里我们看一下如何操作返回的Match对象。
  • eg:根据Match对象判断是否匹配成功
import re
result1=re.search(r'python', '我喜欢学习Python!', re.I)
if result1: #判断是否匹配成功
print('result1:',result1) #匹配成功则输出返回的Match对象
result2=re.match(r'python', '我喜欢学习Python!', re.I)
if result2: #判断是否匹配成功
print('result2:',result2) #匹配成功则输出返回的Match对象

结果:
根据Match对象判断是否匹配成功。
result1: <re.Match object; span=(5, 11), match='Python'>

将Match对象作为判断条件时,其永远返回True;而None则返回
False。
因此,通过“if result1:”和“if result2:”即可判断前面的匹配是否成功

2.Match对同的方法

  • 这里我们仅学习group、groups、start和end这几种
    方法的使用。
Match对象方法描述
group([group1,…])根据传入的组号返回对应分组的匹配结果。如果传入一个组号,则返回一个字符串形式的匹配结果;如果传入多个组号,则返回一个由多个匹配结果字符串组成的元组。如果传入0或不传入参数,则返回的是与正则表达式匹配的整个字符串
groups()返回一个由所有分组的匹配结果字符串组成的元组
start(group=0)返回指定分组的匹配结果字符串在原字符串中的起始位置;如果group值为0(默认值),则返回与正则表达式匹配的整个字符串在原字符串中的起始位置
end(group=0)返回指定分组的匹配结果字符串在原字符串中的结束位置;如果group值为0(默认值),则返回与正则表达式匹配的整个字符串在原字符串中的结束位置

-eg:Match对象中的方法使用示例。

import re
str='''sno:#1810101#,name:#李晓明#,age:#19#,major:#计算机#
3 sno:#1810102#,name:#马红#,age:#20#,major:#数学#'''

## ([\s\S]*?)是第一个分组,([\s\S]*?)是第二个分组
rlt=re.search(r'name:#([\s\S]*?)#[\s\S]*?major:#([\s\S]*?)#',str, re.I)
if rlt: #判断是否有匹配结果
	print('匹配到的整个字符串:', rlt.group())
	##match对象的group方法
	print('name:%s, startpos:%d, endpos:%d'%(rlt.group(1),rlt.start(1), rlt.end(1)))
	## rlt.group(1)指第一个分组
	print('major:%s, startpos:%d, endpos:%d'%(rlt.group(2),rlt.start(2), rlt.end(2)))
	print('所有分组匹配结果:', rlt.groups())
else:
	print('未找到匹配信息')


匹配结果:
匹配到的整个字符串: name:#李晓明#,age:#19#,major:#计算机#
name:李晓明, startpos:20, endpos:23
major:计算机, startpos:41, endpos:44
所有分组匹配结果: ('李晓明', '计算机')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值