re.findall()的非贪婪模式(最小匹配)

2799阅读 0评论2011-09-16 jian_g_
分类:

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']
上一篇:JavaScript IDE开发工具:1st JavaScript Editor Pro
下一篇:django中配置静态url