Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1605823
  • 博文数量: 695
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4027
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(695)

文章存档

2018年(18)

2017年(74)

2016年(170)

2015年(102)

2014年(276)

2013年(55)

分类: Python/Ruby

2015-10-19 16:22:29

python正则表达式中的分组 group

2013年11月10日 ? 综合 ? 共 830字 ? 字号 ? 评论关闭

组是通过 "(" 和 ")" 元字符来标识的。 "(" 和 ")" 有很多在数学表达式中相同的意思;它们一起把在它们里面的表达式组成一组。举个例子,你可以用重复限制符,象 *, +, ?, 和 {m,n},来重复组里的内容,比如说(ab)* 将匹配零或更多个重复的 "ab"。

例子:如果不引入括号,增个表达式作为一个组,是group(0)

>>> import re

>>> p=re.compile('\d-\d-\d')
>>> m=p.match('2-3-1')
>>> m.groups()
()
>>> m.group()
'2-3-1'
>>> m.group(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: no such group

如果引入括号,可以将上面的表达式分成3组,如下

>>> p=re.compile('(\d)-(\d)-(\d)')

>>> m=p.match('1-2-3')

>>> m.group()

'1-2-3'

>>> m.group(1)

'1'

>>> m.group(0,2,1)

('1-2-3', '2', '1')
也可以给各个组取名字,例如,给第一个数组取名叫first

>>> p=re.compile('(?P<first>\d)-(\d)-(\d)')

>>> m=p.match('1-2-3')

>>> m.group(1)

'1'

>>> m.group('first')

'1'

转载:http://blog.csdn.net/caianye/article/details/6901289

更多更全的功能,可以参见维基百科%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97

阅读(666) | 评论(0) | 转发(0) |
0

上一篇:进程VS线程

下一篇:字符编码

给主人留下些什么吧!~~