匹配Python正则表达式搜索的第一个实例
我想用正则表达式找到两个方括号的第一次匹配。目前,我正在使用
regex = re.compile("(?<=(\[\[)).*(?=\]\])")
r = regex.search(line)
这个方法可以处理像这样的行
[[string]]
返回的结果是string
但是当我在另一行上尝试时:
[[string]] ([[string2]], [[string3]])
结果是
string]] ([[string2]], [[string3
我漏掉了什么呢?
1 个回答
51
Python中的 *
、+
、?
和 {n,m}
量词默认是贪婪的
使用这些量词的模式会默认尽可能多地匹配。在你的例子中,这意味着它会匹配到第一个括号和最后一个括号。在Python中,你可以通过在量词后面加一个 ?
来让它变得不贪婪(或者说“懒惰”)。在你的例子中,这样做会把中间部分变成 .*?
。