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 PHP Discussion :

Regexp portée minimale [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut Regexp portée minimale
    J'ai un soucis avec la portée d'une regexp à choix multiples. Je sais pas si j'utilise les bons termes rien ne vaut un exemple:

    preg_match_all("/(.|\n)*MOTIF1[^\\n]*[\\n]*((.|\n)*)(MOTIF3|MOTIF4)(.|\n)*/i", $fiche, $matches);


    J'ai un texte :


    MOTIF1
    blabla

    blabal

    MOTIF2
    blabla
    MOTIF3
    blala


    J'aimerai récupérer la partie entre motif1 et motif2, et si motif2 est absent entre motif1 et motif3. Bref il s'agit de demander à preg_match de matcher l'ensemble le plus petit possible.

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match('/MOTIF1((?:\r?\n)*?)(.*)(?1)MOTIF[23]/Us', $fiche, $matches);
    print_r($matches[2]);
    Je me suis permis d'enlever les éventuels retours à la ligne après et juste avant les MOTIF (c'est ce que j'ai cru comprendre en lisant ton pattern)

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Oserais-je émettre l'avis que tant qu'à faire des regex Perl, autant s'habituer avec la vraie syntaxe.
    C'est à dire que l'on peut très bien se passer de l'option 'U', qui n'existe pas en Perl, en utilisant le modificateur de quantificateur '?'

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Oserais-je émettre l'avis
    Vous pouvez Monsieur ; )

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Et puisqu'on m'y autorise, j'argumenterai par le fait que l'utilisation des modificateurs de quantification permet plus de flexibilité : une partie du motif peut être "greedy" et une autre "ungreedy". Trop fort !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    Merci !
    J'ai appris un nouveau truc du coup (greedy/ungreedy).

    Il y a quand même un truc que je n'ai pas trouvé, c'est la signification de "(?1)" ?

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

Discussions similaires

  1. Ports USB
    Par MAIROT dans le forum Composants VCL
    Réponses: 8
    Dernier message: 23/09/2002, 20h07
  2. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  3. Port parallele
    Par Phoneus dans le forum C
    Réponses: 2
    Dernier message: 05/05/2002, 23h19
  4. [Kylix] Kylix port //
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 01/04/2002, 12h30
  5. [Kylix] Kylix / port serie
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 01/04/2002, 12h07

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