[PHP] une regex avec preg_match
Fermé
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
-
20 oct. 2009 à 17:26
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 - 20 oct. 2009 à 19:18
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 - 20 oct. 2009 à 19:18
A voir également:
- [PHP] une regex avec preg_match
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php?id=1 - Forum PHP
- Php alert - Forum PHP
- Bouton php - Forum PHP
3 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
20 oct. 2009 à 19:00
20 oct. 2009 à 19:00
Salut,
par défaut, une expression régulière avec une * ou un + cherche à correspondre à la plus grande partie de texte possible, on dit qu'elle est gourmande (en anglais greedy).
Pour demander à ta regexp de s'arrêter à la première correspondance, il faut la faire devenir non-gourmande ou paresseuse (en anglais lazy), en rajoutant un ? ce qui donne *? (on entend parfois parler d'étoile paresseuse) ou +? .
Voici une page de l'excellent site regular-expressions.info (en anglais) qui parle des regexp gourmandes et paresseuses : https://www.regular-expressions.info/repeat.html#greedy
Bonne lecture ;)
par défaut, une expression régulière avec une * ou un + cherche à correspondre à la plus grande partie de texte possible, on dit qu'elle est gourmande (en anglais greedy).
Pour demander à ta regexp de s'arrêter à la première correspondance, il faut la faire devenir non-gourmande ou paresseuse (en anglais lazy), en rajoutant un ? ce qui donne *? (on entend parfois parler d'étoile paresseuse) ou +? .
Voici une page de l'excellent site regular-expressions.info (en anglais) qui parle des regexp gourmandes et paresseuses : https://www.regular-expressions.info/repeat.html#greedy
Bonne lecture ;)
Utilisateur anonyme
20 oct. 2009 à 19:10
20 oct. 2009 à 19:10
rajoute un U à la fin de ta regex pour la rendre "non-gourmande" ( = Ungreedy ) :
(j'ai rajouté un i pour l'insensibilité à la casse, à toi de voir si tu gardes ou non)
preg_match("#[id](.+)[end id]#iU", $text, $matches);
(j'ai rajouté un i pour l'insensibilité à la casse, à toi de voir si tu gardes ou non)
hamzafes
Messages postés
243
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
4 mai 2013
54
20 oct. 2009 à 19:18
20 oct. 2009 à 19:18
merci bien, cette solution marche parfaitement