python正则表达式re 中m.group和m.groups的解释,m.groupm.groups,转载:http://


转载:http://www.cnblogs.com/kaituorensheng/archive/2012/08/20/2648209.html

先看代码instance:

 1 >>> a="123abc456" 2 >>> import re 3 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)) 4 123abc456 5 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)) 6 123 7 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)) 8 abc 9 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(3))10 45611 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group())12 123abc45613 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups())14 (‘123‘, ‘abc‘, ‘456‘)15 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups())16 (‘3‘, ‘c‘, ‘456‘)17 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups(1))18 (‘3‘, ‘c‘, ‘456‘)19 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group(0))20 123abc45621 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group())22 123abc456

究其因:

1. 正则表达式中的三组括号把匹配结果分成三组

m.group() == m.group(0) == 所有匹配的字符(即匹配正则表达式整体结果)group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。m.groups() 返回所有括号匹配的字符,以tuple格式。m.groups() == (m.group(0), m.group(1), ...)

2. 没有匹配成功的,re.search()返回None

3. 当然郑则表达式中没有括号,group(1)肯定不对了。

python正则表达式re 中m.group和m.groups的解释

评论关闭