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)