Les quantificateurs +, *, {1,} et {0,} sont des quantificateurs gourmands (ou gloutons, greedy en naingliche) car ils vont essayer de valider (ou capturer) autant de caractères que possible.

Prenons comme exemple le morceau de code HTML suivant que vous avez récupèré sur un site :

Ecrire à <a href="mailto:vador@lesmechants.com">Dark Vador</a><br>
Ecrire à <a href="mailto:yoda@lesgentils.com">Yoda</a>

et pour lequel vous voudriez extraire les adresses e-mail (attention, ce n'est pas bien de faire des aspirateurs d'adresse e-mail - gros yeux -, et ceci n'est pas un encouragement, mais seulement un exemple).

L'expression régulière qui vient à l'esprit est :
/"mailto:.*"/

Exemple : quantificateur gourmand
<?php require('bib_fonctions.php'); htmlDebut('Quantificateur gourmand'); $txt = 'Ecrire à <a href="mailto:vador@lesmechants.com">Dark Vador</a><br>Ecrire à <a href="mailto:yoda@lesgentils.com">Yoda</a>'; $expReg = '/"mailto:.*"/'; testerExpHtml($expReg, $txt); htmlFin(); ?>

Quand on teste on voit que l'expression a capturé le plus de caractères possibles entre deux guillemets : elle commence la capture au premier guillemet du texte et la termine au tout dernier. Voilà ce qu'est la gourmandise chez une expression régulière.

Pour réduire la gloutonnerie d'une expression il faut ajouter un point d'interrogation (?) après le quantificateur.Ainsi on ne capturera que le minimum de caractère. L'expression de notre exemple devient donc :
/"mailto:.*?" /

Exemple : quantificateur non gourmand
<?php require('bib_fonctions.php'); htmlDebut('Quantificateur non gourmand'); $txt = 'Ecrire à <a href="mailto:vador@lesmechants.com">Dark Vador</a><br>Ecrire à <a href="mailto:yoda@lesgentils.com">Yoda</a>'; $expReg = '/"mailto:.*?"/'; testerExpHtml($expReg, $txt); htmlFin(); ?>