J'ai beaucoup étudié ce sujet, mais je n'ai pas trouvé d'exemple de travail pour faire correspondre les balises html imbriquées avec les attributs. Je sais qu'il est possible de faire correspondre des balises internes équilibrées/imbriquées sans attributs (par exemple, une expression rationnelle pour et serait #<div\b[^>]*>(?:(?> [^<]+) |<(?!div\b[^>]*>))*?</div>
# x).Expression régulière pour les balises imbriquées (la plus simple pour faciliter les choses)
Cependant, je voudrais voir un motif regex qui trouve une paire de balises HTML avec des attributs.
Exemple: Il devrait essentiellement correspondre
<div class="aaa"> **<div class="aaa">** <div> <div> </div> **</div>** </div>
et non
<div class="aaa"> **<div class="aaa">** <div> <div> **</div>** </div> </div>
Tout le monde a des idées?
Pour des fins de test, nous pourrions utiliser: http://www.lumadis.be/regex/test_regex.php
PS. Steven a mentionné une solution dans son blog (en fait dans un commentaire), mais il ne fonctionne pas
http://blog.stevenlevithan.com/archives/match-innermost-html-element
$regex = '/<div\b[^>]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|<(?!\/?div\b[^>]*>))+)|(<div\b[^>]*>(?>(?1)|(?2))*<\/div>))?<\/div>/i';
Il est généralement pas une bonne idée d'essayer d'analyser html/xml avec regex. Si vous pouviez nous dire précisément ce que vous essayez de faire, nous serons peut-être en mesure de vous orienter dans une direction plus appropriée: o) – vimist
Juste pour clarifier. Ceci est plus d'une discussion théorique, juste pour le plaisir. Bien sûr, dans la vraie vie, j'utiliserais xpath ou plus. Je comprends que regex "state fini" ou "true" ne sont pas capables de le faire, mais qu'en est-il de la regex PHP/PCRE (qui ne sont plus regex "classique", par exemple ils supportent même des patterns récursifs? . - Dave il y a 0 secondes edit – Dave