Comprendre la différence entre *, +, {n,m} et l'ajout d'un ?.
Les quantificateurs précisent combien de fois l'élément précédent se répète. * signifie 0 fois ou plus, + 1 fois ou plus, et ? 0 ou 1 fois. On écrit un nombre exact avec {n} et une plage avec {n,m}. Par exemple, \d{3} désigne exactement trois chiffres.
Par défaut, les quantificateurs sont gourmands (greedy). Autrement dit, ils cherchent à en consommer autant que possible. Appliquer <.*> à <a>b<c> capture tout d'un bloc, du premier < jusqu'au dernier >.
Ajouter ? après un quantificateur donne une correspondance paresseuse (lazy). <.*?> consomme le moins possible et ne capture que <a>. Cette différence est déterminante lorsqu'on veut extraire un à un les contenus entre balises ou entre guillemets.
La gourmandise ou la paresse fait souvent que le motif se comporte autrement que prévu. Si le résultat capture trop largement, pensez à un quantificateur paresseux ou à une classe de caractères négative (comme [^>]).