text:
text1 = 'xx(aa)(bb)xx'
text2 = 'xx(aa(bb))xx'
预期:
('aa', 'bb')
('aa(bb)', 'bb')
我的方法,但它没有达到预期。
re.compile(r'\(\s?(.+?)\s?\)')
regex
模块并使用。import regex
texts = ['xx(aa)(bb)xx', 'xx(aa(bb))xx']
rx = r'\(((?:[^()]++|(?R))*)\)'
for text in texts:
print(regex.findall(rx, text, overlapped=True))
查看Python演示。输出:
['aa', 'bb']
['aa(bb)', 'bb']
\(((?:[^()]++|(?R))*)\)
正则表达式是一种 常见的 PCRE 兼容正则表达式,用于匹配嵌套括号之间的字符串,我添加了一个捕获组来获取括号之间的内容。overlapped=True
选项传递给 regex.findall
。