Bonjour,
Je bute sur la création d'un pattern permettant de trouver des liens dans un contenu HTML (je sais qu'il serait possible d'agir sur le DOM directement, mais ma question porte bien sur les regexp).
Si mes liens étaient tous de la forme :
Ce ne serait pas bien difficile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="adresse">texte</a>
Sauf que je peux avoir des liens comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part @<a[^>]+>[^<]*</a>@
Il me faudrait un pattern du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <a href="adresse">texte<br />texte</a> <a href="adresse">texte<strong>texte</strong>texte</a> <a href="adresse">texte<strong><em>tex</em>te</strong>texte</a> ...
Mais cela ne semble pas possible ? J'ai beau me pencher sur les assertions avants ou arrières, je ne m'en sorts pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part @<a[^>]+>[n'importe quoi sauf la chaîne </a>]*</a>@
Du coup, j'ai opté pour une solution "brute" mais qui marche ! Je remplace tout d'abord dans mon texte HTML les expressions </a> par un caractère n'ayant que peu de chance d'apparaître (comme ¤ ou autre).
Ce qui me permet d'écrire le pattern suivant :
Mais je souhaitais me tourner vers les pros des regexs pour savoir s'il n'était pas possible de trouver un patter qui fonctionne dans mon cas, ce qui serait moins "bricole" que ma solution (et sûrement plus performant également).
Code : Sélectionner tout - Visualiser dans une fenêtre à part @<a[^>]+>[^¤]*¤@
Merci,
Dimitri
Partager