Если HTML-код, который вы анализируете, действителен и всегда соответствует известному стандартному формату, вы можете использовать не жадные шаблоны, чтобы удалить большую часть того, что вам не нужно.
Эти образцы необходимо будет изменить на основе инструмента / инфраструктуры, которые вы используете для обработки регулярных выражений. Я не экранирую специальные символы для краткости.
Для соответствия любым тегам абзаца:
<p.*?>(.*?)</p>
Вы бы заменили эти совпадения на $ 1 (или любой другой синтаксис, необходимый для доступа к группам).
Важно использовать не жадные (?) Шаблоны, чтобы избежать случайного сопоставления двух несвязанных начальных / конечных тегов. Например:
<p.*>(.*)</p>
Будет вести себя совсем по-другому. В случае следующего примера HTML, он не будет правильно соответствовать двум абзацам:
<p>Lorem ipsum.</p><p>Lorem ipsum.</p>
Вместо этого он будет соответствовать "<p>Lorem ipsum.</p><p>
" в качестве первой части, что приведет к потере содержимого.
Если вам нужно сопоставить абзацы с определенными классами, вы можете использовать что-то вроде этого:
<p.*?class="delete".*?>(.*?)</p>
Когда вещи начинают зависать, когда вы начинаете работать с нестандартизированным HTML. Например, все это допустимый HTML, но шаблон для его очистки будет уродливым:
<p>no class</p>
<p class=delete>no quotes</p>
<p class="delete">double quotes</p>
<p class='delete'>single quotes</p>
<p>space in closing tag</p >
<p>no closing tag