fork download
  1. import re
  2. text = "[B] blah blah (foo) blah [/B]\n[B] (foo) (bar) [/B]"
  3. print(re.sub(r'(?s)\[B].*?\[/B]', lambda x: re.sub(r'\([^()]*\)', r'[C]\g<0>[/C]', x.group()), text))
Success #stdin #stdout 0.02s 9680KB
stdin
Standard input is empty
stdout
[B] blah blah [C](foo)[/C] blah [/B]
[B] [C](foo)[/C] [C](bar)[/C] [/B]