正则式中的每个组都有一个序号,它是按定义时从左到右的顺序从1开始编号的。其实,re的正则式还有一个0号组,它就是整个正则式本身。
我们来看个例子
>>> p=re.compile( r’(?P[a-z]+)\s+(?P \d+)\s+(?P \d+).*’ , re.I ) >>> p.groupindex {'age': 2, 'tel': 3, 'name': 1} >>> s=’Tom 24 88888888 <=’ >>> m=p.search(s) >>> m.groups() # 看看匹配的各组的情况 ('Tom', '24', '8888888') >>> m.group(‘name’) # 使用组名获取匹配的字符串 ‘Tom’ >>> m.group( 1 ) # 使用组序号获取匹配的字符串,同使用组名的效果一样 >>> m.group(0) # 0 组里面是什么呢? 'Tom 24 88888888 <='
原来0组就是整个正则式,包括没有被包围到组里面的内容。当获取0组的时候,你可以不写这个参数。m.group(0)和m.group()的效果是一样的:
>>> m.group() 'Tom 24 88888888 <='
接下来看看更多的Match对象的方法,看看我们能做些什么。