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 :

Script de tests expressions régulières


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Par défaut Script de tests expressions régulières
    Salut à tous,

    Pour ma formation personnelle aux expressions régulières, je me suis développé un petit script Perl que je croyais sympa :

    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
    #!/usr/bin/perl
     
    # Boucle infinie de saisie de la variable de chaine
    # et de la variable de masque
     
    $fin = "1";
    while ($fin == "1")
    {
      print("Variable de chaine : ");
      $var = <STDIN>;
      # Eliminer caractere fin ligne
      chomp($var);
     
      if ( "$var" eq "quit" )
      {
        $fin = "0";
      }
      else
      {
        print("Masque : ");
        $masque = <STDIN>;
        chomp($masque);
     
        $res = ($var =~ $masque);
        $chaine = $&;
     
        if ($res)
        {
          $ress='V';
        }
        else
        {
          $ress='F';
        }
        $chaine = $&;
     
        printf("Res >%s< ; Result : >%s< ; Var : >%s< Mask : >%s<\n",$chaine,$ress,$var,$masque);
      }  
    }
     
    printf("Fin du programme\n");
    Je l'essaie et ça a l'air de marcher :

    $ ./expr_regu.pl
    Variable de chaine : toto
    Masque : to*
    Res >to< ; Result : >V< ; Var : >toto< Mask : >to*<
    Variable de chaine : toto
    Masque : to+
    Res >to< ; Result : >V< ; Var : >toto< Mask : >to+<
    Variable de chaine : toto
    Sauf que, avec des expressions régulières de style s/..., ça ne passe pas...

    Variable de chaine : toto
    Masque : s/toto/titi/g
    Res >< ; Result : >F< ; Var : >toto< Mask : >s/toto/titi/g<
    Variable de chaine : toto
    Masque : s/toto/titi
    Res >< ; Result : >F< ; Var : >toto< Mask : >s/toto/titi<
    Variable de chaine : toto
    Masque : s/toto/titi/g/
    Res >< ; Result : >F< ; Var : >toto< Mask : >s/toto/titi/g/<
    Variable de chaine : quit
    La variable var n'est jamais modifiée...
    Dans le code, j'ai même essayé de rajouter la ligne spécifique suivante :
    En sus de l'affectation précedemment faite, mais même résultat...

    Quelqu'un aurait-il une explication ?

    Merci !

    Bon week-end.

    Philippe.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    s/// n'est pas une regexp en soi-même, c'est une instruction qui contient une regexp et comment la remplacer et qu'on applique à une string. En toute rigueur "appliquer" une regexp à une string n'a pas de sens. Mais par défaut c'est l'opérateur de matching m// qui est utilisé.
    Donc ton code ne peut pas tester le remplacement, il peut seulement tester le matching.

    --
    Jedaï

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Par défaut Ok
    Ok, j'ai bien compris, et, pour tout dire, je m'en doutais un peu

    Merci beaucoup en tous cas pour votre réponse.

    Cordialement,

    Philippe.

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par the_clansman Voir le message
    Ok, j'ai bien compris, et, pour tout dire, je m'en doutais un peu
    Note bien que si c'est pour ton usage personnel, tu peux tout à fait utiliser eval() et autre joyeuseté, bien que je te conseille plutôt de faire une seconde branche pour tester les remplacements.

    --
    Jedaï

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

Discussions similaires

  1. Compréhension d'un script PYTHON et expressions régulières
    Par Jéjé34 dans le forum Général Python
    Réponses: 2
    Dernier message: 04/06/2013, 07h58
  2. Expression régulière de test email
    Par Ekimasu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/05/2007, 16h30
  3. [RegEx] balises script et expression régulière
    Par Mr. Smith dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 16h33
  4. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  5. Test d'expression régulière, besoin d'aide
    Par RedShift2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2005, 16h04

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