def upper_repl(match):
    return match.group(1).upper()
re.sub('(<[^>]*>)', upper_repl, '<span> <hey <annoy!>> </span>')
Python, как сканировать строку и использовать верхний () между двумя символами?