import re
pattern = r"{([\"'])[^{}]*\1}|\[([\"'])[^][]*\2]|\(([\"'])[^()]*\3\)|((?<={)[^{}]*(?=})|(?<=\()[^()]*(?=\))|(?<=\[)[^][]*(?=]))"
s = ("{abc} [abc] (abc) ['abc'] [\"abc\"]\n"
"{\"abc\"} ('abc')(\"abc\")\n"
"{abc](\"abc\"}{'abc\"}")
result = re.sub(pattern, lambda m: 'nnn' if m.group(4) else m.group(), s)
print(result)
aW1wb3J0IHJlCgpwYXR0ZXJuID0gciJ7KFtcIiddKVtee31dKlwxfXxcWyhbXCInXSlbXl1bXSpcMl18XCgoW1wiJ10pW14oKV0qXDNcKXwoKD88PXspW157fV0qKD89fSl8KD88PVwoKVteKCldKig/PVwpKXwoPzw9XFspW15dW10qKD89XSkpIgoKcyA9ICgie2FiY30gW2FiY10gKGFiYykgWydhYmMnXSBbXCJhYmNcIl1cbiIKICAgICAgICAgICAgIntcImFiY1wifSAoJ2FiYycpKFwiYWJjXCIpXG4iCiAgICAgICAgICAgICJ7YWJjXShcImFiY1wifXsnYWJjXCJ9IikKCnJlc3VsdCA9IHJlLnN1YihwYXR0ZXJuLCBsYW1iZGEgbTogJ25ubicgaWYgbS5ncm91cCg0KSBlbHNlIG0uZ3JvdXAoKSwgcykKcHJpbnQocmVzdWx0KQ==