group方法返回一个或者多个匹配的子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,整个匹配都被返回。 如果一个参数值为 0,即是group(0),相应的返回值就是整个匹配字符串;如果它是一个范围 [1..99],结果就是相应的括号组字符串。如果一个组号是负数,或者大于样式中定义的组数,一个
IndexError
索引错误就raise
。如果一个组包含在样式的一部分,并被匹配多次,就返回最后一个匹配。
上面有个例子,你也可以实践一下,group(0)时,返回整个匹配字符串
group(1)时,返回(\d+)匹配字符串
group(2)时,返回(\w+)匹配字符串
还有一种更复杂的写法
使用了 (?P<name>…)
语法, group(n)中,参数n就也可能是命名组合的名字。如果一个字符串参数在样式中未定义为组合名,一个 IndexError
就 raise
。
>>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds") >>> m.group('first_name') 'Malcolm' >>> m.group('last_name') 'Reynolds'