ITEEDU

3. 更深入的了解re的组与对象

3.1编译后的Pattern对象

3.2 组与Match对象

3.2.1组的名字与序号

3.2.2 Match对象的方法

3.2.1组的名字与序号

正则式中的每个组都有一个序号,它是按定义时从左到右的顺序从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对象的方法,看看我们能做些什么。