匹配Python正则表达式搜索的第一个实例

时间:2011-02-22 05:21:50

标签: python regex

我正在寻找使用正则表达式匹配两个方括号的第一个实例。目前,我正在做

regex = re.compile("(?<=(\[\[)).*(?=\]\])")
r = regex.search(line)

适用于像

这样的行
[[string]] 

返回string

但是当我在另一条线上尝试时:

[[string]] ([[string2]], [[string3]])

结果是

string]] ([[string2]], [[string3

我错过了什么?

1 个答案:

答案 0 :(得分:47)

Python *+?{n,m}量词默认为贪婪

使用上述量词量化的模式将默认匹配尽可能多的模式。在您的情况下,这意味着第一组括号和最后一组。在Python中,您可以通过在其后添加?来使任何量词非贪婪(或“懒惰”)。在您的情况下,这将转换为表达式中间部分的.*?