(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
所有分组匹配结果: ('李晓明', '计算机')
发布了556 篇原创文章 · 获赞 140 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/104241403