[Résolu][Perl] Chaine entre 2 délimiteurs

Chaine entre 2 délimiteurs [Résolu][Perl] - Perl - Programmation

Marsh Posté le 17-07-2009 à 16:17:34    

(Re)-Bonjour,
 
Je risque de passer souvent ici en ce moment :D
Encore et toujours débutant en Perl (ou assimilé [:tinostar]), j'aurai une pitite question sur un découpage de chaine de caractères.
 
Je récupère une chaine de caractères du genre :
 
[blabla][blublu]djshfsldhfeuhff
 
Avec des informations entre les "[...]" qui se baladent dans la chaine (pas forcément au début ou à la fin).
Je tente de récupérer les infos entre les crochets soit "blabla" et "blublu" dans mon exemple (le reste je m'en fous totalement :D) et je sais pas trop comment faire :/
 
Quelqu'un a une idée ? voire mieux ... une solution ? :D
 
Merci bien.


Message édité par Profil supprimé le 21-07-2009 à 09:43:17
Reply

Marsh Posté le 17-07-2009 à 16:17:34   

Reply

Marsh Posté le 17-07-2009 à 23:01:05    

Deux hints: expression reguliere non-greedy pour capturer ce qui est entre [ et ], et \G
A+,


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

Marsh Posté le 17-07-2009 à 23:50:13    

Troisième hint : documentation complète sur le site officiel ;)
Et plus précisément ici pour les regexps : http://perldoc.perl.org/perlre.html

Reply

Marsh Posté le 20-07-2009 à 10:40:07    

Merci à vous deux.
 
J'ai trouvé ca comme solution :

Code :
  1. $mavar = "[ABC-123] ezhfe [BAC-321][ACB-213] sdfhe[CAB-312]";
  2. # On récupère des chaines de type [ABC-123]
  3. while ($mavar =~ /(\[\w+-\d+\])/go)
  4. {
  5. my $var = $1;
  6. # Suppression du caractère "[" du début
  7. $var =~ s/^\[//;
  8. # Suppression du caractère "]" de fin
  9. $var =~ s/\]$//;
  10. }


 
Ça me récupère bien ABC-123, BAC-321, ACB-213 et CAB-312, par contre est ce le plus "optimisé" ... (et le moins tordu  :pt1cable:) ... pas sur :D

Reply

Marsh Posté le 22-07-2009 à 08:10:07    

Ca serait plus simple de faire:
while ($mavar =~ /\[(\w+-\d+)\]/go)
{
    my $var = $1;
}
 
A+,


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

Marsh Posté le 23-07-2009 à 09:48:04    

Ah vi ... pas con :D
Bon bah Merci :)

Reply

Sujets relatifs:

Leave a Replay

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