Terdapat tiga modus quantifier dalam regex, yang pertama adalah greedy, kedua adalah reluctant, dan yang ketiga adalah possessive. Berikut penjelasannya:
Dalam modus greedy, matcher pertama-tama nge-match seluruh string. Jika tidak ditemukan yang match, dia akan melakukan backtracking dengan membuang satu huruf dari bagian yang match dari input string (yang sudah menjadi bagian match-nya) untuk dipake/di-match oleh character berikutnya pada matcher. Misalnya jika pattern-nya adalah .*foo ketika string input adalah xfooasdasfsdfsdafoo maka yang terjadi adalah, bagian pertama dari matcher, yakni .* (yang artinya match semua jenis character dengan jumlah berapa saja, zero or more times), akan nge-match seluruh input string (greedy = rakus/sebanyak mungkin). Karena seluruh string sudah match dengan dia, otomatis bagian berikutnya dari matcher, yakni character f tidak akan mendapat jatah lagi, dan tidak match. Jadi quantifier tadi, yakni *, akan membuang satu character dari bagian match-nya sehingga character o pada input string menjadi unmatch (di luar dari bagian match-nya), dan ini yang selanjutnya akan di-match dengan character f dari matcher. Namun belum match, dia buang lagi o berikutnya, dan belum match juga dengan f pada matcher, maka f tadi dibuang lagi dari bagian match dari matcher .* sehingga bisa dipake oleh character f dari matcher, dan ini baru match. Kemudian character berikutnya dari matcher yakni o dan o, dengan sendirinya akan match dengan dua character sebelumnya yang sudah dibuang oleh matcher .* yakni o dan o.
Dalam modus recultant, dia akan nge-match sesedikit mungkin (berkebalikan dengan modus greedy tadi). Jadi dalam input yang diberikan, yakni xfooasdasfsdfsdafoo, matcher .*? akan ngematch sesedikit mungkin, yakni pertama match dengan string dengan zero-length, atau “” (tanda kutip di sini menunjukkan ada string di situ yang tidak keliatan), sesuai dengan defenisinya (zero or more times). Selanjutnya bagian berikutnya dari matcher, yakni f, akan mencoba nge-match dengan mengambil satu-satu dari string yang tersisa, yakni xfooasdasfsdfsdafoo (di luar string zero-length tadi), di mana pertama-tama dia mencoba nge-match dengan character x. Karena tidak match, maka quantifier *? akan melahap satu lagi dari string input (melakukan backtrack) yakni x, sehingga bagian pertama dari matcher, yakni .*? akan menyisakan fooasdasfsdfsdafoo untuk di match dengan bagian berikutnya dari matcher, yakni f. Karena sudah match, maka bagian berikutnya dari input string yang tersisa yakni character o dari ooasdasfsdfsdafoo yang akan dimatch dengan bagian berikutnya dari matcher yakni o, demikian pula untuk o berikutnya.
Modus possessive sama sekali tidak melakukan backtracking. Jadi quantifier .*+ akan melahap semua string input, dan sama sekali tidak menyisakan untuk bagian berikutnya dari matcher, yakni f, o, dan o. Sehingga hasil keseluruhannya adalah string input sama sekali tidak match dengan matcher.