假设我有一个包含子串的字符串
# 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括号?
由于
答案 0 :(得分:6)
>>> re.findall('\([^()]*\)', string)
['(substring1)', '(substring2)']
重要的是要注意,正则表达式无法处理任意级别的嵌套。这将找到最深层嵌套的项目,但如果你正在寻找更复杂的东西,你最好放弃正则表达式。