A normál regex quantifierek, mint a ?+* mohók, azaz, a lehető leghosszabb egyezést fogják meg.
Azaz, a “cica kutya ló” bemenetre az “a.+” regex a “a kutya ló” részt ragadja meg, nem pedig az “a ló”-t, mert mohó a +.

Ha azt akarjuk, hogy ne legyen mohó, ?-et kell a quantifier után írni:

Így két egyezés is van. Eddig ez triviális.
A gond ott kezdődött, amikor több sorban kellett valamit megkeresni. Ilyenkor be lehet kapcsolni a SingleLine módot, és ekkor a . egyezik a sorvége karakterekre is (\r és \n). Normál esetben nem. Ilyenkor látszólag másképp működik a nem mohó quantifier.
Példa szövegesen, ha valaki ki akarja próbálni:
CreateForExcel\<(\w+?)\>.+?Cica
CreateForExcel<Nyau>);
return CreateListExcel("ccc",
Cica
CreateForExcel<Vau>);
return CreateListExcel("kkk",
Kutya

A feladat, hogy a Cica előtt meg kell találni a legközelebbi CreateForExcelt, és kiszedni a generikus argument értékét (Nyau). Ez szépen működik.
Na, de most jön a kutya!

Látható, hogy nem a legrövidebb egyezést fogta meg, hanem a leghosszabbat, pedig miden quantifier non gready.
Miért?
(A regex nem C# elemzésre való, de hébe-hóba mindenki szeret néha hekkelni.)