[PHP] une regex avec preg_match
hamzafes
Messages postés
258
Statut
Membre
-
hamzafes Messages postés 258 Statut Membre -
hamzafes Messages postés 258 Statut Membre -
Bonjour,
Salam,
j'ai une chaine de caractères :
...[name] hamza [end name] [id]ab6789-58ss[end id] [name]mohamed[end name][id]cc6989-55s[end id]...
et je veux extraire juste le premier id . alors je fais comme ça :
preg_match("#[id](.+)[end id]#", $text, $matches);
résultat :
ab6789-58ss[end id] [name]mohamed[end name][id]cc6989-55s
preg_match ne s'arrete qu'à la deuxième balise [end id] !!!
y'a-t-il une façon de dire à preg_match de s'arrêter à la première balise [end id] ?
Merci et Allah mo3ine
Salam,
j'ai une chaine de caractères :
...[name] hamza [end name] [id]ab6789-58ss[end id] [name]mohamed[end name][id]cc6989-55s[end id]...
et je veux extraire juste le premier id . alors je fais comme ça :
preg_match("#[id](.+)[end id]#", $text, $matches);
résultat :
ab6789-58ss[end id] [name]mohamed[end name][id]cc6989-55s
preg_match ne s'arrete qu'à la deuxième balise [end id] !!!
y'a-t-il une façon de dire à preg_match de s'arrêter à la première balise [end id] ?
Merci et Allah mo3ine
A voir également:
- [PHP] une regex avec preg_match
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Regex ne commence pas par - Forum Programmation
- Retour a la ligne php - Forum Webmastering
- Retour à la ligne php ✓ - Forum PHP
3 réponses
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 ;)