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 :

Regexp Selection Perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut Regexp Selection Perl
    Bonjour je travaille sur une expression régulière en perl, j'arrive à faire le peu de chose que j'ai pu trouver sur le net mais pour le reste je bloque :

    Voici mon expression régulière de départ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my $message = $ARGV[2];
    if ($message =~ /\[(.*)-\d*\]/) {
    	print "Regexp passé result : " .  $1 . "\n";
    }
     
    Entrée : [ProjetA-1234] Test.
    Sortie : Regexp passé result : ProjetA
    Celle-ci marche parfaitement, maintenant ce que je souhaite afficher c'est n fois le même pattern s'il existe plusieurs fois dans la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Entrée : [ProjetA-1234] Test1 [ProjetB-5678] Test2.
    Sortie : Regexp passé result : ProjetA
    Regexp passé result : ProjetB
    Ce que j'ai du mal à faire c'est :
    • Construire la regexp.
    • Récupérer les résultats sachant que je ne sais pas combien il y en aura à l'avance


    Est-ce que quelqu'un s'y connait là dedans?

  2. #2
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl
    use Carp;
    use strict;
    use warnings;
     
    my $message = '[ProjetA-1234] Test1 [ProjetB-5678] Test2.';
    if ( my @resultat = $message =~ m/\[(.+?)-\d*\]/g ) {
         print "Regexp passé result : @resultat\n";
    }
    Est-ce que cela répond à ta question ?

  3. #3
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut
    Arf presque, cela me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Entrée : [ProjetA-1234] Test1
    Sortie : Regexp passé result : ProjetA
    OK
     
    Entrée : [ProjetA-1234] Test1 [ProjetB-5678] Test2.
    Sortie : Regexp passé result : ProjetA-1234] Test1 [ProjetB
    KO

  4. #4
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut
    Bon en fin de compte j'ai trouvé un moyen pour me contenter simplement de la première occurence (ProjetA).

    Je met le post en résolu mais si quelqu'un à une solution pour récupérer chaque occurence je suis intéressé pour ma curiosité personnel .

    Merci.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    La solution de stoyak me donne ceci :
    Regexp passé result : ProjetA ProjetB
    Tu es sûr de l'avoir bien testé ?

  6. #6
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut
    Quel boulet !

    Je n'ai pas vu que le (.*) avait été remplacé par (.+?) .

    (va se cacher ^^).

    En tout cas merci!!

  7. #7
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    Citation Envoyé par djibril Voir le message
    La solution de stoyak me donne ceci :

    Tu es sûr de l'avoir bien testé ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Validité d'une regexp en perl
    Par Feriaman dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2008, 16h48
  2. Select distinct sous PERL ?
    Par makubex dans le forum SGBD
    Réponses: 9
    Dernier message: 21/04/2006, 08h51
  3. Réponses: 3
    Dernier message: 09/03/2006, 11h29
  4. [RegExp] Adapter une regexp Perl vers du Java
    Par GLDavid dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/12/2005, 12h40
  5. Réponses: 8
    Dernier message: 02/11/2005, 14h16

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