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 :

aide expression régulière


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut aide expression régulière
    Bonjour,

    je cherche à récupérer deux mot séparés par un _ dans deux variables différentes,

    ex:
    test1_test2

    je voudrais récupérer $mot1=test1 et $mot2=test2

    Donc pour mot1 récupérer tout ce qui est devant _, et pour mot2 récupérer tout ce qui est derrière _
    (j'ai plusieurs chaines différentes avec deux mots séparés par _)

    Si quelqu'un à une idée pour me filer un coup de main, je l'en remercie d'avance.

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($mot1, $mot2) = split /_/, $chaine;

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Points : 207
    Points
    207
    Par défaut
    Salut,

    tu peux utiliser la fonction "split"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ma_chaine= "mot1_mot2";
    @mot_seul = split(/:/, $ma_chaine);
    tu obtiendras un tableau:
    $mot_seul[0] => mot1
    $mot_seul[1] => mot2

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Super, merci beaucoup a vous deux

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Points : 207
    Points
    207
    Par défaut
    Ah,

    On a posté en même temps...

    une autre solution sans la fonction split avec des REGEX:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $chaine = "tata_tutu";
    my ($mot1) = $chaine =~ m/^([^_]*)_/;
    my ($mot2) = $chaine =~ m/_([^_]*)$/;

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci mamax29 également,

    j'ai un autre petit souci si vous pouvez encore une fois m'apporter votre aide,

    en fait mes chaines sont de ce style la:

    $ma_chaine= "Le%20Quelquechose_Le%20Autrechose";

    Et je voudrais en plus de les séparer en deux mots comme au dessus, remplacer les %20 par des espaces, le tout dans la même expression (si possible),

    auriez-vous une idée?

    Merci d'avance

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Points : 207
    Points
    207
    Par défaut
    fait un simple substitute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ma_chaine= "Le%20Quelquechose_Le%20Autrechose";
    $ma_chaine =~ s/%20/ /g;
    et ensuite le reste de ton code pour le split, etc.

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Ah super merci, en fait j'ai testé avec le contraire:

    my ($mot1, $mot2) = split /_/, $machaine;
    puis
    my ($mot1, $mot2) =~ s/%20/ /g;

    du coup le résultat était foireux,

    merci beaucoup!

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

Discussions similaires

  1. Aide Expression régulière
    Par Stef784ever dans le forum Langage
    Réponses: 11
    Dernier message: 15/04/2011, 11h16
  2. Aide Expression Régulière
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2011, 15h49
  3. aide expression régulière
    Par viny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2008, 18h55
  4. aide expression régulières
    Par mehdiing dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/04/2008, 15h02
  5. Aide expression régulière
    Par As2piK dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 02/10/2007, 10h33

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