Regular Expressions
Kwantyfikatory dzierżawcze
Szukaj…
Uwagi
Podstawowe zastosowanie kwantyfikatorów dzierżawczych
Kwantyfikatory dzierżawcze to kolejna klasa kwantyfikatorów w wielu odmianach wyrażeń regularnych, które umożliwiają skuteczne cofanie śledzenia dla danego tokena. Może to pomóc poprawić wydajność, a także w niektórych przypadkach zapobiec dopasowaniom.
Klasę kwantyfikatorów dzierżawczych można odróżnić od kwantyfikatorów leniwych lub zachłannych przez dodanie znaku + za kwantyfikatorem, jak pokazano poniżej:
| Kwantyfikator | Chciwy | Leniwy | Zaborczy |
|---|---|---|---|
| Zero lub więcej | * | *? | *+ |
| Jeden lub więcej | + | +? | ++ |
| Zero lub jeden | ? | ?? | ?+ |
Rozważmy na przykład dwa wzorce ".*" I ".*+" , Działające na ciągu "abc"d . W obu przypadkach znak " na początku ciągu znaków jest dopasowany, ale później oba wzorce będą miały różne zachowania i wyniki.
Chciwy kwantyfikator będzie wtedy slurpował resztę ciągu, abc"d . Ponieważ to nie pasuje do wzorca, następnie cofnie się i upuści d , pozostawiając kwantyfikator zawierający abc" . Ponieważ to wciąż nie pasuje do wzorca, kwantyfikator upuści " , pozostawiając w nim tylko abc . To pasuje do wzorca (ponieważ " jest dopasowywany dosłownie, a nie przez kwantyfikator), a wyrażenie regularne zgłasza sukces.
Kwantyfikator dzierżawczy będzie również slurował resztę ciągu, ale w przeciwieństwie do chciwego kwantyfikatora nie będzie się cofał. Ponieważ jego zawartość, abc"d , nie pozwala na resztę wzorca dopasowania, wyrażenie regularne zatrzyma się i zgłosi niepowodzenie dopasowania.
Ponieważ kwantyfikatory dzierżawcze nie wykonują śledzenia wstecznego, mogą powodować znaczny wzrost wydajności w przypadku długich lub złożonych wzorców. Mogą być jednak niebezpieczne (jak pokazano powyżej), jeśli nie wiadomo, jak dokładnie kwantyfikatory działają wewnętrznie.