Я пытаюсь написать функцию для вычисления вероятности того, что две строки означают одно и то же. Для этого я конвертирую в нижний регистр и удаляя специальные символы из строк, прежде чем сравнивать их. В настоящее время я удаление строки «.com» и „“ с помощью String.replace(substring, '')
и специальных символов с помощью String.replace(regex, '')
Эффективно удалять общие шаблоны из строки
str = str.toLowerCase()
.replace('.com', '')
.replace('the', '')
.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Есть ли более регулярное выражение, которое я могу использовать, чтобы удалить общие закономерности, как «.com» и « ', а также специальные символы? Или каким-то другим способом сделать это более эффективным?
По мере роста моего набора данных я могу найти другие распространенные бессмысленные шаблоны, которые необходимо удалить, прежде чем пытаться сопоставить строки и хотелось бы избежать повышения производительности цепочки больше replace
функций.
Примеры:
Рыба & Чипсы? => Рыба чипсы
= stackoverflow.com> StackOverflow
Властелин Колец => Властелин колец
Вы можете поделиться несколькими примерами? – gurvinder372
Почему бы не сохранить ваши общие/бессмысленные шаблоны в массиве, а затем преобразовать их в шаблон регулярного выражения набора символов, прежде чем выполнять замену, чтобы вы могли просто заменить соответствия этому шаблону пробелами? –
Вы можете использовать регулярное выражение с OR между строками. – Itamar