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 :

Regular expression qui ne fonctionne pas


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
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut Regular expression qui ne fonctionne pas
    Bonjour,

    J'ai deux chaines: strA et strB

    strA contient: "blabla;%HOME%\bin;blabla"
    strB contient: ";%HOME%\bin"

    l'expression $strA =~ /$strB/i me retourne rien...

    la chaîne contenu dans strB est entré en dur dans le code, alors je n'ai pas oublié de doubler les \. Ca ne fonctionne toujours pas.

    Cependant en quadruplant les \ cela fonctionne mais du coup quand j'écris la chaine à la suite de strA j'obtiens des \\ au lieu des \...

    Somebody can help me? please

  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
    Primo, toujours utiliser des simple quotes ' plutôt que des doubles " si tu n'as pas explicitement besoin des doubles (interpolation, ou usage de caractères spéciaux comme \n). Ca t'évitera bien des drames... Par exemple ici :
    %HOME est interprété comme un hash, et \b comme un backspace...
    sera bien plus correct

    Deuxio, lorsque tu veux intégrer une variable "texto" dans une regex, utilise quotemeta() ou les équivalents \Q et \E. Par "texto" je veux dire si tu veux matcher exactement le texte contenu dans ta variable, et pas une regex dont le contenu serait celui de ta variable (dont les caractères prendraient alors des sens particuliers) :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $rStrB = quotemeta( $strB );
    $strA =~ /$rStrB/i;
    Si tu respectes ces deux règles, tu devrais obtenir un résultat correct.

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut
    T'es un Dieu!

    merci

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

Discussions similaires

  1. [RegEx] Expression régulière qui ne fonctionne pas ?
    Par MaTHieU_ dans le forum Langage
    Réponses: 5
    Dernier message: 23/07/2007, 14h43
  2. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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