假设我有一个包含子串的字符串
# 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括号?
发布于 2018-08-24 10:42:24
>>> re.findall('\([^()]*\)', string)
['(substring1)', '(substring2)']
值得注意的是,正则表达式无法处理任意级别的嵌套。这将有助于找到最深层嵌套的项目,但如果你正在寻找更复杂的东西,最好放弃正则表达式。
https://stackoverflow.com/questions/-100000653
复制相似问题