Pb avec un RegEx

Pb avec un RegEx - ASP - Programmation

Marsh Posté le 20-11-2003 à 12:17:27    

Salut à tous,
 
j'ai une variable : "Lecture" qui contient le texte suivant:
 

Code :
  1. <A href="Tempspromo.html">lien sur rep interne</A></p>
  2. <A href="http://www.dugenou.com">lien externe</A></P>
  3. <A href="../img_dep.asp">sur lien rep différent</A></P>


 
Grace à regEx je cherche à modifier le contenu de la variable avec le code suivant:
 

Code :
  1. Function Modif_lien(txt)
  2.    dim temp,regEx
  3.    temp = txt
  4.  
  5.    Set regEx = New RegExp  ' crée un objet RegExp
  6.    regEx.IgnoreCase = True  ' Casse ignorée
  7.    regEx.Global = True  ' Recherche sur toute la chaîne
  8.  
  9. regEx.Pattern = "<A href="""
  10.    temp = regEx.REPLACE(temp,"<A href=""HTML_visu.asp?page=" )
  11.   regEx.Pattern = "HTML_visu.asp?page=http"
  12.    temp = regEx.REPLACE(temp,"http" )
  13.  
  14.   regEx.Pattern = "HTML_visu.asp?page=../"
  15.    temp = regEx.REPLACE(temp,"" )
  16.  
  17.    Modif_lien=temp
  18. end function


 
J'appel ma fonction comme ceci:

Code :
  1. Response.Write Modif_lien(lecture)


 
Ce que jattends de cette fonction:
Voici les lien tel que je voudrais qu'ils apparaissent:
 

Code :
  1. <A href="HTML_visu.asp?page=Tempspromo.html">lien sur rep interne</A>
  2. <A href="http://www.dugenou.com">lien externe</A>
  3. <A href="img_dep.asp">sur lien rep différent</A>


 
Mais il semble que j'ai un pb car les liens qui me sont renvoyés sont de la forme suivante
 

Code :
  1. <A href="HTML_visu.asp?page=Tempspromo.html">lien sur rep interne</A></p>
  2. <A href="HTML_visu.asp?page=http://www.dugenou.com">lien externe</A></P>
  3. <A href="HTML_visu.asp?page=../img_dep.asp">sur lien rep différent</A></P>


 
Si quelqu'un voit d'ou vient le pb...
 
Merci à vous ;)


Message édité par DJERO le 20-11-2003 à 12:18:52
Reply

Marsh Posté le 20-11-2003 à 12:17:27   

Reply

Marsh Posté le 20-11-2003 à 13:34:59    

J'ai fâcheusement l'impression que seule ta première regexp est prise en compte.
 
Ce qui pourrait s'expliquer par le fait que tu fais une seule fois
 
Set RegEx=New RegExp (donc tu crées un objet RegExp)
mais que tu l'utilises 3 fois.
 
J'imagine (mais je n'ais plus fait d'ASP depuis un certain temps et jamais de RegExp multiples dans une fonction) qu'il faudrait créer une New RegExp pour chacun de tes tests.
 
-> Set RegEx1=New RegExp  
(premier pattern)
 
Set RegEx2=NewRegExp
(2ème pattern)
 
...
 
 
 
Ce n'est qu'une idée, mais ça semble cohérent au vu des résultats que tu obtiens...


Message édité par deliriumtremens le 20-11-2003 à 13:35:28
Reply

Marsh Posté le 20-11-2003 à 13:58:04    

Après test c'est une connerie, le problème doit venir de tes patterns.
 
Je teste et je reviens :)

Reply

Marsh Posté le 20-11-2003 à 14:07:00    

Arf, c'était tout con, suffit de mettre un antislash dans tes patterns avant les ?
 
->

Code :
  1. regEx.Pattern = "<A href=""" 
  2.    temp =regEx.REPLACE(temp,"<A href=""HTML_visu.asp?page=" )
  3.   regEx.Pattern = "HTML_visu.asp\?page=http"
  4.    temp =  regEx.REPLACE(temp,"http" )
  5.  
  6.   regEx.Pattern = "HTML_visu.asp\?page=../"
  7.    temp =  regEx.REPLACE(temp,"" )


 
Et c'est tout bon

Reply

Marsh Posté le 20-11-2003 à 14:07:46    

J'ai trouver la solution, certe ce n'est pas super mais ça fonctionne:
 
Ce qui posait problème dans mes patterns était le "?" (qui est réservé) j'ai donc remplacé le ? par des ZZZZ.
 
Lorsque je récupere le résultat de ma fonction, je fais :
CONTENU = Modif_lien(lecture)
CONTENU = Replace("CONTENU","ZZZZ","?" )
 
et tout rentre dans l'ordre
 
Bon, si quelqu'un à une technique plus simple pour eviter le replace, je suis preneur.
 
Merci à toi DeliriumTremens ;)
 
oups, + rapide que moi :D


Message édité par DJERO le 20-11-2003 à 14:08:18
Reply

Marsh Posté le 20-11-2003 à 14:08:40    

Grillaid en mieux ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed