Introduire une variable dans une Regexp , possible?

Introduire une variable dans une Regexp , possible? - Perl - Programmation

Marsh Posté le 22-11-2004 à 20:55:04    

Bonjour,
 
j'ai chercher pas mal de temps sans succès. :/
 
En fait est-il possible de faire un truc du genre en perl :  
 

Code :
  1. $toto="tata";
  2. if($var =~ /^blabla/.$toto./blabla$/) {
  3.     ...
  4. }


 
sachant pertinament que mon exemple plus haut ne marchera pas :D
 
Mais je voudrais pouvoir avoir une regexp modifiable suivant une variable.
 
C'est possible?
 
Si oui comment?
 
Merci


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 22-11-2004 à 20:55:04   

Reply

Marsh Posté le 22-11-2004 à 21:43:08    

j'ai pas tout compris... tu veux remplacer un pattern par une chaîne contenue dans une variable ?
si c'est le cas :

Code :
  1. $var =~ s/pattern/$autre_var/e;


sinon j'ai pas compris ta question

Reply

Marsh Posté le 22-11-2004 à 22:38:58    

Je suis pas sur d'avoir compris ta reponse :D
 
Non en fait je veux construire ma regexp a l'aide de variables...
 
Je voudrais faire par exemple :
 
$toto = "[^ ]*";
if($var =~ /^$toto$/) {
   ...
}
 
sauf que ca peut par marcher comme je l'ai mis la vu que $ est le caractere qui signale la fin de la regexp.
 
A+ merci


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 22-11-2004 à 22:44:52    

En fait je veux detecter la presence d'une chaine dans une autre chaine a l'aide des regexp, mais cette autre chaine peut changer suivant les param qu'on entre...
 
Voila
 
j'espere que j'ai ete assez clair :)


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 22-11-2004 à 22:54:30    

as-tu essayé ? ce genre de regex marche sans aucun problème avec perl, il faut juste faire attention à ne pas mal formatté ton pattern
je te conseille d'utilise l'apostrophe plutôt que les doubles côtes car sinon la chaîne sera interprétée par perl
 
exemple :

Code :
  1. $pattern = '[ \t]';
  2. if ($var =~ /$pattern$/)
  3. {
  4. ...
  5. }

Reply

Marsh Posté le 22-11-2004 à 23:36:10    


 
j'etais tellement convaincu que ca marcherais pas que j'ai pas pensé a tester [:mlc]  
 
J'voulais absolument concatener dans le test de la regexp meme  :D  
 
Bah ca marche nickel je te remercie  [:mad_overclocker]  
 
A+  :hello:


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Sujets relatifs:

Leave a Replay

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