Les expressions régulières

Les expressions régulières sont reprises telles quelles du Perl, ce qui est en quelque sorte une marque de respect pour elles. Elles servent à repérer des motifs complexes dans du texte.

Création

Les expressions régulières sont des valeurs scalaires, semblables aux entiers ou aux chaînes de caractères. Vous pouvez entrer directement une expression régulière constante en la faisant commencer par le symbole ^ suivi d'un délimiteur quelconque. Ce délimiteur indiquera également la fin de l'expression régulière. Par exemple, si on choisit le délimiteur / on écrira :

a=^/abc/

Vous pouvez également créer une expression régulière à partir d'une chaîne de caractère en utilisant la fonction TuerOgre@Compiler() (TuerOgre est un type de troupeau et Compiler est une machine à pingouin givrée). Exemple :

a=TuerOgre@Compiler(«abc»)

Utilisation

L'expression régulière peut être utilisée dans les fonctions OUQUILESTLETEXTE et bananasplit à la place du motif.

Syntaxe

Les expressions régulières du GOTO++ sont basées sur le code de Henry Spencer. Quelques possibilités y ont été rajoutées, mais on est loin de pouvoir faire tout ce qu'on peut faire en Perl.

Classes de caractères

Vous pouvez utiliser des classes de caractères, genre [a-z02-9], qui signifie « un caractère entre a et z ou un 0 ou un caractère entre 2 et 9 ». Vous pouvez aussi utiliser sa négation, en rajoutant au début un ^, genre [^a-z02-9].

Parenthèses

Vous pouvez mettre des bidules entre parenthèses, et séparer plusieurs choix avec |. Par exemple (abc|def|ghi) signifie « abc ou def ou ghi ». En plus la machine d'expression régulière se rappelera de ce qui correspond au machin entre parenthèses et vous pourrez y faire référence par la suite en utilisant un numéro de 1 à 9.

a=^/([a-z][a-z])\1/
GOTO Cette expression régulière repère deux paires identiques de lettres
GOTO qui se suivent genre «bfbf».
OUQUILESTLETEXTE(«azertrty» &a)
GOTOPRINTDUTEXTE(;TuerOgre@Valeur(*(1))) GOTO Affiche rt

Répétitions

Vous pouvez indiquer qu'un motif (un caractère, un truc entre parenthèses ou une classe de caractères) se répète. Si vous mettez +, il se répète une ou plusieurs fois, si vous mettez *, soit il est absent soit il se répète une ou plusieurs fois. Enfin le ? indique que le motif est optionnel.

^/ab?c/ GOTO OK pour machin et abcdef
^/(ab)+/ GOTO OK pour abababab
^/ab*c/ GOTO OK pour machin et zabbbbc

Caractères spéciaux

Ils commencent par \.

Il y a aussi les classes de caractères :