我对regex有一定的经验,但是我不知道以下几点。如果我有一个像这样的字符串:'[[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
non-greedy
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