介绍一下Match Object对象拥有的方法
1.group([group1,…])
返回匹配到的一个或者多个子组。如果是一个参数,那么结果就是一个字符串,如果是多个参数,那么结果就是一个参数一个item的元组。group1的默认值为0(将返回所有的匹配值).如果groupN参数为0,相对应的返回值就是全部匹配的字符串,如果group1的值是[1…99]范围之内的,那么将匹配对应括号组的字符串。如果组号是负的或者比pattern中定义的组号大,那么将抛出IndexError异常。如果pattern没有匹配到,但是group匹配到了,那么group的值也为None。如果一个pattern可以匹配多个,那么组对应的是样式匹配的最后一个。另外,子组是根据括号从左向右来进行区分的。
<p>>>> m=re.match("(\w+) (\w+)","abcd efgh, chaj")</p><p>>>> m.group() # 匹配全部</p><p>'abcd efgh'</p>
<p>>>> m.group(1) # 第一个括号的子组.</p><p>'abcd'</p><p>>>> m.group(2)</p><p>'efgh'</p>
<p>>>> m.group(1,2) # 多个参数返回一个元组
('abcd', 'efgh')</p><p>>>> m=re.match("(?P<first_name>\w+) (?P<last_name>\w+)","sam lee")
>>> m.group("first_name") #使用group获取含有name的子组
'sam'
>>> m.group("last_name")
'lee'</p>
下面把括号去掉
<p>>>> m=re.match("\w+ \w+","abcd efgh, chaj")</p><p>>>> m.group()</p><p>'abcd efgh'</p>
<p>>>> m.group(1)</p><p>Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
m.group(1)</p><p>IndexError: no such group</p>
如果一个组匹配多个,那么仅仅返回匹配的最后一个的。
m=re.match(r"(…)+",“a1b2c3”)
m.group(1)
‘c3’
m.group()
‘a1b2c3’
Group的默认值为0,返回正则表达式pattern匹配到的字符串
<p>>>> s="afkak1aafal12345adadsfa"</p><p>>>> pattern=r"(\d)\w+(\d{2})\w"</p><p>>>> m=re.match(pattern,s)</p><p>>>> print m</p><p>None</p><p>>>> m=re.search(pattern,s)</p><p>>>> m</p><p><_sre.SRE_Match object at 0x00C2FDA0></p><p>>>> m.group()</p><p>'1aafal12345a'</p><p>>>> m.group(1)</p><p>'1'</p><p>>>> m.group(2)</p><p>'45'</p><p>>>> m.group(1,2,0)</p><p>('1', '45', '1aafal12345a')</p>