当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在字符串末尾匹配系列(非嵌套)平衡括号》经验,为你挑选了2个好方法。

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

输入:

'hello (i) (m:foo)'

期望的输出:

['i', 'm:foo']

用于python脚本.Paren标记不能出现在彼此内部(没有嵌套),并且括号表达式可以用空格分隔.

它比初看起来更难,至少在我看来是如此.



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

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

甚至更短:

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

交代:

\(                     # opening paren
([^()]*)               # content, captured into group 1
\)                     # closing paren
(?=                    # look ahead for...
  (?:\s*\([^()]*\))*   #   a series of parens, separated by whitespace
  \s*                  #   possibly more whitespace after
  $                    #   end of string
)                      # end of look ahead



2> too much php..:

不需要使用正则表达式:

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

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

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有