Perl substitution fin de chaine

Perl substitution fin de chaine - Perl - Programmation

Marsh Posté le 05-07-2011 à 23:29:51    

Bonjour,
 
J'ai un petit problème concernant une substitution dans une chaine de caractère.
 
Voici mon problème, j'ai une ligne:
CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7;;;;;;;;;;;;;;;;;;
 
J'ai pensé à cette expression régulière mais sans succès.
 

Code :
  1. $_ =~ s/(\w+)+(;)+$/$1/


 
Je cherche une solution élégante pour supprimer les ';' qui sont en fin de chaine en remontant la chaine de caractère.
Je sais que je peux supprimer les ';' à la fin de la chaine en découpant ma chaine via la fonction split puis faire une boucle mais je trouve cette solution pas élégante.
 
Merci pour votre aide.

Reply

Marsh Posté le 05-07-2011 à 23:29:51   

Reply

Marsh Posté le 05-07-2011 à 23:51:10    

Code :
  1. s/;+$//;


 
:??:

Reply

Marsh Posté le 06-07-2011 à 00:07:56    

Elmoricq a écrit :

Code :
  1. s/;+$//;


 
:??:


 
Bonsoir,
 
Malheureusement, ca ne marche pas cette solution :(
 
Merci quand même.

Reply

Marsh Posté le 06-07-2011 à 01:14:20    

"ça ne marche pas", c'est un peu court :
 
http://regex.powertoy.org/?pat=s/% [...] B%3B%3B%0A
 
Semble bien donner ce que tu attends, ou bien je n'ai pas compris ce que tu souhaites faire.

Reply

Marsh Posté le 06-07-2011 à 06:58:51    

Elmoricq a écrit :

"ça ne marche pas", c'est un peu court :
 
http://regex.powertoy.org/?pat=s/% [...] B%3B%3B%0A
 
Semble bien donner ce que tu attends, ou bien je n'ai pas compris ce que tu souhaites faire.


 
Salut,
Désolé pour ma précédente réponse, je vais tester le lien que tu m'as fourni. (Apparemment, il faut que j'installe un plugin Java pour Mozilla)
 
Dans un script perl, j'ai mis dans une chaine de caractère "CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7;;;;;;;;;;;;;;;;;;"
puis j'ai imprimer avant et après modification de l'expression régulière et il n'y a pas eu de modification.
 
Voici ce que je voudrais obtenir,

Code :
  1. Chaine Avant: CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7;;;;;;;;;;;;;;;;;;
  2. Chaine Après: CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7


 
Merci pour ton aide.
 
 

Reply

Marsh Posté le 06-07-2011 à 08:38:53    

phdenis a écrit :


 
Salut,
Désolé pour ma précédente réponse, je vais tester le lien que tu m'as fourni. (Apparemment, il faut que j'installe un plugin Java pour Mozilla)
 
Dans un script perl, j'ai mis dans une chaine de caractère "CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7;;;;;;;;;;;;;;;;;;"
puis j'ai imprimer avant et après modification de l'expression régulière et il n'y a pas eu de modification.
 
Voici ce que je voudrais obtenir,

Code :
  1. Chaine Avant: CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7;;;;;;;;;;;;;;;;;;
  2. Chaine Après: CHAMP_1;CHAMP_2;CHAMP_3;CHAMP_4;CHAMP_5;CHAMP_6;CHAMP_7


 
Merci pour ton aide.
 
 


 
Désolé, effectivement ça marche,  je viens de m'apercevoir que je n'affichais pas la bonne variable dans ma ligne.
Voila, le pourquoi du comment, milles excuses.

Reply

Sujets relatifs:

Leave a Replay

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