Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482200
  • 博文数量: 135
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 1441
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-05 20:39
文章分类
文章存档

2012年(2)

2011年(130)

2009年(2)

2008年(1)

我的朋友

分类:

2011-09-16 15:37:43

26.4 re.findall()的非贪婪模式



Q:

>>> re.findall(r'\[My\](.+)\[/My\]', r'[My]a[/My]\n[My]b[/My]')
['a', 'b']
>>> re.findall(r'\[My\](.+)\[/My\]', r'[My]a[/My]c[My]b[/My]')
['a[/My]c[My]b']

原始意图是无论re.findall()第二形参是什么,都得到['a', 'b'],但现在第二条命
令没有进行最小匹配,请问有办法解决吗?其中c可以是任意字符、字符串。

A: dxh@nsfocus

对于.、*来说,默认是贪婪模式(greedy),在其后增加一个?号,则切换至非贪婪模
式,或者说进行最小匹配。

>>> re.findall(r'\[My\](.+?)\[/My\]', r'[My]a[/My]c[My]b[/My]')
['a', 'b']
阅读(2764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~