Java regex pour sortir la bande des balises XML, mais pas de balise de contenu

J'ai le code Java suivant:

str = str.replaceAll("<.*?>.*?</.*?>|<.*?/>", "");

Cela transforme une Chaîne de caractères comme suit:

How now <fizz>brown</fizz> cow.

Dans:

How now  cow.

Cependant, je veux juste la bande de la <fizz> et </fizz> balises, ou tout simplement autonome </fizz> balises, et de laisser le contenu de l'élément seul. Donc, une regex qui serait à son tour le ci-dessus en:

How now brown cow.

Ou, à l'aide d'une Chaîne plus complexes, quelque chose qui tourne:

How <buzz>now <fizz>brown</fizz><yoda/></buzz> cow.

Dans:

How now brown cow.

J'ai essayé ceci:

str = str.replaceAll("<.*?></.*?>|<.*?/>", "");

Et qui ne fonctionne pas du tout. Des idées? Merci à l'avance!

  • habituellement, si xml et regex les balises montrer ensemble, vous obtenez un commentaire, il est dit....
  • Avez-vous essayé d'utiliser un analyseur XML? Je trouve ma vie beaucoup plus facile avec JDOM pour l'analyse de XML.
  • Je ne peux pas entrer dans les détails, sans tomber dans un énorme trame de fond, mais ce n'est pas possible ici (Analyseur XML). Il suffit de regarder pour une regex solution.
  • mettre un " | " entre le premier > et <.
  • si vous voulez vraiment utiliser les regex, ne pas mentionner toute xml dans votre question, et de dire simplement "texte", :D... vous pouvez essayer de replaceAll("<[^>]*>","")
  • (Si vous vous poseriez la question, "Quel est le problème avec l'aide de regex avec xml?" here la réponse canonique, bien qu'en réalité, tant que question et de ce qui peut raisonnablement être fait avec la regex.)

InformationsquelleAutor IAmYourFaja | 2013-04-02