分组
如果一个模式字符串中有一对圆括号括起来的部分,那么这部分就会作为一组,可以通过group
方法的参数获取指定的组匹配的字符串。当然,如果模式字符串中没有任何用圆括号括起来的部分,那么就不会对待匹配的字符串进行分组。
m = re.match(r'(\d\d\d)-(\d\d)','123-45')
在上面的代码中,模式字符串可以匹配以3个数字开头,后面跟着一个连字符(-),最后跟着2个数字的字符串。由于"\d\d\d"和"\d\d"都在圆括号中,所以这个模式字符串会将匹配成功的字符串分成两组,第1组的值是"123",第2组的值是"45",m.group(1)会获取第1个分组值,m.group(2)会获取第2个分组值。如果模式字符串改成下面的形式,虽然可以匹配"123-45",但"123-45"并没有被分组。
m = re.match(r'\d\d\d-\d\d','123-45')
[例 11.7] 本例演示了正则表达式中分组的各种情况
import re
m = re.match(r'(\d{3})-(\d{4})-([a-z]{2})','123-4567-xy')
if m is not None:
print(m.group())