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>