如何匹配Python正则表达式中最近括号内的字符串?

如何匹配Python正则表达式中最近括号内的字符串?,python,regex,Python,Regex,我需要一个正则表达式来匹配以下规则 例如:“(A或B或C或(D(5w)E))和(F(5w)(G或H或I))” 结果:“(D(5w)E)”,(F(5w)(G或H或I))' 我写了下面的正则表达式,但它给了我“(A或B或C或(D(5w)E)”,(F(5w)(G或H或I)”,这是不正确的 import re test = '(A or B or C or (D (5w) E)) and (F (5w) (G or H or I))' print re.findall('\((?:.*?)\(5w\

我需要一个正则表达式来匹配以下规则

例如:“(A或B或C或(D(5w)E))和(F(5w)(G或H或I))”

结果:“(D(5w)E)”,(F(5w)(G或H或I))'

我写了下面的正则表达式,但它给了我“(A或B或C或(D(5w)E)”,(F(5w)(G或H或I)”,这是不正确的

import re

test = '(A or B or C or (D (5w) E)) and (F (5w) (G or H or I))'

print re.findall('\((?:.*?)\(5w\)(?:.*?)\)', test)

有人能帮上忙吗?谢谢。

不要试图使用
*?
匹配任何非贪婪集,而是应该匹配不包含
的非贪婪集。所以只需将第一个
*?
模式替换为
[^(]*?
,将第二个替换为
[^]*?

>>> import re
>>>
>>> test=  '(A or B or C or (D (5w) E)) and (F (5w) (G or H or I))'
>>> re.findall('\((?:[^(]*?)\(5w\)(?:[^)]*?)\)', test)

['(D (5w) E)', '(F (5w) (G or H or I)']

谢谢您的帮助,但我认为第二个结果缺少“')。它应该是“(F(5w)(G或H或I))。如何匹配这种更复杂的字符串“((A或B或C)(5w)(D或E或F))”?