LibreOffice Writer の正規表現 - 1 つを除く「すべて」を検索する

LibreOffice Writer の正規表現 - 1 つを除く「すべて」を検索する

テキスト(HTMLコード)があり、<p>クラス、ID、スタイル(ある場合)などでタグを見つける必要があります。私は次の正規表現を使用してこれを行っています: <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.*)(.*?)>

少なくとも私の場合はうまくいきます。

関連情報