Не существует универсального регулярного выражения для решения этой проблемы.Ваш код удаляет множество вещей, которые вы, возможно, захотите сохранить, например, запятые, восклицательные знаки, (полу) двоеточия и неанглийские буквы.Если у вас есть полный список всех заголовков в вашей базе данных, вы сможете написать скрипт, который будет составлять список всех символов, найденных во всех ваших заголовках.Если ваше регулярное выражение удаляет любой из этих символов, то вы рискуете столкнуться с проблемами (хотя прохождение этого теста не означает, что у вас не будет проблем).
В зависимости от того, какостальная часть вашего поиска реализована, вы можете удалить допустимые символы и при этом вернуть релевантные результаты поиска.В этом случае вы хотите, чтобы в вашем выражении допускались неанглийские символы (поскольку вы не хотите разбивать слово), но вы могли бы удалить все знаки препинания, которые не находятся внутри фразы, разделенной кавычками.Например, поиск red haired
должен дать вам все результаты, которые вы получите при поиске red-haired
, плюс несколько дополнительных.