IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Besoin d'aide pour une expression régulière


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Besoin d'aide pour une expression régulière
    Bonjour,

    Je vous explique mon problème

    J'ai une ligne dans un fichier sous cette forme:

    "EURO\fr150003","FRI06321","0.0.0.0","SIMU",471458,"Job:FPEOJ10 - Created: 13/09/2005 0:53",2,1,"",2005-09-14 09:38:47,2005-09-14 09:40:12,"1,1,2,4,5,7,9,11,13,16,17,1,9,11,14,16,18,19,18,16,15,14,12,13,14,15,8,9,10,11,12,13,14,15,13,14,15,16,17,1,10,12,14,15,16,15,14,15,16,17"

    Je voudrais stocker chaque élément dans un tableau en perl, je suppose qu'il faut utiliser une expression régulière mais comme je m'y connais très peu en perl, j'aurais besoin de votre aide.

    Chaque élément est séparé par une virgule, alors vous allez me dire, c'est facile fait un split.
    Le prob, c'est ce qui ce trouve dans les guillemets, en effet, ce sont des chaînes de caractères qui peuvent également contenir des virgules.
    Si quelqu'un à une idée pour obtenir ce résultat au final:

    EURO\fr150003
    FRI06321
    0.0.0.0
    SIMU
    471458
    Job:FPEOJ10 - Created: 13/09/2005 0:53
    2
    1
    2005-09-14 09:38:47
    2005-09-14 09:40:12
    1,1,2,4,5,7,9,11,13,16,17,1,9,11,14,16,18,19,18,16,15,14,12,13,14,15,8,9,10,11,12,13,14,15,13,14,15,16,17,1,10,12,14,15,16,15,14,15,16,17

    Merci

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 859
    Points : 4 802
    Points
    4 802
    Par défaut
    Bonjour et bienvenue à toi

    Je ne saurais trop te recommander de lire notre FAQ ainsi que mes cours étant donné que tu t'y connais peu en Perl. Tu y trouveras des éléments de réponses assez intéressants.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Merci pour la doc
    Merci pour la doc, elle va me servir

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 859
    Points : 4 802
    Points
    4 802
    Par défaut
    De rien, elle est là pour ça

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Pour répondre à ta question pas besoin d'un split ! Il suffit d'évaluer ta ligne en contexte de liste puis de l'affecter à un tableau. Chaque élément pris entre deux virgule sera considéré comme un élément du tableau.
    Un petit conseil, utilise plutôt des guillemets simple que double pour ce genre de chose, ça pourrait t'éviter des suprises comme par exemple pour cette ligne : EURO\fr150003.
    Ensuite, tu as oublié de mettre entre guillemet 2005-09-14 09:38:47 et 2005-09-14 09:40:12 : ce ne sont pas que des valeur numériques, il faut les évaluer en contexte de chaîne.
    En résumé, voici un code qui marche (avec affichage intégré )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my @tab = ('EURO\fr150003','FRI06321','0.0.0.0','SIMU',471458,'Job:FPEOJ10 - Created: 13/09/2005 0:53',2,1,"",'2005-09-14 09:38:47','2005-09-14 09:40:12','1,1,2,4,5,7,9,11,13,16,17,1,9,11,14,16,18,19,18,16,15,14,12,13,14,15,8,9,10,11,12,13,14,15,13,14,15,16,17,1,10,12,14,15,16,15,14,15,16,17' );
    foreach my $i (@tab)
    {
    	print "$i\n";
    }
    Au piez si ta ligne de base contient des guillements double tu peux faire une regex qui te remplace les guillements double par des simples : Allez, bon apprentisage de Perl !
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Et surtout utilises un module pour faire ça : un format CSV peut-être assez difficile à parser, avec beaucoup de cas tordus. On peut le faire avec des regexs, mais on risque souvent d'oublier quelque chose.
    Alors hormis si tu veux faire de l'exercice avec les regex, utilises quelque chose comme ce module.

    --
    Jedaï

Discussions similaires

  1. [egrep] Besoin d'aide pour une expression régulière
    Par het44 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 18/05/2013, 22h29
  2. Besoin d'aide pour une expression régulière
    Par StringBuilder dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/12/2012, 12h12
  3. Besoin d'aide pour une expression régulière
    Par chlon dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/07/2009, 16h41
  4. [RegEx] Besoin d'aide pour une expression régulière
    Par vallica dans le forum Langage
    Réponses: 4
    Dernier message: 04/09/2007, 19h59
  5. Besoin d'aide pour une expression reguliere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2006, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo