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

  FORUM HardWare.fr
  Programmation
  Perl

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1906218
Profil sup​primé
Posté le 17-07-2009 à 16:17:34  answer
 

(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
mood
Publicité
Posté le 17-07-2009 à 16:17:34  profilanswer
 

n°1906272
gilou
Modérateur
Modzilla
Posté le 17-07-2009 à 23:01:05  profilanswer
 

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é!  --
n°1906274
Elmoricq
Modérateur
Posté le 17-07-2009 à 23:50:13  profilanswer
 

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

n°1906664
Profil sup​primé
Posté le 20-07-2009 à 10:40:07  answer
 

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

n°1907484
gilou
Modérateur
Modzilla
Posté le 22-07-2009 à 08:10:07  profilanswer
 

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é!  --
n°1907841
Profil sup​primé
Posté le 23-07-2009 à 09:48:04  answer
 

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


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

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

 

Sujets relatifs
[Résolu][Expression Régulière] Besoin d'aide[Résolu] Prob d'url rewriting avec OVH (.htaccess)
[LaTeX][resolu] package listings et utilisation de emphstyle[Résolu] Problème lors du tri d'un vecteur d'itérateurs
[Résolu][Perl][PostgreSQL] Problème d'installation DBI[VBA Excel 2007] erreur Nombre d'arguments incorrects [RESOLU]
[XML/php/Mysql] Caractere chinoisRecherche chaine de caractères
Plus de sujets relatifs à : [Résolu][Perl] Chaine entre 2 délimiteurs


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