Quelqu'un peut m'expliquer les quantificateurs possessifs? (Expressions Régulières)

je lis le PCRE doc, et il se réfère à quantificateurs possessifs , mais ne les définit pas explicitement ou spécifiquement. Je sais ce qu'est un quantificateur cupide, et je sais ce qu'est un quantificateur paresseux. Mais possessif?

Le PCRE page de manuel de semble être la tricherie quand il utilise le terme sans le définir. La page de manuel précise que le terme quantificateurs possessifs était le premier défini dans la section Friedl du livre . C'est génial, mais je n'ai pas le livre de Friedl, et en lisant la page de manuel, entre les lignes, Je ne peux pas comprendre ce qui distingue les quantificateurs possessifs des cupides.

  • ? = zéro ou un, cupide
  • ?? = zéro ou un, paresseux
  • ?+ = zéro ou un, possessif
  • ' + '= un ou plusieurs, cupides
  • +? = un ou plus, paresseux
  • ++ = un ou plusieurs, possessive
13
demandé sur Cheeso 2009-07-13 05:58:08

1 réponses

peut - être le meilleur endroit pour commencer est Tutorial Regex-possessive Quantifiers :

en discutant de la répétition opérateurs ou quantificateurs, j'ai expliqué la différence entre gourmand et paresseux répétition. La gourmandise et la paresse déterminer l'ordre dans lequel les regex essaie les permutations possibles de l'expression régulière pattern. Une gourmande quantificateur va d'abord essayer de répéter le jeton autant de fois que possible, et peu à peu jusqu'correspond l' moteur revient à trouver un ensemble correspondre. Un quantificateur paresseux sera d'abord répétez le jeton comme peu de fois que nécessaire, et d'étendre progressivement la match comme le moteur revient à travers le regex pour trouver une correspondance globale.


quantificateurs possessifs sont un moyen d'empêcher le moteur regex de j'essaie toutes les permutations. Ceci est principalement utile pour les performances raisons. Vous pouvez également utiliser des quantificateurs possessifs pour éliminer certains correspondre.

12
répondu Andrew Hare 2012-10-11 19:34:17