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 :

Exepression reguliere et multiple remplacement.


Sujet :

Langage Perl

  1. #1
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut Exepression reguliere et multiple remplacement.
    Voila j'ai un petit soucis avec une expression reguliere que je voudrais mettre en place... alors j'ai la chaine de caractere suivante :


    abc ==> def <== jkl ==> mno <==
    Dans cette chaine je voudrais remplacer tous les "==>" par "<==" et tous les "<==" par "==>". Ce qui donnerais :

    abc <== def ==> jkl <== mno ==>

    mais je n'y arrive pas . Car je ne peux pas d'abord remplacer "==>" puis remplacer "<==".

    Des idees ?

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine =~ s{<==}{==>}g;
    $chaine =~ s{==>}{<==}g;

  3. #3
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    Hmmm nop c est ce que je pensais faire au depart mais ca fonctionne pas car ca donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PERL> $a = "abc ==> def <== jkl ==> mno <==" 
     
    PERL> $a =~ s{<==}{==>}g
     
    PERL> x $a
    $VAR1 = 'abc ==> def ==> jkl ==> mno ==>';
     
    PERL> $a =~ s{==>}{<==}g
     
    PERL> x $a
    $VAR1 = 'abc <== def <== jkl <== mno <==';

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a =~ s{(==>|<==)}{$1 =~ /^==/ ? "<==" : "==>"}eg;

  5. #5
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    Merci
    Je n'y avait pas pense, tres astucieux.

  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
    Citation Envoyé par loula427 Voir le message
    Hmmm nop c est ce que je pensais faire au depart mais ca fonctionne pas car ca donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PERL> $a = "abc ==> def <== jkl ==> mno <==" 
     
    PERL> $a =~ s{<==}{==>}g
     
    PERL> x $a
    $VAR1 = 'abc ==> def ==> jkl ==> mno ==>';
     
    PERL> $a =~ s{==>}{<==}g
     
    PERL> x $a
    $VAR1 = 'abc <== def <== jkl <== mno <==';
    ça m'apprendra à ne pas tester

  7. #7
    Membre confirmé
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Par défaut
    C'etait mon idee initiale en fait...
    Mais bon quelques petits problemes de concept. La solution de philou me convient a merveille

  8. #8
    Membre averti Avatar de philouelgeek
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut
    Salut,

    Citation Envoyé par Philou67430 Voir le message
    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a =~ s{(==>|<==)}{$1 =~ /^==/ ? "<==" : "==>"}eg;

    Tu pourrais expliciter un peu l'expression

    Apparemment dans une premier temps tu cherches les ==> ou <==
    puis tu ....

    J'ai un peu de mal à saisir le fonctionnement en fait


    @++

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Le modificateur /e permet de considérer la chaine de remplacement comme une expression perl. Cette expression est alors évaluée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $1 =~ /^==/ ? "<==" : "==>"
    Le résultat est donc que si le motif reconnu commence par ==, on le remplace par <==, sinon par ==>

  10. #10
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    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
    The Ternary Operator
    The ternary is actually a sequence of operators. The operator is used like this:
     
    CONDITION-PART ? TRUE-PART : FALSE-PART
     
    which is shorthand for the following statement:
     
    if (CONDITION-PART) {
        TRUE-PART
    } else {
        FALSE-PART
    }

  11. #11
    Membre averti Avatar de philouelgeek
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut
    Merci

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

Discussions similaires

  1. [PHP 5.0] Occurences multiples à remplacer dans une chaîne
    Par oneTime dans le forum Langage
    Réponses: 5
    Dernier message: 14/04/2009, 00h36
  2. Remplacement multiple de chaines dans un fichier
    Par keouine dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2008, 16h47
  3. Réponses: 2
    Dernier message: 29/01/2008, 20h15
  4. recherche et remplacement multiples
    Par gdi73 dans le forum Requêtes et SQL.
    Réponses: 24
    Dernier message: 19/06/2007, 12h01
  5. Expression régulière pour plusieurs remplacements
    Par mickael99 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/02/2006, 12h15

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