Quantités rationnelles
Structures de quantification
Les quantificateurs indiquent la fréquence à laquelle la structure d'expression rationnelle précédente doit correspondre. Les classes de quantificateurs sont les suivantes :
- Avancé
- Régulier
- Possif
La différence entre les quantificateurs rétroactifs, réchéssifs et possédant une correspondance met en évidence la partie de la chaîne à essayer pour la correspondance initiale et la manière de réessayer si la tentative initiale ne produit pas de correspondance.
Par défaut, les quantificateurs sont
agrégés de
. Un quantificateur concerné tente d’abord une correspondance avec toute la chaîne d’entrée. Si cela produit une correspondance, la mise en correspondance est considérée comme réussie et le moteur peut passer à la construction suivante dans l'expression rationnelle. Si la première tentative ne produit pas de correspondance, le moteur rétroactive un caractère à la fois jusqu’à ce qu’il trouve une correspondance. Ainsi, un quantificateur agrégé vérifie les correspondances possibles dans l’ordre, de la chaîne d’entrée la plus longue possible à la chaîne d’entrée la plus courte possible, en tentant récursivement de droite à gauche.Ajoutant un
?
(point d’interrogation) à un quantificateur trop précis rend réductible
. Un quantificateur rétentif recherche d’abord une correspondance à partir du début de la chaîne d’entrée, en commençant par le segment le plus court possible de la chaîne qui correspond à la construction d’expression rationnelle. Si cela produit une correspondance, la mise en correspondance est considérée comme réussie et le moteur peut passer à la construction suivante dans l'expression rationnelle. Si la première tentative ne produit pas de correspondance, le moteur ajoute un caractère à la fois jusqu’à ce qu’il trouve une correspondance. Ainsi, un quantificateur rétentent des correspondances possibles dans l’ordre, de la chaîne d’entrée la plus courte possible à la chaîne d’entrée la plus longue possible, en tentant récursivement de gauche à droite. Ajoutant un
+
(signe plus) à un quantificateur trop précis rend la position possédant
. Un quantificateur possédant est comme un quantificateur rétroactif à la première tentative (il tente de déterminer une correspondance avec l’ensemble de la chaîne d’entrée). La différence, c’est que, à la différence d’un quantificateur concerné, un quantificateur possédant ne réessaye pas une chaîne plus courte s’il ne trouve pas de correspondance. Si la correspondance initiale échoue, le quantificateur propriétaire indique qu’une correspondance a échoué. Aucune autre tentative en cours.Année de la construction de la voie | Conception réductible | Conception constructive | Description | Exemple |
|---|---|---|---|---|
?
| ??
| ?+
| Correspond au caractère ou à la structure précédente une fois, ou pas du tout. | st?on correspond à « son » dans « jeanson » et à « siton » dans « jean jean », mais rien dans « cliton » ou « version » |
*
| *?
| *+
| Correspond au caractère précédent ou construit zéro fois. | if* correspond à « if », « iff » dans « diff » ou « je » dans « Print » |
+
| +?
| ++
| Correspond au caractère ou à la structure précédente une ou plusieurs fois. | if+ correspond à « if », « iff » dans « diff », mais rien dans « Print » |
{n}
| {n}?
| {n}+
| Correspond au caractère ou à la construction des caractères précédents exactement n fois. | o{2} correspond à « oo » dans « lookup » et aux 2 premiers o dans « foooo », mais rien dans « montant » |
{n,}
| {n,}?
| {n,}+
| Correspond au caractère ou à la structure précédente au moins n fois. | o{2,} correspond à « oo » dans « lookup » : tous les 5 « » sont dans « foooo », mais rien dans « montant » |
{n,m}
| {n,m}?
| {n,m}+
| Correspond au caractère ou à la structure précédente au moins n fois, mais pas plus de m fois. | F{2,4} correspond à « FF » dans « #FF0000 » et aux 4 derniers F dans « #FFFFFF » |