python正则表达式re 中m.group和m.groups的解释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python正则表达式re 中m.group和m.groups的解释相关的知识,希望对你有一定的参考价值。
转载: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 456 11 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group()) 12 123abc456 13 >>> 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 123abc456 21 >>> 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的解释的主要内容,如果未能解决你的问题,请参考以下文章