У меня есть абзац текста, который может содержать одно слово («собака»), которое также содержится в другом открытом составном слове («выгула собак»). У меня есть словарь слов, которые должны точно соответствовать слову, найденному в абзаце.
Я сопоставляю термины глоссария и создаю объект значения ключа, который будет использоваться в .replace()
const wordTermArray = this.props.glossaryTerms.map(i => [
`${i.glossaryItem}`,
`<a href="#" class="glossary-item">${i.glossaryItem}</a>`,
]);
const wordTermObject = Object.fromEntries(wordTermArray);
А вот этот объект используется в .replace()
const replaceText = text.replace(
/(\w+)/g,
(match, key) => wordTermObject[key] || match,
);
Но проблема в том, что использование .replace () может совпасть с "собакой" и "собакой" в "собачьем ходу". Итак, как бы я соответствовал слову или открытому составному слову в точности так, как оно выглядит в глоссарии, без перекрестной замены друг друга?
Я не ограничен Regex, а также не против использования библиотеки.