Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[php] PCRE ungreedy

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
ltressens
WRInaute passionné
WRInaute passionné

Inscrit le: 02 Avr 2004
Messages: 543
Localisation: Toulouse

URL permanente de ce messagePosté le : Dim Juin 08, 2008 17:29    Sujet du message: [php] PCRE ungreedy

Bonjour,

Je n'arrive pas à rendre une regexp ungreedy (non gourmande).

Exemple :

Code:

preg_match_all(
  '/Word1.*?Word2/',
  'Word1 Word1 Word2',
  $matches);
print_r($matches);

Array
(
    [0] => Array
        (
            [0] => Word1 Word1 Word2
        )
)


Pour moi le ? dans .*? veut dire "en essayant de matcher le moins de positions possibles"... pas gourmande quoi...
Mais là où je m'attend à matcher "Word1 Word2", il matche "Word1 Word1 Word2"....

Une idée ?

Merci d'avance
 
ltressens Visiter le site web du posteur
Bool
WRInaute accro
WRInaute accro

Inscrit le: 26 Fév 2004
Messages: 1178
Localisation: Lyon

URL permanente de ce messagePosté le : Dim Juin 08, 2008 17:42    Sujet du message: [php] PCRE ungreedy

Hello,

et directement avec l'option Ungreedy ?
Code:
'/Word1.*Word2/U'
 
Bool Visiter le site web du posteur
ltressens
WRInaute passionné
WRInaute passionné

Inscrit le: 02 Avr 2004
Messages: 543
Localisation: Toulouse

URL permanente de ce messagePosté le : Dim Juin 08, 2008 17:53    Sujet du message: [php] PCRE ungreedy

idem avec le modifier /U

Mais je me suis rendu compte que ca fonctionne si je matche un espace :
Code:

Word1 *?Word2


Ca ne fonctionne pas avec le . :
Code:

Word1.*?Word2


Voilà, toujours aussi perplexe, mais merci de ta réponse bool !
 
ltressens Visiter le site web du posteur
Bool
WRInaute accro
WRInaute accro

Inscrit le: 26 Fév 2004
Messages: 1178
Localisation: Lyon

URL permanente de ce messagePosté le : Dim Juin 08, 2008 18:11    Sujet du message: [php] PCRE ungreedy

Euh.... dans mes souvenirs ça marchait bien pourtant :S
 
Bool Visiter le site web du posteur
jcaron
WRInaute passionné
WRInaute passionné

Inscrit le: 13 Fév 2004
Messages: 523
Localisation: Paris

URL permanente de ce messagePosté le : Dim Juin 08, 2008 22:58    Sujet du message: Re: [php] PCRE ungreedy

ltressens a écrit:
Pour moi le ? dans .*? veut dire "en essayant de matcher le moins de positions possibles"... pas gourmande quoi...
Mais là où je m'attend à matcher "Word1 Word2", il matche "Word1 Word1 Word2"....


man perlre a écrit:
By default, a quantified subpattern is "greedy", that is, it will match as many times as possible (given a particular starting location) while still allowing the rest of the pattern to match.


Donc la différence, c'est "à partir d'un point de départ donné". Donc:
"Word1 Word1 Word2 Word1 Word2" =~ /Word1.*?Word2/ ne matchera que Word1 Word1 Word2 (plutôt que toute la chaîne), mais ne commencera pas plus tard (pour ne matcher que Word1 Word2).

ltressens a écrit:
Mais je me suis rendu compte que ca fonctionne si je matche un espace :
Code:
Word1 *?Word2


Normal: tu n'acceptes que des espaces entre Word1 et Word2, donc forcément, Word1 Word2 ça passe alors que Word1 Word1 Word2 ça ne passe pas.

Si tu nous dit ce que tu cherches à faire précisément on peut peut-être te trouver une solution adaptée...

Jacques.
 
jcaron Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort