Logo

郎哥编程

Match对象

2020-12-30 154

若re模块的match()、search()函数匹配成功,会返回Match对象,若匹配失败会返回None。

 对象的方法

使用Match对象可以获取匹配的结果,Match对象的主要方法如下表所示。

20.png

注释(1)

方法声明:

group([group1, ...])

返回一个或者多个匹配的子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,组1默认为0(整个匹配都被返回)。

如果一个组N 参数值为 0,相应的返回值就是整个匹配字符串;如果它是一个范围 [1..99],结果就是相应的括号组字符串。

[group1, ...]并不是要传入一个列表实参,而是要传入对应group1, ...的组号。

案例代码:

import re
# 正则表示式
pattern = "(\w+) (\w+)"
# 使用re模块mathc函数进行匹配
m = re.match(pattern, 'Isaac Newton, physicist')
if m:
  print(m.group(0,1,2))

group传入的第1个参数的值是0,它会返回整个匹配的字符串,传入第2个参数的值是1,它会返回匹配的第一个括号组字符串Isaac,传入第2个参数的值是2,它会返回匹配的第一个括号组字符串Newton。

程序执行结果如下所示:

('Isaac Newton', 'Isaac', 'Newton')

注释(2)

方法声明:

groups(default=None)

返回一个元组,包含所有匹配的子组,在匹配模式中出现的从1到任意多的组合,default 参数用于不参与匹配的情况,默认为 None。

案例代码:

import  re
# 正则表示式
pattern = "(\d+)\.(\d+)"
# 使用re模块mathc函数进行匹配
m = re.match(pattern, '36.891')
if m:
    print(m.groups())

案例代码执行结果如下所示:

('36', '891')

注释(3)

方法声明:

groupdict(default=None)

返回一个字典,包含了所有的命名子组。key就是组名。 default 参数用于不参与匹配的组合;默认为 None,命名子组为符合(?P<name>…)规则的正则表达式。

案例代码:

import  re
# 正则表示式
pattern = "(?P<first_name>\w+) (?P<last_name>\w+)"
# 使用re模块mathc函数进行匹配
m = re.match(pattern, 'Malcolm Reynolds')
if m:
 print(m.groupdict())

案例代码使用(?P<name>…)规则定义了两个匹配子组,第1个匹配子组的名称是first_name,第2个匹配子组的名称是last_name。

案例代码执行结果如下所示:

{'first_name': 'Malcolm', 'last_name': 'Reynolds'}

注释(4)

方法声明:

start([group])
end([group])

start([group])返回匹配到的字串的开始标号,end([group])返回匹配到字符串的结束标号。group 默认为0(意思是整个匹配的子串)。如果 group 存在,但未产生匹配,就返回 -1。

案例代码:

import  re
# 正则表示式
email = "tony@tiremove_thisger.net"
# 使用re模块mathc函数进行匹配
m = re.search("remove_this", email)
if m:
  print(m.start(),m.end())

案例代码使用search函数查询email的子串,若查询成功,m.start()返回子串的起始索引,m.end()返回子串的终止索引。

注释(5)

方法声明:

span([group])

返回匹配字符串的起始索引和终止索引,返回方式为二元组(m.start(group), m.end(group)),group是匹配的组号,默认值是0.

案例代码:

import  re
# 正则表示式
pattern = "(\w+) (\w+)"
# 使用re模块mathc函数进行匹配
m = re.match(pattern, 'Isaac Newton, physicist')
if m:
    print("匹配子串%s的索引为:%s" % (m.group(2),m.span(2)))

程序执行结果如下所示:
匹配子串Newton的索引为:(6, 12)

对象的属性

Match对象的主要属性如下表所示。

21.PNG

 

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论