删除未闭合的括号

Remove unclosed brackets

如何在关闭块后删除未关闭的括号及其内容。例如:

"(eaardf((eaar)(eaar" -> "eaardf((eaar)"

我这样做了,但我无法做出正确的正则表达式:

import re
str1 = '(eaardf((eaar)(eaar'
p = re.compile(r'\([a-z)]*.*')
p.sub('', str1)
>>> ''

请帮忙!

简答:你不能使用 Python 正则表达式。

这个link道文的评论

已经给出了非常详细的解释

中等答案:标准 re 模块无法处理递归模式,但 Pypi 中有一个模块声称能够:regex 2015.03.18 : Recursive and repeated patterns are supported. - beware untested because when things go too complex for re I prefere to build a dedicated parser eventually through PLY 这是 Python 的实现好的老 lex+yacc。