[英]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.