如何匹配Python正则表达式中最近括号内的字符串?
我需要一个正则表达式来匹配以下规则 例如:“(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)”,这是不正确的如何匹配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\
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))”?