我对正则表达式有一些经验,但我无法弄清楚以下内容。如果我有这样的字符串:
'[[1,2,3],[3,5,3],[9,8,9]] aoeu [5,6,9] aoeu [[4,5,5]] '
什么正则表达式模式将分别提取 [[1,2,3],[3,5,3],[9,8,9]] 和 [[4 ,5,5]]? (封闭的双括号内的任何组)。显然,'\[\[.*\]\]' 是一种过于贪婪的模式...
请您参考如下方法:
如果输入完全符合您的模式,那么您可以使用它来使您的regex 非贪婪
p = re.compile(ur'\[\[.*?\]\]')
test_str = u"[[1,2,3],[3,5,3],[9,8,9]] aoeu [5,6,9] aoeu [[4,5,5]]"
print(re.findall(p, test_str))
处理像 [[1,2,3],[3,5,3],3], [1,2,3,[3,5,3 ],3] 等使用这个正则表达式
(\[[^\[\]]*\[.*?\][^\]\[]*\])
