Match对象
re.MatchObject被用于布尔判断的时候,始终返回True,所以你用 if 语句来判断某个 match() 是否成功是安全的。
它有以下方法和属性:
expand(template)
用template做为模板,将MatchObject展开,就像sub()里的行为一样,看例子:
>>> m = re.match('a=(d+)', 'a=100')
>>> m.expand('above a is g<1>')
'above a is 100'
>>> m.expand(r'above a is 1')
'above a is 100'
group([group1, ...])
返回一个或多个子组。如果参数为一个,就返回一个子串;如果参数有多个,就返回多个子串注册的元组。如果不传任何参数,效果和传入一个0一样,将返回整个匹配。如果某个groupN未匹配到,相应位置会返回None。如果某个groupN是负数或者大于group的总数,则会抛出IndexError异常。
>>> m = re.match(r"(w+) (w+)", "Isaac Newton, physicist")
>>> m.group(0) # 整个匹配
'Isaac Newton'
>>> m.group(1) # 第一个子串
'Isaac'
>>> m.group(2) # 第二个子串
'Newton'
>>> m.group(1, 2) # 多个子串组成的元组
('Isaac', 'Newton')
如果有其中有用(?P...)这种语法命名过的子串的话,相应的groupN也可以是名字字符串。例如:
>>> m = re.match(r"(?P<first_name>w+) (?P<last_name>w+)", "Malcolm Reynolds")
>>> m.group('first_name')
'Malcolm'
>>> m.group('last_name')
'Reynolds'
如果某个组被匹配到多次,那么只有最后一次的数据,可以被提取到:
>>> m = re.match(r"(..)+", "a1b2c3") # 匹配到3次
>>> m.group(1) # 返回的是最后一次
'c3'
groups([default])
返回一个由所有匹配到的子串组成的元组。default参数,用于给那些没有匹配到的组做默认值,它的默认值是None
例如:
>>> m = re.match(r"(d+).(d+)", "24.1632")
>>> m.groups()
('24', '1632')
default的作用:
>>> m = re.match(r"(d+).?(d+)?", "24")
>>> m.groups() # 第二个默认是None
('24', None)
>>> m.groups('0') # 现在默认是0了
('24', '0')
groupdict([default])
返回一个包含所有命名组的名字和子串的字典,default参数,用于给那些没有匹配到的组做默认值,它的默认值是None,例如:










