fork download
  1. import re
  2.  
  3. pattern = r"{([\"'])[^{}]*\1}|\[([\"'])[^][]*\2]|\(([\"'])[^()]*\3\)|((?<={)[^{}]*(?=})|(?<=\()[^()]*(?=\))|(?<=\[)[^][]*(?=]))"
  4.  
  5. s = ("{abc} [abc] (abc) ['abc'] [\"abc\"]\n"
  6. "{\"abc\"} ('abc')(\"abc\")\n"
  7. "{abc](\"abc\"}{'abc\"}")
  8.  
  9. result = re.sub(pattern, lambda m: 'nnn' if m.group(4) else m.group(), s)
  10. print(result)
Success #stdin #stdout 0.03s 9584KB
stdin
Standard input is empty
stdout
{nnn} [nnn] (nnn) ['abc'] ["abc"]
{"abc"} ('abc')("abc")
{nnn}{nnn}