在字符串末尾匹配一系列(非嵌套的)平衡圆括号

2024-05-23 14:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如何匹配出现在字符串末尾的一个或多个括号表达式?在

输入:

'hello (i) (m:foo)'

期望输出:

^{pr2}$

用于python脚本。Paren标记不能出现在彼此的内部(no nesting),并且括号表达式可以用空格隔开。在

这比乍看起来难,至少在我看来是这样。在


Tags: no字符串标记脚本hellofoo表达式括号
2条回答

您不需要使用regex:

def splitter(input):
    return [ s.rstrip(" \t)") for s in input.split("(") ][1:]
print splitter('hello (i) (m:foo)')

注意:只有当您的输入已知有效时,此解决方案才有效。请参阅MizardX的解决方案,该方案适用于任何输入。在

paren_pattern = re.compile(r"\(([^()]*)\)(?=(?:\s*\([^()]*\))*\s*$)")

def getParens(s):
  return paren_pattern.findall(s)

甚至更短:

^{pr2}$

解释:

^{3}$

相关问题 更多 >