Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2322 connectés 

  FORUM HardWare.fr
  Programmation

  [Perl] --->!! Pour les PROS des regexp !!<--

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] --->!! Pour les PROS des regexp !!<--

n°47187
jibix
Posté le 17-07-2001 à 10:46:51  profilanswer
 

comment eliminer dans une chaine de caractères ( un type string) ce  qui se trouve uniquement entre quote ou double quote
?
 
exemple : $code=" http://www.acipiter; window.open('coucou',$url) ";
 
Je ne veux plus du coucou  en faite .

mood
Publicité
Posté le 17-07-2001 à 10:46:51  profilanswer
 

n°47202
FLY LM
Posté le 17-07-2001 à 11:36:21  profilanswer
 

Pour le PERL je ne sais pas, mais en PHP cela pourrait donner cela :
 
$code = " http://www.acipiter; window.open('coucou',$url) ";
 
$new_code = preg_replace("/'([^'])+'/","''", $code);
 
En PERL, peut-être cela :
 
$new_code =~s/'([^'])+'/''/;
 
Je ne peux pas tester pour le PERL, d'aileurs j'en ai jamais fait... Mais bon ...

n°47204
jibix
Posté le 17-07-2001 à 11:40:19  profilanswer
 

marche pas  :(  
 
mais merci quand même

n°47345
gux
Posté le 17-07-2001 à 18:04:05  profilanswer
 

$code =~ s/'.*'//;
ça va éliminer 'coucou' (avec les quotes).
sinon c'est $code =~ s/'.*'/''/; pour garder les quotes.
 
les doubles quotes ne comptent pas, se sont des délimiteurs de chaines.

n°47379
FLY LM
Posté le 17-07-2001 à 23:06:57  profilanswer
 

fly lm a écrit a écrit :

Pour le PERL je ne sais pas, mais en PHP cela pourrait donner cela :
 
$code = " http://www.acipiter; window.open('coucou',$url) ";
 
$new_code = preg_replace("/'([^'])+'/","''", $code);
 
En PERL, peut-être cela :
 
$new_code =~s/'([^'])+'/''/;
 
Je ne peux pas tester pour le PERL, d'aileurs j'en ai jamais fait... Mais bon ...  




 
Oups, une petite erreur d'écriture : le + dans l'expression rationnelle est à mettre à l'intérieur des parenthèses...
 
$new_code =~s/'([^']+)'/''/;
 
Idem pour la version PHP :
 
$new_code = preg_replace("/'([^']+)'/","''", $code);
 
Ca devrait normalement être bon...

n°47480
jibix
Posté le 18-07-2001 à 11:13:35  profilanswer
 

après avoir avoir appliquer :  $code=~ s/\s+/ /g et~ s#(\s|;|{|})//.+$# #mg (pour virer les commentaires)
 
j'obtiens :  <!-- document.write('');document.write('<IFRAME  
SRC="http://ad.fr.doubleclick.net/aid/www.freev3.fr/home;kw=x;sz=
468*60;ors='ordval+'?" ....
ce qui m'interesse c'est ce qu'il y a apres le SRC soit "http:// ... ?"
et virer tout le reste !
quelqu'un a-t-il une solution ??
 
merci !

n°47512
FLY LM
Posté le 18-07-2001 à 12:00:31  profilanswer
 

Comme je connais pas PERL, je te prospose quelques solutions :
 
a - Existe t'il une façon d'affecter à une variable ce que la REGEXP aura reconnu ?? Si oui, tu choppes tout ce qu'il y a après ton SRC (entre les deux " )(genre '/scr="([^"]+)"/') et tu affectes cela à une variable.
 
b - Tu peux peut-être te débrouiller en remplaçant la totalité de ta variale par une référence arrière (morceau de REGEXP).
 
-> $var = ~s/'^..blabla....scr="([^"]+)"..blabla..$'/'//1'/; le //1 représente ta référence arrière.
 
Maintenant, commme je te l'ai déjà dit, je connais pas le PERL et j'ai pas de moyen de vérifier ce que je te raconte.

 

[edtdd]--Message édité par fly lm--[/edtdd]

