Вместо того, чтобы пытаться захватить все возможные символы, дингбаты и любые другие символы, которые вы хотите удалить, я бы порекомендовал реализовать буквально все, что не является буквой, цифрой, пробелом или '-':
regex = re.compile('[^a-zA-Z0-9 -]')
name = regex.sub('', my_text)
Вы можете использовать классы персонажей в своем классе персонажей.Если у вас все в порядке с подчеркиванием в виде буквы, и вы хотите поддерживать буквы Юникода, следующее более кратко:
regex = re.compile('[^\w -]')
Проблема с вашим исходным выражением состоит в том, что ^
вне класса символов соответствуетначало строки.Ваше выражение может удалять только те символы, которые вы указали в начале строки.