D'abord, je ne suis pas un expert en regex, donc je suis presque sûr de faire quelque chose de mal.Quel est le problème avec cette regex?
Voici mon expression régulière:
<(list)(\b[^>]*)>(<\1\b[^>]*>.*?<\/\1>|.)*?<\/\1>
Ceci est la chaîne d'entrée:
...
<list title="Lorem ipsum dolor sit amet, consectetur adipiscing elit...">
<li>
<list title="Lorem adipiscing...">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
</list>
</li>
<li>
<list title="Lorem ipsum...">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
</list>
</li>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit
</li>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit
</li>
</list>
...
Je veux correspondre à la <list>
externe et attraper tout le contenu, y compris la intertal <list>
mais lorsque je tente pour lire le groupe \3
est vide, bien que les groupes \1
et \2
vont bien.
Toutes les idées seraient très appréciées.
Le problème avec votre expression régulière est que vous l'utilisez pour analyser HTML. – cletus
Pour clarifier la réponse de Cletus (qui est la bonne réponse pour cette question): http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Borealid
... maintenant vous avez * deux * problèmes./puisque nous faisons ressortir les clichés. – dmckee