Regex в LibreOffice Writer — поиск «всего», кроме одного

Regex в LibreOffice Writer — поиск «всего», кроме одного

У меня есть текст (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>тега, кроме одного определенного класса (т.е. я хочу избежать абзацев этого класса). Я не знаю, как написать исключение, которое будет рассматриваться как строка, а не как набор отдельных символов. Я был бы признателен за вашу помощь. С уважением,

решение1

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

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

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

Затем выполните операцию со всеми остальными <p>тегами и отмените первоначальное изменение:

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

решение2

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

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

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

Связанный контент