Skip to main content
 首页 » 编程设计

python之在字符串中查找子字符串的少量出现

2025年05月04日44me-sa

我正在尝试用 re 解析一些数学表达式(括号内容)。

我已经试过了:

>>> re.compile("\(.*\)").findall("(1 + 2) + (3 + 4)") 
['(1 + 2) + (3 + 4)'] 

但我发现只有最大的出现,包括最后一个和第一个括号之间的内容。但我只想得到最小的。

我怎样才能做到这一点?

>>> re.compile(<expr>).findall("(1 + 2) + (3 + 4)") 
['(1 + 2)', '(3 + 4')] 

我已经尝试替换 <expr>与 "\((?![\(\)])+\)" (排除括号内有括号的事件)但它似乎不起作用。

请您参考如下方法:

不是用 .* 匹配所有内容,而是从匹配中排除右括号字符:

>>> re.compile("\([^)]*\)").findall("(1 + 2) + (3 + 4)") 
['(1 + 2)', '(3 + 4)'] 

看我在用

[^)]* 

代替

.*