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 :

souci de regex ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut souci de regex ?
    bonjour,
    je ne comprends pas pourquoi lorsque je passe $string1 en parametre de getSiteNumber, la fonction me retourne 0. Normalement, $string1 devrait matcher la $key (j'ai testé avec et sans quotemeta), ça renvoie toujours zero). Si zero est retourné c'est que $url!~$key, non ?

    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
    44
    45
    46
    47
     
       1.
          #!/usr/bin/perl -w
       2.
          use strict;
       3.
     
       4.
          my %hashSites;
       5.
          my $string1 = "http://www.ensh.dz/exchange/";
       6.
          my $string2 = "http://www.ensh.dz/ensh.css";
       7.
          $hashSites{quotemeta("http://www.ensh.dz")} = 1;
       8.
     
       9.
          sub getSiteNumber{
      10.
              my $url = $_[0];
      11.
              my $numero;
      12.
              while ( my ($key, $value) = each(%hashSites) ){
      13.
                      if($url =~ /^$key/){
      14.
                          $numero = $value;
      15.
                          return $numero;
      16.
                      }
      17.
              }
      18.
     
      19.
          }
      20.
     
      21.
     
      22.
          print "\n".getSiteNumber($string2);
      23.
          print "\n".getSiteNumber($string1);
    Merci de votre aide

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sites{"http://www.ensh.dz"} = 1;
    sub getSiteNumber{
      my $url = shift;
      for (keys %sites) { 
        return $sites{$_} if $url =~ /^\Q$_/
      }
    }

  3. #3
    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
    En fait, l'erreur ne provient pas de la regexp, mais de la boucle each.
    Lorsque le motif est trouvé dans la boucle, tu effectues un return. De fait, la boucle each est incomplète. A l'appel suivant, each retourne undef, faisant sortir immédiatement de la boucle, et ne testant donc pas le motif.

    Soit tu fais une boucle en utilisant keys (retourne une liste), soit tu utilises each et dans ce cas, tu ne peux pas sortir de la boucle par return. Tu dois alors éventuellement mémoriser que tu as trouvé le numéro, finir normalement ta boucle et retourner le numéro mémorisé (ou le dernier matché, au choix).

Discussions similaires

  1. Souci de Regex
    Par ApocalypseDuck dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2009, 17h45
  2. soucis de regex
    Par Miaou le chat thon dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/12/2008, 16h32
  3. [RegEx] Souci des regex pour les puces donc erreurs W3C
    Par retour dans le forum Langage
    Réponses: 10
    Dernier message: 04/10/2008, 16h09
  4. Soucis avec regex.replace
    Par elric47 dans le forum ASP
    Réponses: 1
    Dernier message: 30/04/2008, 00h33
  5. [REGEX] Souci de regex
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 10h01

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