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] modifications


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Par défaut [langage] modifications
    Bonjour!
    Je recherche à faire ceci :
    Dans un texte, je recherche toutes les expressions du style
    ($ligne =~ /\s[a-z][a-z][a-z][A-Z]([A-Z])+/)
    Jusque là, tout va bien...
    Mais après, je souhaiterais modifier l'écriture de cette expression et la transformer ainsi :

    Exemple : si je trouve comme expression
    Un espace suivi de abcDEF, je veux écrire
    abcD abcE abcF.

    J’avais pensé utiliser $& avec des crochets... mais ça ne fonctionne pas... j'ai cherché dans ma doc, mais j'ai rien trouvé qui pourrait m'aider.

    Est ce que vous pourriez me donner des pistes SVP?

    Merci d'avance!

  2. #2
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Bonjour,

    tu peux utiliser la substitution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $var =~ s/\ abcDEF/\ abcD abcE abcF/g;
    Voila une possibilité

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Par défaut
    Non, je ne peux pas...
    Quand je recherche l'expression avec 3 lettres minuscules à la suite suivies d'au moins 2 lettres majuscules, je ne sais pas quelles sont ces lettres...
    Je voudrais pouvoir rechercher une expression comme ça
    ($ligne =~ /\s[a-z][a-z][a-z][A-Z]([A-Z])+/)
    Et après, pouvoir traiter séparément chaque élément
    C’est pour ça que j'ai tenté d'utiliser $&[4] par exemple pour récupérer une majuscule, mais cette formule n'existe pas...dommage!

    Je veux retourner ceci :
    1ere minuscule suivie de 2e minuscule suivi de 3e minuscule suivi de 1ere majuscule
    1ere minuscule suivie de 2e minuscule suivi de 3e minuscule suivi de 2e majuscule
    …jusqu’à ne plus avoir de majuscule dans l’expression trouvée

    J’espère que j’ai été plus claire…

  4. #4
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Bon je comprends mieux.

    Voici un code source qui transforme ta chaine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (<>) {
        chop;
        while (s/\s([a-z])([a-z])([a-z])([A-Z])([A-Z]+)/ $1$2$3$4 $1$2$3$5/)
        {
        }
        print $_ . "\n";
    }
    Ta chaine sortira bien. Apres tu peux faire un split pour recuperer chaque zone deja decoupé. (C'est une exemple. Tu peux utiliser les variables de match aussi)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Par défaut
    excuse moi mais je ne comprends pas très bien ce code... je suis pas experte en perl...
    est ce que tu peux me le commenter STP?
    merci d'avance!

  6. #6
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Citation Envoyé par giverny
    excuse moi mais je ne comprends pas très bien ce code... je suis pas experte en perl...
    est ce que tu peux me le commenter STP?
    merci d'avance!
    Il n'y a pas de problemes.
    C'est un programme pour tester. Mais la ligne importante, c'est celle du while.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while (<>) { # Lecture de l'entre standard. Valeur stockée dans $_
        chop;  # On vire le '\n' de la variable $_
        while (s/\s([a-z])([a-z])([a-z])([A-Z])([A-Z]+)/ $1$2$3$4 $1$2$3$5/) 
        { 
           # Rentre dans cette boucle tant qu'il y a des substitutions a faire
        } 
        print $_ . "\n"; # On affiche la variable pour voir le resultat des substitutions.
    }
    Si tu avais :
    toto abcDEF

    Tu as dans la variable apres :
    toto abcD abcE abcF

    J'espere que ca te convient.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Par défaut
    ton petit exemple marche très bien, et je le comprends.
    j'essaye de le mettre en place pour mon programme et je te tiens au courant
    merci beaucoup!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Par défaut
    c'est bon, j'ai reussi à inclure ton modèle dans mon programme!
    merci beaucoup!

    c'est super pratique perl pour la bioinfo!!!

  9. #9
    Membre expérimenté Avatar de Driden
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Par défaut
    Je te conseille "Introduction à Perl pour la bioinformatique" aux éditions O'Reilly, tu as beaucoup d'exemples et les themes sont surement tres proches de ce dont tu as besoin.
    Et comme ça tu auras pas de mal pour l'option d'Agorithmique du Génome si tu la choisis.

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

Discussions similaires

  1. [Langage] Modification d'une classe dans un vector
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2008, 03h44
  2. [langage] [Fichier]problème modification de fichier
    Par Melchisedec dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 23h01
  3. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54
  4. [langage] recherche exactement un modif
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2003, 11h00
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

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