Python正则表达式:匹配嵌套括号?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (2255)

假设我有一个包含子串的字符串

# the substrings and the whole string surrounded by parenthesis
string = '((substring1)(substring2))'

我想使用正则表达式获取substring1和substring2,但我遇到了问题:(

这就是我现在拥有的:

match = re.search('(\(.*\))', string)
print match.groups()

问题是,结果显示:

('(substring1)(substring2)', )

似乎正则表达式只匹配第一个左括号和最后一个右括号。

换句话说,匹配的正则表达式就像..

(    match.....    )

代替

(    (match1)(match2)   )

如何让正则表达式捕获INNER括号?

提问于
用户回答回答于
>>> re.findall('\([^()]*\)', string)
['(substring1)', '(substring2)']

值得注意的是,正则表达式无法处理任意级别的嵌套。这将有助于找到最深层嵌套的项目,但如果你正在寻找更复杂的东西,最好放弃正则表达式。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励