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 :

l'equivalant de "et" dans une expression régulière


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut l'equivalant de "et" dans une expression régulière
    Bonjour

    je désire écrire une expression régulière qui substitue le premier et le dernier caractère d'une ligne soute en evitant de l'écrire en deux expression du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ligne=~s/^.//;
    $ligne=~s/.$//;
    j'ai essayé avec le ou "|" mais ça remplace que la première occurrence.

    Merci pour votre aide

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonsoir,

    Bon l'expression régulière n'est pas très "jolie" masi ca fonctionne.
    En fait les parenthèse matche le milieu de la chaine qu'on remplace avec la variable $1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $texte = "abcdefgh";
    $texte =~ s/^.(.*).$/$1/;
    print $texte."\n";

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut
    Merci pour la réponse


    mais je comprend pas bien quand vous dite les parenthèses match le milieu de la phrase !!!
    elles récupère le milieu dans une variable $1.

  4. #4
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Désolé je suis allé un peu vite en besogne.

    En fait l'expression régulière marche comme suit:
    - le ^. -> désigne le premier caractère
    - le .$ -> désigne le dernier caractère
    - le (.*) -> désigne le reste : en ce qui te concerne le milieu du mot et va être contenu dans la variable $1.

    Les parenthèses dans les expressions régulières servent à récupérer ce qui est effectivement reconnu comme motif et ce pour autant de parenthèses mises: $1,$2,$3 etc. Bon je ne suis pas très pédagogue donc pour que ce soit plus clair tu peux regarder dans les tutos Perl en expression régulières pour plus de précisions.

    Donc en gros ici et vas remplacer ton mot par $1 -> le milieu du mot.

    Pour mieux comprendre tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $texte = "abcdefgh";
    $texte =~ s/^.(.*.$)/$1/;
    print $texte."\n";
    Ici la parenthèse englobe aussi le dernier caractère : on supprimera alors que le premier caractère. On peut faire comme tu l'as dit par
    mais c'est juste pour expliquer.

    Est-ce clair maintenant ?

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 57
    Points
    57
    Par défaut
    très claire

    enfin comme je suis débutant je croyais que
    $1 correspond au résultat de ^.
    $2 au (.*)
    $3 au .$

    mais mnt c'est très claire , merci

  6. #6
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Sinon, tu peux utiliser le | mais ajouter le modificateur /g afin de réaliser l'opération autant de fois que nécessaire :
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

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

Discussions similaires

  1. [RegEx] Simple ou double quote dans une expression régulière
    Par Khleo dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2010, 15h58
  2. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  3. Réponses: 6
    Dernier message: 17/08/2005, 12h38

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