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的解释的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式 groups和group有啥区别

Pythonre正则表达式

python学习:python中的正则表达式函数match和search()的区别

Python 正则表达式 匹配次数

day26 re正则表达式

正则表达式匹配与查找