Alguém pode me explicar Quantificadores Possessivos? (Expressões regulares)

Eu estou lendo o documento PCRE, e ele se refere a quantificadores possessivos , mas não explicitamente ou especificamente os define. Eu sei o que é um quantificador ganancioso e sei o que é um quantifer preguiçoso. Mas possessivo?

A man page do PCRE parece estar trapaceando quando usa o termo sem defini-lo. A página man afirma especificamente que o termo quantificador possessivo foi definido pela primeira vez no livro de Friedl . Bem, isso é ótimo, mas eu não tenho o livro de Friedl, e ao ler a man page, nas entrelinhas, não consigo descobrir o que distingue quantificadores possessivos de quantificadores gananciosos.

  • ? = zero ou um, ganancioso
  • ?? = zero ou um, preguiçoso
  • ? + = zero ou um, possessivo
  • ‘+’ = um ou mais, gananciosos
  • + = um ou mais, preguiçoso
  • ++ = um ou mais, possessivo

Talvez o melhor lugar para começar seja o Regex Tutorial – Quantificadores Possessivos :

Ao discutir os operadores de repetição ou quantificadores, expliquei a diferença entre a repetição gananciosa e a preguiçosa. A ganância e a preguiça determinam a ordem em que o motor regex tenta as possíveis permutações do padrão regex. Um quantificador guloso tentará primeiro repetir o token tantas vezes quanto possível e gradualmente abandonará as correspondências enquanto o mecanismo recua para encontrar uma correspondência geral. Um quantificador preguiçoso primeiro repetirá o token quantas vezes forem necessárias e expandirá gradualmente a correspondência à medida que o mecanismo retrocede pela regex para encontrar uma correspondência geral.


Os quantificadores possessivos são uma maneira de evitar que o mecanismo de regex tente todas as permutações. Isso é útil principalmente por motivos de desempenho. Você também pode usar quantificadores possessivos para eliminar determinadas correspondências.

Intereting Posts