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] Récuperatrion chaine


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut [RegExp] Récuperatrion chaine
    Bonjour,


    J'ai une chaine de caractère au format : 'Q(chaine1) M(chaine2)'

    Est il possible de récupérer facilement chaine1 en utilisant les expressions régulière?

    Merci d'avance!

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bien sûr, en utilisant les références arrières. Je te conseille de lire l'excellent cours de Sylvain Lhullier, qui traite dans la partie 10 des regex.

    Fais des essais et on t'aidera à rectifier le tir si besoin est.

  3. #3
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Voila ce que ca donne , avec toujours un bug :

    J'obtiens 'chaine1)' , la parenthese de fin traine toujours dans la chaine....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $test ="Q(chaine1) S(chaine2)";
            if($test =~  /Q/i){
            my ($a,$b) = split(/\s/,$test);
            $a =~ /\((\w+\))$/;
            my $temp= $1;   
            }


    EDIT ::: J'avais juste un probleme de ")" mal placée ......

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $test ="Q(chaine1) S(chaine2)";
            if($test =~  /Q/i){
            my ($a,$b) = split(/\s/,$test);
            $a =~ /\((\w+)\)$/;
            my $temp= $1;   
            }

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Pas loin, avec un quantificateur non gourmand ça devrait passer

    Allez, je te donne une solution en une regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test =~ m/Q\((\w+?)\)/gi

  5. #5
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Merci beaucoup !!

    Dernière question sur le sujet : la chaine que j'ai à chercher contient un caractère "é". Est ce que cela va poser problème de le faire comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my $chaine="En cours d\'exécution";
     
    foreach my $ligne (@list) {
            if($ligne =~  /$chaine/o){
    ............


    Merci d'avance!

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Et bien... Ca dépend

    Ca dépend notamment de l'encodage des caractères du fichier dans lequel tu récupères tes lignes et de l'encodage de ton fichier. Donc ça peut poser problème oui...

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

Discussions similaires

  1. Regexp sur chaine de caracteres : comment récupérer les valeurs ? (Bash 2.x)
    Par joserwan dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 08/06/2009, 21h35
  2. [RegExp] présnece chaines de cacteres
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2008, 13h46
  3. [REGEXP] Sous chaine commene par et fini par...
    Par lionel69 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 02/05/2006, 15h45
  4. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24
  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