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

Rio*_*Rio 21 python regex

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

regex = re.compile("(?<=(\[\[)).*(?=\]\])")
r = regex.search(line)
Run Code Online (Sandbox Code Playgroud)

适用于像

[[string]] 
Run Code Online (Sandbox Code Playgroud)

回报 string

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

[[string]] ([[string2]], [[string3]])
Run Code Online (Sandbox Code Playgroud)

结果是

string]] ([[string2]], [[string3
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Dre*_*rew 47

蟒蛇*,+,?{n,m}量词是由默认的贪婪

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

  • 轻微的挑剔.*正则表达式*基本上不贪婪或不贪婪.python`re`包提供了正则表达式的贪婪,递归回溯实现.(但正确答案为+1) (14认同)