我正在寻找使用正则表达式匹配两个方括号的第一个实例。目前,我正在做
regex = re.compile("(?<=(\[\[)).*(?=\]\])")
r = regex.search(line)
适用于像
这样的行[[string]]
返回string
但是当我在另一条线上尝试时:
[[string]] ([[string2]], [[string3]])
结果是
string]] ([[string2]], [[string3
我错过了什么?
答案 0 :(得分:47)
Python *
,+
,?
和{n,m}
量词默认为贪婪
使用上述量词量化的模式将默认匹配尽可能多的模式。在您的情况下,这意味着第一组括号和最后一组。在Python中,您可以通过在其后添加?
来使任何量词非贪婪(或“懒惰”)。在您的情况下,这将转换为表达式中间部分的.*?
。