Skip to main content
 首页 » 编程设计

python之在使用正则表达式和双括号时遇到一些麻烦

2024年10月24日31mq0036

我对正则表达式有一些经验,但我无法弄清楚以下内容。如果我有这样的字符串:

'[[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] 等使用这个正则表达式

(\[[^\[\]]*\[.*?\][^\]\[]*\]) 

REGEX DEMO

IDEONE DEMO