n°47517
jibix
Posté le 18-07-2001 à 12:09:43  profilanswer
 

effectivement c'est une solution mais le problème actuel c'est de chopper correctement ce qu'il y a dans le SRC ( entre les deux " ).
Je cherche l'expreg adéquat ...
Perl me renvoi tout le doc a chaque fois , alors que je demande uniquement les SRC ...
c'est bien là le problème ! :ouch:  
 
merci quand même fly  :)

n°47527
jibix
Posté le 18-07-2001 à 12:32:38  profilanswer
 

J'ai une question pour ceux qui connaissent un peu Tokeparser :
 
afin de résoudre mon problème précedent , c'est à dire recupérer les SRC.
Si on parse le $code , est-ce que Tokeparser pourrait marcher ?
Je viens d'essayer mais je n'obtiens aucune sortie alors la vraie question est : est-ce que Javascript m'empeche de parser son contenu ???
 
(n.b :je suis toujour preneur pour une regexp qui marche !)

n°47536
FLY LM
Posté le 18-07-2001 à 13:25:50  profilanswer
 

Au fait, ton :
 
<!-- document.write('');document.write('<IFRAME  
SRC="http://ad.fr.doubleclick.net/aid/www.freev3.fr/home;kw=x;sz=  
468*60;ors='ordval+'?" ....  
 
c'est sur une seule ligne ??? Les expressions régulières ça marche que si ta chaine est sur une ligne non ??. Si ta chaine est sur une seule ligne, avec cette REGEXP : /SRC=\"([^\"]+)\"/ je récupère tout ce qu'il y a dans SRC...

 

[edtdd]--Message édité par fly lm--[/edtdd]

mood
Publicité
Posté le 18-07-2001 à 13:25:50  profilanswer
 

n°47559
jibix
Posté le 18-07-2001 à 14:17:52  profilanswer
 

non c'est moi qui le mets sur une seule ligne car sinon j'ai des problèmes lorsque j'insère des infos dans la base de données. Mais ça,  c'est un tout autre bordel ! :)
Ton expreg me renvois le string en entier :
voici l'ordre de passe des regexp ->
$code=~ s#(\s|;|{|})//.+$# #mg;  #no comment
$code=~ /SRC=\"([^\"]+)\"/;
$code=~ s/\s+/ /g;  #suppr espace et rchariot

n°47565
FLY LM
Posté le 18-07-2001 à 14:37:28  profilanswer
 

Et si tu fais :
 
$code=~s/SRC=\"([^\"]+)\"/$1/;
 
Je ne sais pas si la référence arrière en PERL est le $1 ou //1
(normalement, cela fera référence à ce qui est entre parenthèse dans la REGEXP , cad ([^\"]+) donc ce que tu veux).
 
Quand je t'ai dit que la REGEXP marchait, bien sûr c'était en PHP, mais les fonctions que j'utilise sont compatibles PERL, donc je suppose que la syntaxe doit être bonne ou très proche...
 
Maintenant je ne connais pas la manière équivalente en PERL de faire ce que les fonctions PHP font...
 
Essaies quand même avec ces histoires de références arrières.

n°48010
FLY LM
Posté le 20-07-2001 à 10:04:57  profilanswer
 

Ola, j'ai du écire une connerie, y-a sans doute pas besoin d'échapper les doubles quotes en PERL vu la construction syntaxique de la regexp.
 
d'ou : $code=~s/SRC="([^"]+)"/$1/;  
 
et pas $code=~s/SRC=\"([^\"]+)\"/$1/;  
 
Zuuu


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Perl] --->!! Pour les PROS des regexp !!<--

 

Sujets relatifs
Module perl absent ... qq l a ?Pour les pros de la modélisation de base de données!
[access] BESOIN DE PROS[Perl] pb avec fichier
[SQL VBA]message d erreur de l espace!!!!!!! Besoin de pros[Perl]problem avec fonction dans un package
Trivial pour les pros du VB[Perl]expression régulière
PERL TK binding[Perl] Comment récupérer
Plus de sujets relatifs à : [Perl] --->!! Pour les PROS des regexp !!<--


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR