2010-04-02 5 views
2

Je suis en train d'utiliser JEditorPane pour rendre le HTML de base. Mais il rend incorrectement les balises de fermeture automatique, en particulier les balises br, par ex. < br/> est mauvais mais <br> est bon. Je voudrais utiliser String.replaceAll (regex, "<br>") pour corriger le HTML, où regex est une expression régulière correspondant à toute balise br auto-fermante avec insensibilité à la casse et zéro à l'infini nombre d'espaces entre les "r "et "/"(par exemple, < br/>, < BR/>, < br/>, < Br        />, etc.).Expression régulière, JEditorPane, Balises à fermeture automatique

Merci à tous les experts de l'expression régulière qui peuvent résoudre ce problème!

+0

''
est invalide HTML, de toute façon. Et '
' serait XHTML invalide. Ne serait-il pas plus facile de créer le code HTML sous-jacent au lieu de le corriger par la suite avec des regex? – Joey

+0

Mon code HTML source date de la fin des années 90. En effet, avant d'utiliser HtmlCleaner pour nettoyer et extraire des fragments pour stocker une base de données, la plupart des tags br ne sont pas fermés correctement. Mais ALORS j'ai besoin d'utiliser JEditorPane pour le rendre, il faut donc le reconvertir en standards pré-HTML 4! Et bien sûr, nous devrons peut-être utiliser Flying Saucer ou une autre solution de rendu à l'avenir, il est donc préférable de le garder proche de la norme dans la base de données et de le corriger à la volée pour JEditorPane. –

Répondre

4

Vous pouvez utiliser le regex:

<[bB][rR]\s*/> 
  • <: Pour correspondre à un < littéral
  • [bB]: Une classe char qui correspond soit b ou B
  • [rR]: Une classe char qui correspond à soit r ou R
  • \s: N'importe quel espace blanc
  • \s*: zéro ou plusieurs espaces blancs.

Si vous souhaitez autoriser seulement un espace pour un espace blanc, vous pouvez utiliser:

<[bB][rR] */> 
+0

Génial, merci pour la réponse rapide et l'explication! Je vais le tester maintenant et marquer comme répondu si cela fonctionne! –

+0

Fonctionne comme un charme! –