我想要使用正则表达式找到第一个匹配两个方括号的实例。目前,我正在做:regex = re.compile("(?<=(\[\[)).*(?=\]\])") r = regex.search(line) 以下适用于像这样的行:[[string]] 返回 string 但是当我尝试将它放在另一行时:[[string]] ([[string2]], [[string3]]) 结果是string]] ([[string2]], [[string3 我错过了什么?
Python中的*, +, ?和{n,m}量词默认都是贪婪的 使用上述量词进行匹配时,默认会尽可能多地匹配。在您的情况下,这意味着匹配第一个括号和最后一个括号。在Python中,您可以通过在量词后面加上?来使任何量词变为非贪婪(或“懒惰”)。在您的情况下,这将转换为正则表达式中间部分的.*?。
re
包提供了一个贪婪、递归回溯实现的正则表达式。(虽然答案正确,加一分) - SingleNegationElimination