繁体   English   中英

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

[英]How to match the innermost parenthesis set using Python regex?

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

x = "a (b) (c (d) e"

我想在子字符串下面作为 output

(d)

我到目前为止所尝试的如下

re.findall(r"\(.*?\)", x)
re.findall(r"\(.*\)", x)

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

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

(\([^\(]*?\))

这是在regex101演示的

IE

groups = [m for m in re.finditer(r"(\([^\(]*?\))",text)]

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

例如字符串:

.此正则表达式返回

在包含单独括起来的部分的字符串中,正则表达式将返回嵌套在其自己的语言环境中最深的所有组。

例如

and 将返回两组,

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

值得确保正在解析的语句的所有括号都匹配 - 例如,在你的开场白中, x = "a (b) (c (d) e"末尾缺少一个括号 - 应该用 final 结束) ,例如x = "a (b) (c (d) e)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM