[Résolu] Expression régulière en une ligne

Expression régulière en une ligne [Résolu] - Perl - Programmation

Marsh Posté le 02-03-2012 à 10:01:55    

Bonjour,
 
Voici ce que j'ai

Code :
  1. my $test = "2011-10-20T08:53:46Z";
  2. $test =~ s/-//g;
  3. $test =~ s/T//g;
  4. $test =~ s/://g;
  5. $test =~ s/Z//g;
  6. print "$test\n";


 
Le résultat est bon car j'ai bien: 20111020085346
 
Est-il possible d'écrire en une ligne tout mes remplacements? (ligne 2 à 5 inclus)
 
Merci d'avance.


Message édité par Sethenssen le 02-03-2012 à 20:40:19
Reply

Marsh Posté le 02-03-2012 à 10:01:55   

Reply

Marsh Posté le 02-03-2012 à 11:59:26    

Oui:
s/(-|T|:|Z)+//og;
1) on met l'ensemble a supprimer en une ligne avec des ou notés |
A ce niveau ça suffit, mais  
2) si on fait un groupe avec +, (-|T|:|Z)+, ça va supprimer d'un coup plusieurs trucs successifs au lieu de le faire 1 par 1
3) on ajoute o a côté de g, car comme la regexp est constante, il suffit de la compiler une fois (pas vraiment utile ici, car on ne passe qu'une fois dans l'opération de substitution, mais c'est un bon réflexe à prendre)
 
A+,


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

Marsh Posté le 02-03-2012 à 20:40:01    

Trop un champion ce Gilou !
Merci beaucoup.

Reply

Sujets relatifs:

Leave a Replay

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