Я ищу хороший способ выделить ключевые слова в блоке html, убрав теги html. Я могу регулярное выражение для поиска ключевых слов в HTML-тегах, но я не нашел отличный способ поиска по тегам. Например, если ключевое слово «не связано», я хочу иметь возможность сделать это
<p>I am not<strong>bound to please thee</strong> with my answers.</p>
обертываются в теги подсветки, не нарушая тег "strong" (и делая HTML недействительным), и становятся:
<p>I am <span class="highlight">not</span><strong><span class="highlight">bound</span> to please thee</strong> with my answers.</p>
Основной проблемой является поддержание html в том виде, в котором оно есть, и обтекание блоков текста тегами подсветки. Мне нужно поддерживать оригинальный HTML. В противном случае я бы лишил теги.
Лучшее решение этого вопроса, о котором я могу подумать сейчас, будет заключаться в создании копии html и размещении встречных токенов там, где встречается каждый пробел, затем обрезании всех тегов и поиске подходящих фраз, затем оглядывании на оригинал и токенизированные строки и выяснение, где начинать строить теги выделения, затем начинать идти вперед, начиная и заканчивая отрезки выделения по мере необходимости от начала матча до конца. Это похоже на излишество. Я хотел бы что-то более элегантное, если это возможно.
Решение будет написано на C # или, возможно, на javascript, в зависимости.