import re def replace_in_string(s, replacements): while True: replaced = False for target, replacement in replacements.items(): new_s = re.sub(target, replacement, s, flags=re.IGNORECASE) if new_s != s: s = new_s replaced = True if not replaced: break return s