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 :

perl anti gourmand econome egal


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut perl anti gourmand econome egal
    Bonjour,
    Suite à http://www.developpez.net/forums/d67...ence-variable/
    J'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/usr/bin/perl -w
     
    $fil="lo.htm";
    open(fileIn,$fil)||die("\ngross errh");; #p49
     
    @tableauFileIn = <fileIn>;
    foreach $ligne (@tableauFileIn) {
      if (  $ligne   =~ /(=.*?php)/   ) #+pte chn possible pr le =
        {				
       print  "\n$1";
        }
    }
    close(fileIn);
    Sauf que sij'ai dans lo.htm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       <td colspan="3"><a href="offres/offres.php" target="_top" onMouseOut="MM_nbGroup('out');" onMouseOver="MM_nbGroup('over','nosoffres','images/accueil2/index2_r5_c1_f2.gif','images/accueil2/index2_r5_c1_f3.gif',1);" onClick="MM_nbGroup('down','navbar1','nosoffres','images/accueil2/index2_r5_c1_f3.gif',1);"><img name="nosoffres" src="images/accueil2/nos-offres.gif" width="117" height="28" border="0" alt=""></a></td>
    loca.fr.htm:    <td colspan="3"><a href="franchises/franchise.php" target="_top" onClick="MM_nbGroup('down','navbar1','index2_r6_c1','images/accueil2/index2_r6_c1_f3.gif',1)" onMouseOver="MM_nbGroup('over','index2_r6_c1','images/accueil2/index2_r6_c1_f2.gif','images/accueil2/index2_r6_c1_f3.gif',1)" onMouseOut="MM_nbGroup('out');"><img name="index2_r6_c1" src="images/accueil2/index2_r6_c1.gif" width="117" height="30" border="0" alt=""></a></td>
    :il me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ="3"><a href="offres/offres.php
    ="3"><a href="franchises/franchise.php
    Or ,dans mon code, j'ai mis qui est anti gourmand donc devrait me donner les chaînes les + courtes, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ="offres/offres.php
    ="franchises/franchise.php
    Alors comment avoir ces chaînes les + courtes ?

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Ca ne marche pas comme ça... *? est paresseux (pas anti-gourmand) et il essaie de matcher le moins possible à partir d'une position donnée, autrement dit lorsque la regex tombe sur le premier "=" de ta chaîne (.*?) matche la plus petite chaîne possible entre ce = et .php, mais il ne se préoccupe pas du fait qu'il y a un autre = plus près du .php.
    Je ne vais pas essayer de t'expliquer comment marche le moteur de regex de Perl, il ya des bons bouquins sur le sujet.

    Une solution à ton problème est d'utiliser plutôt :
    --
    Jedaï

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    ok! parfait!ça marche
    Merci
    Euh mais l'opérateur m ds m// veut bien dire / comme séparateur?
    Est-ce bien la même chose que // ?

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    le m de m// veut dire "match" et m/truc/ et /truc/ sont synonymes, je trouve simplement la première forme plus lisible en général et par ailleurs ça permet d'utiliser d'autre séparateurs que / ce qui est pratique, surtout lorsqu'on travaille sur de l'HTML.
    --
    Jedaï

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    ok
    Merci!

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

Discussions similaires

  1. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  2. [langage] Inclure de perl en c !!!
    Par ryo00 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2002, 10h03
  3. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  4. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 17h22
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

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