ITEEDU

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

3.1编译后的Pattern对象

3.2 组与Match对象

3.2.1组的名字与序号

3.2.2 Match对象的方法

3.2.2 Match对象的方法

group([index|id])获取匹配的组,缺省返回组0,也就是全部值

groups() 返回全部的组

groupdict() 返回以组名为key,匹配的内容为values的字典

接上例:

>>> m.groupindex()
{'age': '24', 'tel': '88888888', 'name': 'Tom'}

start( [group] ) 获取匹配的组的开始位置

end( [group] ) 获取匹配的组的结束位置

span( [group] ) 获取匹配的组的(开始,结束)位置

expand( template ) 根据一个模版用找到的内容替换模版里的相应位置

这个功能比较有趣,它根据一个模版来用匹配到的内容替换模版中的相应位置,组成一个新的字符串返回。它使用\g<index|name>或 \index 来指示一个组。

接上例

>>> m.expand(r'name is \g<1> , age is \g , tel is \3')
'name is Tom , age is 24 , tel is 88888888'

除了以上这些函数外,Match对象还有些属性

pos 搜索开始的位置参数

endpos 搜索结束的位置参数

这两个是使用findall或match等函数时,传入的参数。在上面这个例子里,我们没有指定开始和结束位置,那么缺省的开始位置就是0,结束位置就是最后。

>>> m.pos
0
>>> m.endpos
19

lastindex 最后匹配的组的序号

>>> m.lastindex
3

lastgroup 最后匹配的组名

>>> m.lastgroup
'tel'

re 产生这个匹配的Pattern对象,可以认为是个逆引用

>>> m.re.pattern
'(?P[a-z]+)\\s+(?P\\d+)\\s+(?P\\d+).*'

得到了产生这个匹配的规则

string匹配的目标字符串

>>> m.string
'Tom 24 88888888 <='