Regex in LibreOffice Writer - „alles“ außer einer Sache finden

Regex in LibreOffice Writer - „alles“ außer einer Sache finden

Ich habe einen Text (HTML-Code) und muss Tags mit ihren Klassen, IDs, Stilen (sofern vorhanden) usw. finden <p>. Dazu verwende ich die folgenden regulären Ausdrücke: <p(.*?)>oder(<p([^>]+))>

Das Muster meines Textes ist hier:

<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>

Das Problem besteht darin, dass ich jedes Vorkommen des Tags außer einer bestimmten Klasse finden muss <p>(d. h. ich möchte Absätze dieser Klasse vermeiden). Ich weiß nicht, wie ich eine Ausnahme schreiben soll, die als Zeichenfolge behandelt wird und nicht als Satz einzelner Zeichen. Ich wäre für Ihre Hilfe dankbar. Mit freundlichen Grüßen,

Antwort1

Ich würde lieber schummeln, als zu versuchen, einen regulären Ausdruck auszuarbeiten.

Suchen Sie nach dem Tag, das Sie nicht ändern möchten, und ersetzen Sie es durch eine eindeutige Zeichenfolge:

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

Führen Sie dann die Operation für alle anderen <p>Tags aus und machen Sie die ursprüngliche Änderung rückgängig:

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

Antwort2

Das Problem scheint gelöst zu sein. Ich habe auch im LibreOffice-Forum nachgefragt und die Antwort erhalten:

<p (?!.*EXCLUDING_PATTERN.*)(.*?)>z.B:<p (?!.*"THIS.*)(.*?)>

Es funktioniert, zumindest in meinem Fall.

verwandte Informationen