如何使用Python正则表达式匹配最里面的括号集?

如何使用Python正则表达式匹配最里面的括号集?,python,regex,Python,Regex,我正在尝试使用Python获取以下字符串中()的最内层子字符串: x = "a (b) (c (d) e" 我希望下面的子字符串作为输出 (d) 我到目前为止所做的尝试如下 re.findall(r"\(.*?\)", x) re.findall(r"\(.*\)", x) 但它将输出作为外部字符串,这是没有用的。 我想匹配()之间可用的最里面的字符串。 这个例子是另一个复杂字符串的一部分,这个字符串恰当地显示了我的问题。我只需要

我正在尝试使用Python获取以下字符串中()的最内层子字符串:

x = "a (b) (c (d) e"
我希望下面的子字符串作为输出

(d)
我到目前为止所做的尝试如下

re.findall(r"\(.*?\)", x)
re.findall(r"\(.*\)", x)
但它将输出作为外部字符串,这是没有用的。 我想匹配
()
之间可用的最里面的字符串。
这个例子是另一个复杂字符串的一部分,这个字符串恰当地显示了我的问题。我只需要带括号的正则表达式解决方案。

我用于此目的的正则表达式是:

(\([^\(]*?\))
这是在

i、 e

这将返回字符串中所有最深级别的括号组

例如,字符串:

(玛丽(有一只(小))羔羊)

这个正则表达式返回“(little)”

在包含单独用括号括起来的部分的字符串中,正则表达式将返回在其自己的区域设置中嵌套最深的所有组

e、 g

(它的)羊毛(像(白色))像雪。”

将返回两个组,“(its)”和“(白色)”

我使用它来标记括号内的逻辑语句,通过一次只标记最深的嵌套子句,用扁平的标记替换它们,我可以迭代地解析整个逻辑语句,直到找不到剩余的括号为止


值得确保正在分析的语句的所有括号都匹配-例如,在您的开场白中,
x=“a(b)(c(d)e”
结尾缺少括号-应该用最后的
结束,例如
x=“a(b)(c(d)e)”
您可能需要发布更多示例字符串。d是如何表示“最里面的”字符串的?我在c前面看到一个打开的
,但没有关闭的
,因此在您的示例中,b和d的深度相同。
groups = [m for m in re.finditer(r"(\([^\(]*?\))",text)]