Chciałbym każde szukane słowo w tekście otoczyć znacznikami <mark>
i <\mark>
. Do tej pory wyszukiwałem i oznaczałem cały szukany string z użyciem wyrażenia regularnego:
Kod w JavaScript:
text.replace(new RegExp("(" + searchString + ")", 'gi'), "<mark>$1</mark>");
Teraz chcę podzielić szukany string na słowa i oznaczyć każde słowo osobno. Czy jest jakiś znany algorytm, który rozwiązuje taki problem? Nie chcę wykonywać dokładnie tego samego, co wyżej, dla każdego słowa po kolei, bo taka operacja mogłaby zamienić też znaczniki <mark>
i </mark>
z zaznaczania poprzednich słów.
Nie interesuje mnie kod w konkretnym języku, tylko sposób rozwiązania problemu. Myślałem o tym, żeby najpierw wyszukać każde słowo po kolei i zapamiętać ich pozycje w przeszukiwanym tekście, a na końcu wstawiać znaczniki, ale mogłoby się namieszać w przypadku, gdy końcówka jednego słowa jest taka sama, jak początek któregoś kolejnego lub początek jest taki sam, jak końcówka któregoś kolejnego. Mogę też ignorować wszystkie pozycje, które zaczynają się lub kończą po jakiejś znalezionej już pozycji i przed tą pozycją z dodaną ilością znaków szukanego słowa, ale poziom skomplikowania w takim przypadku wzrasta.