Problème d'expression régulière - Perl - Programmation
Marsh Posté le 12-07-2004 à 13:39:04
Remplace le "tout caractère" pour $3 par "des caractères alphanumériques, un point, des caractères alphanumériques"
/(.*)<\s*a(.*)href\s*=\s*"(\w*\.\w*)"(.*)>(.*)/
Marsh Posté le 12-07-2004 à 13:45:25
je suis d'accord mais si le lien est le suivant :
<a href="http://serveur/test.html">...
ca ne marche pas
Marsh Posté le 12-07-2004 à 13:51:27
/(.*)<\s*a(.*)href\s*=\s*"(.*\w*\.\w*)"(.*)>(.*)/
Dans ce cas là: tu récupères : http://serveur/test.html
Marsh Posté le 12-07-2004 à 14:10:53
En attendant de pouvoir le faire avec une seule expression régulière. voilà une solution avec deux conditions
Code :
|
Marsh Posté le 12-07-2004 à 14:14:58
dans :
$1 : rien
$2 : rien
$3 : test.html
$4 : rien
$5 : <img src="image.jpg"></a>
Marsh Posté le 12-07-2004 à 14:27:26
Voilà une solution sans prendre en compte tes $1, $2 et $4 vu que tu n'attends rien dedans
Chaine de caractère :
Code :
|
Expression régulière
Code :
|
Résultats
Code :
|
Per contre il faut faire attention car si tu as <a "href=\"http://serveur/test.html\">" comme cahine de caractère $2 est NULL et peut poser des problèmes
Marsh Posté le 12-07-2004 à 14:39:06
ok merci ca marche mais le problème c'est que je peux récupérer les autres $i
Marsh Posté le 13-07-2004 à 12:12:36
Re salut,
cette expression regulière fonctionne mais lorsque j'ai deux balises <a href> qui se suivent, seule la deuxième est traitée.
ex :
<a href="Test1.html">Test1</a><a href="Test2.html">Test2</a>
Et donc :
$1 : <a href="Test1.html">Test1</a>
$2 :
$3 : Test2.html
$4 :
$5 : Test2</a>
Marsh Posté le 14-07-2004 à 00:09:03
pourquoi tu utilises pas un module existant pour parser ton html?
Marsh Posté le 19-07-2004 à 18:59:33
voila une regexp que j'utilisais:
Code :
|
en fait c'etait pour doubler HTML-Parser (la callback a la meme "forme" ) pour avoir un truc redondant, mais HTML-Parser etait plus rapide et trouvais plus de liens malgres tout.
Marsh Posté le 12-07-2004 à 13:28:11
Bonjour,
voila j'ai un probleme avec l'expression régulière suivante qui me découpe une balise HREF d'une page HTML:
/(.*)<\s*a(.*)href\s*=\s*"(.*)"(.*)>(.*)/
$1 $2 $3 $4 $5
Avec le code suivant, <a href="test.html">Test</a> j'obtiens pour $3 :
test.html
Avec le code suivant, "<a href="test.html"><img src="image.jpg"></a>, j'obtiens pour $3 :
test.html"><img src=
Le premier fonctionne bien mais pour le deuxième, j'aimerais avoir le même résultat que pour le premier, c'est à dire que je n'obtienne pour $3 que le contenu entre les premieres côtes ouvrantes et les premières côtes fermantes.
J'attends votre aide
Merci