Regex no LibreOffice Writer - encontrando "tudo", menos uma coisa

Regex no LibreOffice Writer - encontrando "tudo", menos uma coisa

Tenho um texto (código html) e preciso encontrar <p>tags com suas classes, id, estilos (se houver) etc. Estou fazendo isso usando as seguintes regexs: <p(.*?)>ou(<p([^>]+))>

O padrão do meu texto está aqui:

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

O problema é que preciso encontrar todas as ocorrências de <p>tag, exceto uma determinada classe (ou seja, quero evitar parágrafos desta classe). Não sei como escrever uma exclusão que seja tratada como uma string, não como um conjunto de caracteres individuais. Gostaria muito de receber sua ajuda. Atenciosamente,

Responder1

Eu trapacearia em vez de tentar descobrir um regex.

Procure a tag que você não deseja alterar e substitua-a por uma string exclusiva:

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

Em seguida, faça sua operação em todas as outras <p>tags e reverta a alteração original:

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

Responder2

O problema parece estar resolvido. Perguntei também no fórum dedicado ao LibreOffice e obtive a resposta:

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

Funciona, pelo menos no meu caso.

informação relacionada