2011-08-12 7 views
0

Je possède ce XML:expressions régulières

<[Results]> 
    <[Data]> 
     <[div]>THIS IS HTML! <[/div]> 
    <[/Data]> 
<[/Results]> 

Quelle est l'expression régulière pour obtenir <[div]>THIS IS HTML!<[/div]>?

+1

C'est un peu étrange XML. –

+0

Très étrange XML en effet. –

+2

Vous trouverez cette question d'une grande utilité pour vos besoins: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

Répondre

0

Essayez ceci:

<\[div\]>.+?<\[\/div\]> 

Est-ce que tout correspondre à l'intérieur des balises div.

Bien que je suis conforme à vous dire que cette regex est pas parfait. Si vous voulez analyser XML, vous devez utiliser un analyseur XML.

Lisez attentivement le document this post sur le sujet.

-1

Vous devriez éviter d'attraper < dans le corps si vous avez 2 DIV ou plus. Essayez ceci:

< [div]> [^ <] < [/ div]>

+0

Et ce qui est censé se produire quand la chaîne ressemble à '<[div]>

Contenu ici ...

<[/div]>'. Je suppose que ça devrait correspondre à ça aussi ... – Arjan

+0

C'est vrai. Les expressions internes doivent accepter toutes les balises mais <[/div]> –

+0

Mais '<[div]><[div]> Contenu ici ... <[/div]><[/div]>' est également valide ... Vraiment, si vous voulez analyser XML, utilisez un analyseur XML. – Arjan

0

Si vous pouvez convertir en XML réelle, au lieu d'une chaîne, vous pouvez utiliser la méthode getElementsByTagName pour trouver toutes les balises div et la innerHTML (?) Propriété (ou innerText/textContent en fonction de ce que vous voulez)