Existe-t-il une expression régulière capable de supprimer complètement une balise HTML ? Au fait, j'utilise Java.
Réponses
Trop de publicités?Vous devriez plutôt utiliser un analyseur HTML. J'aime htmlCleaner Je n'ai pas besoin d'être un expert, car cela me permet d'obtenir une version imprimée de l'HTML.
Avec htmlCleaner, vous pouvez le faire :
TagNode root = htmlCleaner.clean( stream );
Object[] found = root.evaluateXPath( "//div[id='something']" );
if( found.length > 0 && found instanceof TagNode ) {
((TagNode)found[0]).removeFromTree();
}
Si vous souhaitez simplement supprimer des balises, vous pouvez utiliser cette expression régulière :
content = content.replaceAll("<[^>]+>", "");
Il ne supprimera que les balises, mais pas les autres éléments HTML. Pour des choses plus complexes, vous devriez utiliser l'analyseur.
EDITAR : Pour éviter les problèmes liés aux commentaires HTML, vous pouvez procéder comme suit :
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
Les expressions régulières ne peuvent pas, par définition, analyser le code HTML.
Vous pouvez utiliser une expression rationnelle pour s/<[^>]*\>//
ou quelque chose de naïf comme cela, mais ce sera insuffisant, surtout si vous souhaitez supprimer le contenu des balises.
Comme l'a dit une autre personne, utilisez un véritable analyseur HTML.
- Réponses précédentes
- Plus de réponses