2

У меня есть текст (HTML-код) и мне нужно найти теги <p> с их классами, идентификатором, стилями (если есть) и т.д. Я делаю это, используя следующие регулярные выражения: <p(.*?)> или (<p([^>]+))>

Образец моего текста здесь:

<p class="navi_buttons">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

<p class="reg">Aliquam mi sapien, rutrum eget sem vel, semper efficitur.<a href="xyz.html" class="topiclink">vitae velit</a></p>

<p class="THIS_SHOULD_BE_AVOIDED">Donec fringilla sapien vitae interdum volutpat.</p>

<p class="nav">Cras nec orci non dolor ultrices luctus sit amet vitae velit.</p>

Проблема в том, что мне нужно найти каждое вхождение <p> кроме одного определенного класса (т.е. я хочу избежать абзацев этого класса). Я не знаю, как написать исключение, которое рассматривается как строка, а не набор отдельных символов. Буду признателен за вашу помощь. С уважением,

2 ответа2

2

Я бы обманул, а не пытался выработать регулярное выражение.

Найдите тег, который вы не хотите менять, и замените его уникальной строкой:

Search: "<p class="nav">"  Replace: "***xxxxxx***"

Затем выполните все остальные теги <p> и отмените исходное изменение:

Search: "***xxxxxx***"  Replace: "<p class="nav">"
1

Проблема вроде бы решена. Я также спросил на форуме, посвященном LibreOffice, и получил ответ:

<p (?!.*EXCLUDING_PATTERN.*)(.*?)> Например: <p (?!.*"THIS.*)(.*?)>

Это работает, по крайней мере, в моем случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .