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 :

[langage] erreur expressions régulières


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut [langage] erreur expressions régulières
    Bonjour,

    j'ai un problème avec une fonction,
    Cette fonction permet de parcourir une chaine($sequence) de longueurvariable et attribue des scores si certains caractères sont présents à certaines positions.

    Mon code est le suivant :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #!/usr/bin/perl -w
    use strict;
     
    my $res;
    my $sequence= "CCCCCGGGGGGAAAAAAAGAACCCCAA";
     
    sub MOTIF
    {
    my ($sequence)= @_; 
    my $score = 0;
     
    #Test  "A" en position 5
    if ($sequence =~ m/.{4}A.*/)
    {print "Presence d'un \"A\" en position 5.\n";
    $score = 1;}
     
    # "U" en position 12
    if ( $sequence =~ m/.{11}U.*/)
    {print "Presence d'un \"U\" en position 12.\n";
    $score = $score + 1;}
     
    # absence de "G" en position 15
    if ( $sequence =~ m/.{14}(A|U|C)./)
    {print "Absence d'un \"G\" en position 15.\n";
    $score = $score + 1;}
     
    # "A" en position 21
    if ( $sequence =~ m/.{20}A.*/)
    {print "Presence d'un \"A\" en position 21.\n";
    $score = $score + 1;}
     
    # ni "G" ni "C" en position 21
    if ( $sequence =~ m/.{20}(A|U).*/)
    {print "Absence d'un \"G\" et d'un \"C\" en position 21.\n";
    $score = $score + 1;}
     
    return ($score);
     
    }
     
    $res = MOTIF($sequence);
    print "Le score de ce motif est de $res.";
    je ne comprends pas pourquoi, alors qu'il n'y a pas de "A" en position 5, en résultat, j'ai présence d'un "A" en position 5. Et quand je rentre des séquences différentes, j'obtiens d'autres bizzareries.

    je pense que mon erreur doit être au niveau des expressions régulières


    merci

    perlaud

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    Faut que tu precises le debut de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($sequence =~ m/^.{4}A.*/)

  3. #3
    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
    T'as juste oublié de mettre dans ton expression réguliere ^ pour signifier le début de la séquence, sinon telle que c'est écrit, ça n"a pas de sens car il cherche juste le motif en commencant ou ça l'arrange (perl biensur )

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #!/usr/bin/perl -w
    use strict;
     
    my $res;
    my $sequence= "CCCCCGGGGGGAAAAAAAGAACCCCAA";
     
    sub MOTIF
    {
    my ($sequence)= @_;
    my $score = 0;
     
    #Test  "A" en position 5
    if ($sequence =~ m/^.{4}A.+/g)
    {print "Presence d'un \"A\" en position 5.\n";
    $score = 1;}
     
    # "U" en position 12
    if ( $sequence =~ m/^.{11}U.*/)
    {print "Presence d'un \"U\" en position 12.\n";
    $score = $score + 1;}
     
    # absence de "G" en position 15
    if ( $sequence =~ m/^.{14}(A|U|C)./)
    {print "Absence d'un \"G\" en position 15.\n";
    $score = $score + 1;}
     
    # "A" en position 21
    if ( $sequence =~ m/^.{20}A.*/)
    {print "Presence d'un \"A\" en position 21.\n";
    $score = $score + 1;}
     
    # ni "G" ni "C" en position 21
    if ( $sequence =~ m/^.{20}(A|U).*/)
    {print "Absence d'un \"G\" et d'un \"C\" en position 21.\n";
    $score = $score + 1;}
     
    return ($score);
     
    }
     
    $res = MOTIF($sequence);
    print "Le score de ce motif est de $res.";
    voilà, sinon tu peux le faire aussi avec des tableaux, ce sera plus propre je pense.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Encore une fois, merci beaucoup Djibril!

    perlaud

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Et Merci aussi Schneke!

    perlaud

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

Discussions similaires

  1. [langage] Erreur d'arrondi sur petits nombres
    Par Tchetch dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2005, 10h11
  2. [langage] Erreur incomprehensible!!!!!
    Par sali dans le forum Langage
    Réponses: 4
    Dernier message: 08/05/2004, 20h58
  3. [langage] problème expression régulière
    Par chtiboss dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2004, 16h08
  4. [langage] erreurs utilisation tableaux 2 dimensions
    Par drosof dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2003, 11h44
  5. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45

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