如何使用正则表达式匹配嵌套括号?

如何使用正则表达式匹配嵌套括号?

正如标题所说,这是一个示例输入:

 (outer   (center     (inner)
     (inner)
   center)
 ouer)
 (outer   (inner)
 ouer)
 (outer
 ouer)

当然,匹配的字符串将通过递归进行处理。

我希望第一个递归匹配:

 [
 (outer   (center     (inner)
     (inner)
   center)
 ouer),
 (outer   (inner)
 ouer),
 (outer
 ouer)]

不用说后续流程......


慕婉清6462132
浏览 4499回答 3
3回答

墨色风雨

不要使用正则表达式。相反,一个简单的递归函数就足够了:def&nbsp;recursive_bracket_parser(s,&nbsp;i): &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;i&nbsp;<&nbsp;len(s): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;s[i]&nbsp;==&nbsp;'(': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;recursive_bracket_parser(s,&nbsp;i+1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;s[i]&nbsp;==&nbsp;')': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;i+1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;process&nbsp;whatever&nbsp;is&nbsp;at&nbsp;s[i] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;+=&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;i
打开App,查看更多内容
随时随地看视频慕课网APP