def nested_matcher(n):
    return '[^][()]*?(?:[([]' * n + '[^][()]*?' + '[])][^][()]*?)*?' * n
import re
p = re.compile('[^][()]+|[([]' + nested_matcher(10) + '[])]')
print(p.findall('a(b[c]d)e'))
print(p.findall('a[b[c]d]e'))
print(p.findall('[hello [world]] abc [123] [xyz jkl]'))
Как обрабатывать вложенные скобки с помощью регулярных выражений?