Défi -> Regex bien casse tete - Divers - Programmation
Marsh Posté le 21-08-2009 à 16:48:29
ReplyMarsh Posté le 21-08-2009 à 19:27:52
Clair, les regexp c'est comme l'XML, bien souvent au lieu de te résoudre un problème, ça t'en apporte un autre.
Marsh Posté le 21-08-2009 à 19:46:33
pataluc a écrit : ce qu'il te faut c'est un parseur html, pas une regexp... |
+1
Si c'est un site web que tu veux parser, je te conseille de regarder du côté de WWW Mechanize et des plugins qui gravitent autour... c'est expédié rapidement
Marsh Posté le 21-08-2009 à 19:54:44
pataluc a écrit : ce qu'il te faut c'est un parseur html, pas une regexp... |
Pas mieux
Les regex c'est à utiliser quand c'est adapté, quand ça l'est pas ça fait plus de mal que de bien et c'est rapidement inmaintenable.
Ceci est l'un des cas. Un format hiérarchique structuré comme le SGML (dont est originaire le HTML) ou l'XML, ça ne se manipule pas avec des regex.
PS: à noter que si le parser HTML de ton langage permet d'exécuter des requêtes xpath, la découverte & sélection de nodes <img/> n'étant pas contenues dans un lien <a/> est trivial: //img[not(parent::a)] (ou //img[not(ancestor::a)] selon que le <img/> doive être directement dans un <a/> ou qu'il puisse y avoir e.g. un <span/> entre les deux)
Marsh Posté le 21-08-2009 à 15:10:23
Bonjour,
J'ai une regex assez complexe à créer.
Je doit avoir toutes les balise image ne se trouvant pas dans une image.
En termes plus regex, toutes les tags <img.*?> mais qui ne soit pas précédé d'un tag <a.*?> à moins bien sur qu'il n'y ai un </a> entre le <a ouvrant et le <img.
Exemples:
1) sqdsqs<a dsfd><img>sddsffdssdf</a> -> NON
2) sqdsqs<a dsfd>sdfdssdf<img>sddsffdssdf</a> -> NON
3) sqdsqs<a dsfd>sdw</a>fdssdf<img>sddsffdssdf -> OUI
4) sqdsqs<dsfd>b<img>sddsffdssdf -> OUI
Voici ma regex incomplete car elle math encore l'exemple 2)
(?<!<a.*?> )<img.*?>
D'avance merci
Ben