Regex no LibreOffice Writer - encontrando “tudo” mas uma coisa

2

Eu tenho um texto (código html) e preciso encontrar <p> tags com suas classes, id, styles (se houver) etc. Eu estou fazendo isso usando os 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, eu quero evitar parágrafos dessa classe). Eu não sei como escrever uma exclusão que é tratada como uma string, não como um conjunto de caracteres individuais. Gostaria muito de receber sua ajuda. Atenciosamente,

    
por gordom 21.05.2015 / 00:55

2 respostas

2

Eu iria trapacear ao invés de tentar descobrir um regex.

Pesquise 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 tags <p> e inverta a alteração original:

Search: "***xxxxxx***"  Replace: "<p class="nav">"
    
por 21.05.2015 / 02:09
1

O problema parece estar resolvido. Eu perguntei no fórum dedicado ao LibreOffice também, e recebi a resposta:

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

Funciona, pelo menos no meu caso.

    
por 22.05.2015 / 17:07