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

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] Problème regexp \1

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] Problème regexp \1

n°2260069
maxou3513
Posté le 10-06-2015 à 15:33:32  profilanswer
 

Bonjour,
 
J'ai un problème avec mon code ci-dessous, je voudrais que $tel me renvoie +33635678396 mais ce programme me renvoie +336\1, je ne comprend pas.
Merci de m'aider, ça fait un moment que je bloque, je ne trouve pas la solution.
 

Code :
  1. my $a = '^06([0-9]{8}).*$';
  2. my $b = '+336\1';
  3. my $tel = '0635678396';
  4. $tel =~ s/$a/$b/;
  5. print "$tel\n";

mood
Publicité
Posté le 10-06-2015 à 15:33:32  profilanswer
 

n°2260070
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2015 à 15:37:35  profilanswer
 

maxou3513 a écrit :

Bonjour,
 
J'ai un problème avec mon code ci-dessous, je voudrais que $tel me renvoie +33635678396 mais ce programme me renvoie +336\1, je ne comprend pas.
Merci de m'aider, ça fait un moment que je bloque, je ne trouve pas la solution.
 

Code :
  1. my $a = '^06([0-9]{8}).*$';
  2. my $b = '+336\1';
  3. my $tel = '0635678396';
  4. $tel =~ s/$a/$b/;
  5. print "$tel\n";



 
 
:hello:
 
Tu demandes de remplacer $a par $b, mais $a est tout ton numéro !
Essaie :
 

Code :
  1. my $a = '^06';
  2. my $b = '+336';
  3. my $tel = '0635678396';
  4. $tel =~ s/$a/$b/;
  5. print "$tel\n";


Message édité par web_olivier le 10-06-2015 à 15:41:34
n°2260072
maxou3513
Posté le 10-06-2015 à 15:50:52  profilanswer
 

Tu contourne juste le problème imaginons ce code ci-dessous :
 

Code :
  1. my $a = '^06([0-9]{8})@(.*)$';
  2. my $b = '+336\1\2';
  3. my $tel = '0635678396@gmail.fr';
  4. $tel =~ s/$a/$b/;
  5. print "$tel\n";


 
Je voudrais que $tel retourne +33635678396gmail.fr et pourtant ça ne retourne pas ceci, je voudais savoir comment fonctionne le \1, je ne comprend pas pourquoi il ne marche pas

n°2260078
web_olivie​r
R1 Powaaaaa
Posté le 10-06-2015 à 16:14:41  profilanswer
 

Tu veux aussi supprimer le @ ?


Message édité par web_olivier le 10-06-2015 à 16:14:53
n°2260089
maxou3513
Posté le 10-06-2015 à 17:06:48  profilanswer
 

En gros j'avais un fichier avec des centaines d'expressions régulière de ce type : /^06([0-9]{8}).*$/+336\1/, j'ai donc coupé en deux parties a et b l'expression comme le première exemple que j'ai donné. Il faut que quand je rentre un numéro il le transforme avec la bonne regexp parmi la centaine. Mais le script n'arrive pas à comprendre le \1. Je voulais savoir comment faire pour traiter tous les cas si jamais la regexp suivante était du format de mon deuxième exemple.

n°2260094
rat de com​bat
attention rongeur méchant!
Posté le 10-06-2015 à 17:49:50  profilanswer
 

J'ai pas pigé le truc mais pour ceci

Citation :

Mais le script n'arrive pas à comprendre le \1.


tu ne chercherais pas plutôt $1?

 

exemple pour disons rajouter des apostrophes autour de certains mots (juste pour montrer l'utilisation du $1):

 

s/(mot1|mot2|mot3)/"$1"/g;

 

(edit grammaire...)


Message édité par rat de combat le 10-06-2015 à 18:11:41
n°2260099
gilou
Modérateur
Modzilla
Posté le 10-06-2015 à 19:45:13  profilanswer
 

Code :
  1. my $a = '^06(\d{8})';
  2. my $b = '"+336".$1';
  3. my $tel = '0635678396';
  4. $tel =~ s/$a/$b/ee;
  5. print "$tel\n";


 
l'emploi de ee a la fin fait toute la différence:
le premier e évalue $b en "+336".$1 et le second évalue "+336".$1
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  [PERL] Problème regexp \1

 

Sujets relatifs
[PERL] regex !!!Problème d'affichage de caractère
[Hibernate JPA] Problème relation entre 2 objetsProblème avec $this avec la POO
[SQL/PLSQL] problème sur requêteProblème fichier LUA
[C] probleme pour un reseau de petriProblème de Rebond sur un filet
[Arduino] Problème réception GPSProbleme exercice de Langage machine
Plus de sujets relatifs à : [PERL] Problème regexp \1


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