2010-10-04 10 views
2

Salutations, J'ai lu quelques discussions sur ce sujet, mais en fait je ne pouvais pas trouver ou penser à une solution adéquate (voir par exemple: Regular expression to remove XML tags and their content).Suppression de XML-tag via regex

J'ai une balise XML comme ça:

<bla_tag size="100" 
     diameter="50" 
     ratio="0.2" 
     path="/user/home/something.pdf"> 
</bla_tag> 

Objectif: Avoir une expression régulière qui enlève tout le reste <bla_tag ...>.

Problème: les valeurs telles que la taille, etc., changent dans chacune des balises bla_tags (environ 1000 balises bla dans le fichier).

tentative ratée: je l'ai essayé avec: <bla_tag .*?> (le? Pour le rendre moins gourmand ...). Résultat de l'échec: Seul le <bla_tag a été marqué, mais pas le contenu dans toute la tranche! Qu'est-ce que je fais de mal - ou est-il réellement possible de résoudre ce problème basé sur regex (j'ai lu quelque part qu'il ne serait pas possible que la propriété xml soit une langue de type 2, pouvez-vous confirmer cela?)

+3

Voir http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – RichieHindle

+0

Sur quel langage de programmation/script particulier appliquerez-vous ceci? – Ruel

+0

Votre regex a l'air ok. Comment l'utilisez-vous? – Jens

Répondre

5

Vous voulez lire RegEx match open tags except XHTML self-contained tags

sérieusement.

Utilisez un analyseur XML. (Ils ne sont pas difficiles à utiliser, honnêtement). Ils viennent généralement dans l'une des deux saveurs - SAX, et DOM, et vous allez probablement préférer SAX.

Mon analyseur préféré est expat, mais ils ont tous leurs petites subtilités, donc ce n'est pas toujours une taille unique.

+0

Merci beaucoup et excuses pour la réponse tardive. Spécialement la partie Automata/Regex incluse dans le lien mentionné m'a aidé. Grâce à mes cours de sciences informatiques théoriques maintenant, je peux aussi comprendre pourquoi un analyseur XML est préférable. – Daniyal

Questions connexes