Question expressions régulières preg_match_all PHP


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Question expressions régulières preg_match_all PHP

Message le Dim Aoû 19, 2007 12:41

Je me demande s'il est possible, lorsque l'on fait un pregmatchall sous PHP d'écrire une expression règulière qui fasse ce qui suit:

unmot(destrucsonsaitpasquoi)encoreunmot(.*?)encoreunmot

L'idée c'est que je récupère uniquement le contenu de (.*?) et pas celui de (destrucsonsaitpasquoi).

Sait-on exprimer (destrucsonsaitpasquoi) en regex et comment?


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Re: Question expressions régulières preg_match_all PHP

Message le Dim Aoû 19, 2007 13:02

ecocentric a écrit:Je me demande s'il est possible, lorsque l'on fait un pregmatchall sous PHP d'écrire une expression règulière qui fasse ce qui suit:

unmot(destrucsonsaitpasquoi)encoreunmot(.*?)encoreunmot

L'idée c'est que je récupère uniquement le contenu de (.*?) et pas celui de (destrucsonsaitpasquoi).

Sait-on exprimer (destrucsonsaitpasquoi) en regex et comment?


Ben des trucs on sait pas quoi, c'est:
Code: Tout sélectionner
.*

nan?


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Dim Aoû 19, 2007 13:49

Pas tout-à-fait mais j'ai trouvé en testant ta réponse.
En fait:
.*? indique une succession de n'importe quoi;
(.*?) fait la même chose mais réalise en plus l'extraction.

"<tr><td>fruit</td>jhshdkjqdkjsd<td>pomme</td><td>verte</td></tr>"
avec comme regex
/\<\/td\>.*?\<td\>(.*?)\<\/td\>/i
va donner "pomme" (il y a un ? en plus pour que l'expression ne soit pas gloutonne).


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Message le Dim Aoû 19, 2007 14:05

ecocentric a écrit:Pas tout-à-fait mais j'ai trouvé en testant ta réponse.
En fait:
.*? indique une succession de n'importe quoi;
(.*?) fait la même chose mais réalise en plus l'extraction.

"<tr><td>fruit</td>jhshdkjqdkjsd<td>pomme</td><td>verte</td></tr>"
avec comme regex
/\<\/td\>.*?\<td\>(.*?)\<\/td\>/i
va donner "pomme" (il y a un ? en plus pour que l'expression ne soit pas gloutonne).


On se fait avancer mutuellement dans la gestion des regexp, c'est cool ;-)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités