Les quantificateurs permettent de dire combien de fois un caractère doit être recherché. Il est possible de dire qu'un caractère peut apparaître 0 ou 1 fois, 1 fois ou une infinité de fois, ou même, avec des accolades, de dire qu'un caractère peut être répété 3, 4, 5 ou 10 fois.
À partir d'ici, la syntaxe des regex va devenir plus complexe !
Reprenons notre raclette. Il y a deux t, mais il se pourrait que l'utilisateur ait fait une faute de frappe et n'en ait mis qu'un seul. On va donc écrire une regex capable de gérer ce cas de figure :
/raclett?e/ |
Ici, le premier t sera trouvé, et derrière le deuxième se trouve le point d'interrogation, ce qui signifie que le deuxième t peut apparaître 0 ou 1 fois. Cette regex gère donc notre cas de figure.
Un cas saugrenu serait qu'il y ait beaucoup de t : « raclettttttttttte ». Pas de panique, il suffit d'utiliser le quantificateur + :
/raclet+e/ |
Le + indique que le t sera présent une fois ou un nombre infini de fois. Avec le symbole *, la lettre est facultative mais peut être répétée un nombre infini de fois. En utilisant *, la regex précédente peut s'écrire :
/raclett*e/ |
À la place des trois symboles vus précédemment, on peut utiliser des accolades pour définir explicitement combien de fois un caractère peut être répété. Trois syntaxes sont disponibles :
Si la tartiflette possède un, deux ou trois t, la regex peut s'écrire :
/raclet{1,3}e/ |
Les quantificateurs, accolades ou symboles, peuvent aussi être utilisés avec les classes de caractères. Si on mange une « racleffe » au lieu d'une « raclette », on peut imaginer la regex suivante :
/racle[tf]+e/ |
Voici, pour clore cette section, quelques exemples de regex qui utilisent tout ce qui a été vu :
Chaîne |
Regex |
Résultat |
Hellowwwwwwwww |
/Hellow+/ |
true |
Goooooogle |
/Go{2,}gle/ |
true |
Le 1er septembre |
/Le [1-9][a-z]{2,3} septembre/ |
true |
Le 1er septembre |
/Le [1-9][a-z]{2,3}[a-z]+/ |
false |
La dernière regex est fausse à cause de l'espace. En effet, la classe [a-z] ne trouvera pas l'espace. Nous verrons cela dans un prochain chapitre sur les regex.
Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub gratuit