加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:15:18 所属栏目:Python 来源:网络整理
导读:如何匹配出现在字符串末尾的一个或多个括号表达式? 输入: 'hello (i) (m:foo)' 期望的输出: ['i','m:foo'] 用于python脚本. Paren标记不能出现在彼此内部(no nesting),并且括号表达式可以用空格分隔. 它比初看起来更难,至少在我看来是如此. 解决方法 pare
如何匹配出现在字符串末尾的一个或多个括号表达式?

输入:

'hello (i) (m:foo)'

期望的输出:

['i','m:foo']

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

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读