[RESOLVIDO] Remover tags THML específicas com RegExp

4 respostas
C

Olá amigos;

Seguinte, quero remover tags HTML de uma String.
Isso é fácil, eu sei, fiz assim:

public String removerTags(String html) { return html.replaceAll("\\<(/?[^\\>]+)\\>", " ").replaceAll("\\s+", " ").trim(); }

O problema é que, não quero remover todas as tags… quero que a tag "<span style=“background-color: yellow”> (texto) " fique…

É possível fazer isso sem muita gambiarra?

Abraço

4 Respostas

M

Aconselho usar um HtmlParser. Usar regex com html é extremamente difícil e altamente propensa a problema. Já pensou se você tiver uma tag mal formada? Algo tipo:

<tag><tag><tag>Informacao</tag></tag>

Fazer uma regex nesse caso é bastante complicado, você não vai saber qual tag fecha qual tag.
Procurando por HtmlParser Java no google, achei isso, mas você pode procurar por outras possibilidades:
http://htmlparser.sourceforge.net/

C

Então, meu problema é justamente esse…
quero exibir esse texto em uma tela com GWT, utilizo o safeHTMLBuilder, e ele explode quando uma tag tá quebrada… mas eu não quero tirar todas as tags, só as que não forem as minhas, no caso, aquele span específico aí…

abraço

E

Sempre me ensinaram que se você tem um problema que pode ser difícil de resolver, é importante você imaginar como resolver o problema contrário, e relacionar a resposta do problema contrário com o seu problema original.

No seu caso, o problema contrário é tirar apenas os “”. Se os “” estiverem bem-formados, porque você é que os pôs, é fácil tirá-los com uma expressão regular ou um replace simples.

O que eu sugeriria é o seguinte: troque esses “” inicialmente por alguma coisa parecida com ele, mas que não é HTML.
Por exemplo, troque por {span}. O modo de fazer isso fica como exercício.
” --> “{span}{/span}”
Isso é parecido com o problema de tirar o (que é o problema contrário de deixar só o ).

A seguir, pegue o que sobrou e tire as tags. Certo?
“{span}{/span}” --> “{span}{/span}”

Depois disso, volte o {span} para - de novo. O que você vai ter é algo sem as tags, exceto pela tag .
“{span}{/span}” --> “

C

eu pensei em fazer isso… mas enfim, acabei desviando o problema de modo diferente…

é que esse span era para fazer highlight nos resultados da minha busca que vinham do lucene… então, antes de fazer o highlight (que adicionava os spans), eu removi todas as tags… ae ficou certo…

valeu a ajuda aí, anyway.

abraço

Criado 8 de setembro de 2011
Ultima resposta 8 de set. de 2011
Respostas 4
Participantes 3