Na początek definicje i przykłady:
Kwantyfikatory umożliwiają definiowanie wyrażeń regularnych, które dopasowują się do określonej liczby (zakresu) znaków, wzorców lub klas znaków.
- Przykłady:
{1}dokładnie jedno wystąpienie{0,3}brak wystąpienia lub trzy wystąpienia{,3}to co powyżej{3,9}co najmniej 3, ale nie więcej niż 9 wystąpień{3,}co najmniej 3 wystąpienia bez limitu
- skróty:
*równoznaczne z{0,}dowolna liczba wystąpień; zero lub więcej wystapień+równoznaczne z{1,}wymaga najmniej jednego wystąpienia lub więcej; jeden lub więcej wystąpień?równoznaczne z{0,1}dopasowuje brak lub dokładnie jedno wystąpienie; zero lub jedno wystąpienie
Z powyższych przykładów możemy wyodrębnić pewną specyficzną grupę kwantyfikatorów charakteryzującą się "brakiem granic" lub rozległymi granicami:
*, +, ?, {n}, {n,} oraz {n,m}.Tak określonym kwantyfikatorom nadano nazwę zachłanne.
Zachłanność powoduje dopasowywanie do maksymalnej możliwej liczby wyszukiwanych wzorców w napisie.
Aby ułatwić także znajdziemy coś odwrotnego a mianowicie dopasowanie niezachłanne.
Leniwość, wyłączenie zachłanności powoduje dopasowywanie do minimalnej możliwej liczby wyszukiwanych wzorców w napisie.
- Sposoby wyłączenia zachłanności:
- dodając do wyrażenia regularnego modyfikator /U
- dodając do kwantyfikatora
?np.*?,+?,??,{n}?,{n,}?oraz {n,m}?
Doskonałym przykładem obrazującym działanie zachłanności jest kod html.
przykładowy kod html:
<p>raz</p> dwa trzy cztery <p>zero</p>wyrażenie zachłanne:
<p>.*</p> spowoduje dopasowanie do całego napisu: <p>raz</p> dwa trzy cztery <p>zero</p>wyrażenie nie zachłanne:
<p>.*?</p> spowoduje dopasowanie do części napisu: <p>raz</p>