Regex en LibreOffice Writer: encontrar "todo" menos una cosa

Regex en LibreOffice Writer: encontrar "todo" menos una cosa

Tengo un texto (código html) y necesito encontrar <p>etiquetas con sus clases, ID, estilos (si los hay), etc. Estoy haciendo esto usando las siguientes expresiones regulares: <p(.*?)>o(<p([^>]+))>

El patrón de mi texto está aquí:

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

El problema es que necesito encontrar todas las apariciones de <p>etiquetas excepto una clase determinada (es decir, quiero evitar párrafos de esta clase). No sé cómo escribir una exclusión que se trate como una cadena, no como un conjunto de caracteres individuales. Apreciaría tu ayuda. Atentamente,

Respuesta1

Haría trampa en lugar de intentar elaborar una expresión regular.

Busque la etiqueta que no desea cambiar y reemplácela con una cadena única:

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

Luego realice la operación en todas las demás <p>etiquetas e invierta el cambio original:

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

Respuesta2

El problema parece estar resuelto. También pregunté en el foro dedicado a LibreOffice y obtuve la respuesta:

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

Funciona, al menos en mi caso.

información relacionada