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

23 投票
1 回答
30568 浏览
提问于 2025-04-16 12:16

我想用正则表达式找到两个方括号的第一次匹配。目前,我正在使用

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

这个方法可以处理像这样的行

[[string]] 

返回的结果是string

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

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

结果是

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

我漏掉了什么呢?

1 个回答

51

Python中的 *+?{n,m} 量词默认是贪婪的

使用这些量词的模式会默认尽可能多地匹配。在你的例子中,这意味着它会匹配到第一个括号和最后一个括号。在Python中,你可以通过在量词后面加一个 ? 来让它变得不贪婪(或者说“懒惰”)。在你的例子中,这样做会把中间部分变成 .*?

撰写回答