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 :

expression régulière


Sujet :

Langage Perl

  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut expression régulière
    Bonjour,
    j'ai un problème avec les expressionss régulières, je voudrais lire et afficher à partir d'un fichier la séquence : [NP ] voilà ce que j'ai fait mais ça marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    open(fid,"soil5.txt")|| die ("couldn't open soil5.txt!");
     while (fid)
    	{if($_ =~/\[NP (.*)\]/)
             {print $_;}
    	}
     close(fid);

  2. #2
    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
    oublie pas la prochaine fois de mettre ton code entre balise code.
    sinon pour ton souci, à quoi ressemble ton fichier, du moins uns portion de ce que tu veux!!

  3. #3
    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
    avec NP, ça donne comme indice ... un fichier avec des sequences proteiques?
    donc un bioinformaticien?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open(FIC,"soil5.txt")|| die ("couldn't open soil5.txt!"); 
           while ($ligne=<FIC>) {
                   if ($ligne =~/\[NP (.*)\]/) {
                       print "$ligne"\n;
                   } 
           } 
    close (FIC);
    en ouvrant ainsi ton fichier, il aura moins de mal a trouver ce que tu veux!

  4. #4
    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
    +1 à stoyak!!

  5. #5
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut expression régulière
    mon fichier ressemble à :
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    moi je veux extraire l'expression [NP ] entre crochet et l'afficher

    merci






    Citation Envoyé par djibril
    oublie pas la prochaine fois de mettre ton code entre balise code.
    sinon pour ton souci, à quoi ressemble ton fichier, du moins uns portion de ce que tu veux!!

  6. #6
    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 Re: expression régulière
    Citation Envoyé par siham_06
    mon fichier ressemble à :
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    moi je veux extraire l'expression [NP ] entre crochet et l'afficher

    merci






    Citation Envoyé par djibril
    oublie pas la prochaine fois de mettre ton code entre balise code.
    sinon pour ton souci, à quoi ressemble ton fichier, du moins uns portion de ce que tu veux!!
    c'est à dire??
    tu veux afficher et ???

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open FIC, "<", "soil5.txt" or die("Impossible d'ouvrir le fichier soil5.txt: $!");
    while ( <FIC> ) {
         while ( $_ =~ m!\[NP ([^\]]*)\]!g ) {
                   print $1;
         }
    }
    close FIC;
    Pas testé.

  8. #8
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut Re: expression régulière
    oui c'est ce que je veux afficher




    Citation Envoyé par djibril
    Citation Envoyé par siham_06
    mon fichier ressemble à :
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    moi je veux extraire l'expression [NP ] entre crochet et l'afficher

    merci






    Citation Envoyé par djibril
    oublie pas la prochaine fois de mettre ton code entre balise code.
    sinon pour ton souci, à quoi ressemble ton fichier, du moins uns portion de ce que tu veux!!
    c'est à dire??
    tu veux afficher et ???

  9. #9
    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
    voilà une regex tres courte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @mes_motifs;
    @mes_motifs = $ligne =~ /\[np([^\]]+)\]/gi;
    t'auras dans chaque case de ton tableau les motifs trouvés.

  10. #10
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut expression régulière
    Citation Envoyé par chostrama
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open FIC, "<", "soil5.txt" or die("Impossible d'ouvrir le fichier soil5.txt: $!");
    while ( <FIC> ) {
         while ( $_ =~ m!\[NP ([^\]]*)\]!g ) {
                   print $1;
         }
    }
    close FIC;
    Pas testé.

    J'ai un fichier texte qui est sous la forme :
    [NP AlSyn/NNP] [VP ttTlE/VBP] [PP AlY/IN] [NP AlsyAHp/NN] [NP AlArADY/NN AlSHrAwyp/JJ]

    je veux avoir en sortie que les NP entre crochet sans les slash par ex
    AlSyn
    AlsyAHp
    AlArADY AlSHrAwyp
    ..
    aprés je calcule leur fréquence.
    j'ai écrit ce code mais ça marche pas
    ***************************************************
    sub occurrence
    {
    my @word_list;
    my @temp;
    open(fid,$_[0]) || die ("couldn't open file.txt!");
    while (<fid>)
    {
    while ($_ =~ m!\[NP ([^\]]*)\]!g )
    {
    @temp = "";
    @temp = (@temp,split(/[\s\/]/,$1));
    $i = 3;
    while($i < $#temp)
    {
    $temp[1] .= " $temp[i]";
    $i = $i + 2;
    }
    push(@word_list,$temp[1]);

    }

    }
    close(fid);

    foreach $word (@word_list)
    { print $word;
    @{$occurrence_matrix{$word}}[$_[1]] ++;
    }
    delete $occurrence_matrix{""};
    }
    ***************************************************
    merci de m'aider

  11. #11
    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
    utilise les balises code

  12. #12
    tfe
    tfe est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    #
     
     while (<DATA>)
     {
        while ($_ =~ /\[NP (.+?)\]/g)
            {
                print "[NP  $1]\n";
            }
    }                
     
     
    __DATA__
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    wala wala

  13. #13
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut expression régulière
    Citation Envoyé par tfe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    #
     
     while (<DATA>)
     {
        while ($_ =~ /\[NP (.+?)\]/g)
            {
                print "[NP  $1]\n";
            }
    }                
     
     
    __DATA__
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    wala wala
    étant donné que mon fichier est sous la forme :
    [NP AlSyn/NNP] [VP ttTlE/VBP] [PP AlY/IN] [NP AlsyAHp/NN] [NP AlArADY/NN AlSHrAwyp/JJ]

    je voudrais afficher que :
    AlSyn
    AlsyAHp
    AlArADY AlSHrAwyp
    sans leurs étiquettes.
    merci pour ton aide

  14. #14
    tfe
    tfe est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    #
     
     while (<DATA>)
     {
        while ($_ =~ /\[NP (.+?)\]/g)
            {
                print $1."\n";
            }
    }               
     
     
    __DATA__
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    ...?

  15. #15
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut
    Citation Envoyé par tfe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    #
     
     while (<DATA>)
     {
        while ($_ =~ /\[NP (.+?)\]/g)
            {
                print $1."\n";
            }
    }               
     
     
    __DATA__
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]
    ...?
    lorsque j'ai exécuté le code il m'a donné comme résultat par ex:
    tHwl/NN tAryxy/JJ
    or je veux afficher que :
    tHwl tAryxy

    merci de ton aide

  16. #16
    tfe
    tfe est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/perl -w
    #
     
     while (<DATA>)
     {
        while ($_ =~ /\[NP (.+?)\]/g)
            {
                 my $var = $1;
                 $var =~ s/\/..//g;
                print $var."\n";
            }
    }               
     
     
    __DATA__
    [NP tHwl/NN tAryxy/JJ] [PP fy/IN] [NP mkAfHp/NN]

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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