内容提要:
1.Match对象简介
2.Match对象的方法们:
expand group __getitem__ groups groupdict start end span pos endpos lastindex lastgroup string
1.Match对象简介
match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生。可以直接当做bool值使用,如果匹配则相当于True,如果不匹配,则返回None,相当于False
#示例:
name='张三'
if re.match('张\w+',name):
print('{},你好!'.format(name))
# 张三,你好!
2.Match对象的方法们:
2.1 match.expand(template)
说明:该方法利用一个类似sub方式,将template字符串中指定的利用反斜杠标示的数字或组名替换为相应组中值。
m=re.match(r'(?P<first_name>\w+) (?P<last_name>\w+)','Eric Brown')
print(m.group(0))
# Eric Brown
print(m.group(1))
# Eric
print(m.group(2))
# Brown
print(m.expand(r'His name is \1 \2'))
# His name is Eric Brown
print(m.expand(r'His name is \g<1> \g<2>'))
# His name is Eric Brown
print(m.expand(r'His name is \g<first_name> \g<last_name>'))
# His name is Eric Brown
2.2 match.group([group1, ...])
几点说明:
1.如果组中组出的参数是一个0-99的单个数值,则返回一个字符串。
2.如果组中组出的参数0,则返回整个匹配的值。
3.如果组中组出的参数是负数或超出组的最大长度,则给出越界错误。
4.如果组中组出的参数是两个值,则给出由两个值分别对应的值的一个tuple。
print(m.group(1,2))
('Eric', 'Brown')
5.如果正则表达式中的一个组匹配了多个值,则相应的组只保存最后匹配的值。
6.如果正则表达式中的一个组没有匹配到值,则相应的组为None。
2.3 match.__getitem__(g)
该方法定义一个更加简单的就去访问match的中组,即:
m[0]<==>m.group(0)
# 示例:
print(m[0])
# Eric Brown
print(m[1])
# Eric
注意:不能使用多个值进行读取
2.4 match.groups(default=None)
以tuple的形式返回所有的子组中的内容:
print(m.groups())
# ('Eric', 'Brown')
2.5 match.groupdict(default=None)
以字典的方式返回所有的子组中的内容#
print(m.groupdict())
# {'first_name': 'Eric', 'last_name': 'Brown'}
2.6 match.start([group]),match.end([group])
返回正则表达式中的组匹配的子字符串在原字符串中的起始与结束位置,默认值为0示例:
print(m.start(),m.end())
# 0 10
print(m.start(1),m.end(1))
# 0 4
print(m.start(2),m.end(2))
# 5 10
print(m.string[m.start(2):m.end(2)])
# Brown 等价于 m.group(2) 等价于 m[2]
如果正则表达式中的组没有匹配,则相应的开始与结束均为-1,如果正则表达式匹配到了一个空字符串,则m.start()与m.end()相等。
2.7 match.span([group])
返回一个(m.start(),m.end())的元组。
# 示例:
print(m.span())
# (0, 10)
print(m.span(1))
# (0, 4)
2.8 match.pos
通过正则表达式对象传递值,表示正则表达式将从何处开始匹配
2.9 match.endpos
通过正则表达式对象传递值,表示正则表达式将从何处结束匹配
# 示例如下:
p=re.compile('\d+')
m=p.match('123456',2,4)
print(m[0])
# 34
2.10 match.lastindex
最后一个匹配到的组的序号。与正则表达式中的组有关,如果全部不匹配,则为None
m=re.match(r'(?P<first_name>\w+) (?P<last_name>\w+)','Eric Brown')
print(m.lastindex)
# 2
2.11 match.lastgroup
最后一个匹配到的组的名称。与正则表达式中的组有关。注意:如果匹配的组没有名字或才根本没有匹配,则返回None
print(m.lastgroup)
# last_name
2.12 match.string
通过search或match方法传递的参数,待匹配的字符串
print(m.string)
# Eric Brown