Вопрос по pcre, regex – Может ли кто-нибудь объяснить мне Притяжательные квантификаторы? (Регулярные выражения)

13

Я читаю документ PCRE, и это относится кpossessive quantifiers, но не определяет их явно или конкретно. Я знаю, что такое жадный квантификатор, и я знаю, что такое ленивый квантификатор. Но притяжательный?

Справочная страница PCRE кажется, обманывает, когда он использует термин, не определяя его. На странице man конкретно указано, что терминpossessive quantifiers был впервые определен вКнига Фридля, Ну, это здорово, но у меня нет книги Фридла, и, читая страницу руководства, между строк я не могу понять, что отличает собственнические квантификаторы от алчных.

? = zero or one, greedy ?? = zero or one, lazy ?+ = zero or one, possessive '+' = one or more, greedy +? = one or more, lazy ++ = one or more, possessive
Этот вопрос был добавлен вStack Overflow Regular Expression FAQпод "Quantifiers & gt;" Подробнее о различиях ... & quot; aliteralmind

Ваш Ответ

1   ответ
12

Возможно, лучшее место для началаRegex Tutorial - Притяжательные квантификаторы:

When discussing the repetition operators or quantifiers, I explained the difference between greedy and lazy repetition. Greediness and laziness determine the order in which the regex engine tries the possible permutations of the regex pattern. A greedy quantifier will first try to repeat the token as many times as possible, and gradually give up matches as the engine backtracks to find an overall match. A lazy quantifier will first repeat the token as few times as required, and gradually expand the match as the engine backtracks through the regex to find an overall match.


Possessive quantifiers are a way to prevent the regex engine from trying all permutations. This is primarily useful for performance reasons. You can also use possessive quantifiers to eliminate certain matches.

собственнические квантификаторы отказываются возвращаться назад - это лучшее объяснение, которое я читал об этом. спасибо за подведение итогов :)
Ах понятно! Прочитав этот урок, мне кажется, что ленивый не является противоположностью жадности. Ленивый должен называться «щедрым» может быть, и притяжательная форма на самом деле должна называться ленивой, потому что притяжательные квантификаторы отказываются возвращаться назад. Они не будут делать никакой дополнительной работы, которая просто чертовски ленива. Cheeso

Похожие вопросы