やってみた。
https://qiita.com/javacommons/items/9cdd4fdbf6e74c7f106b

def check_brackets1(s):
    dc = dict(zip('{}()[]','}{)(]['))
    lst = []
    for c in s:
        if lst and c == dc[lst[-1]]:
            del lst[-1]
        else:
            lst.append(c)
    return not lst
def check_brackets2(s):
    import re
    ptn = re.compile(r'({}|\(\)|\[\])')
    pre = ''
    while pre != s:
        pre = s
        s = ptn.sub('', s)
    return not s
lst = '(){}[] ([{}]) (} [(]) ([{}()]) [({})](]'.split()
for s in lst:
    print(s, check_brackets1(s), check_brackets2(s))