Groupes et intervalles

Brouillon
Cette page n'est pas terminée.

Les groupes et intervalles permettent de représenter des groupes ou des intervalles de caractères dans des expressions rationnelles.

Types

Caractères Signification
x|y

Correspond à 'x' ou 'y'.

Ainsi, /vert|rouge/ correspond à 'vert' dans "feu vert" et à 'rouge' dans "feu rouge".

[xyz]
[a-c]
Un ensemble de caractère. Ce type de motif correspond pour n'importe quel caractètre présent entre les crochets, y compris les séquences d'échappement. Les caractères spéciaux comme le point (.) et l'astérisque ne sont pas considérés comme spéciaux au sein d'un ensemble et n'ont donc pas besoin d'être échappés. Il est possible de donner un ensemble sur un intervalle de caractères en utilisant un tiret (-), comme le montre l'exemple qui suit.

Le motif [a-d],  aura les mêmes correspondances que [abcd], correspondant au 'b' de "bulle" et au 'c' de "ciel". Les motifis /[a-z.]+/ et /[\w.]+/ correspondront pour la chaîne entirère : "Adre.ss.e".

[^xyz]
[^a-c]

Exclusion d'un ensemble de caractères. Cela correspond à tout ce qui n'est pas compris entre crochets. Il est possible de fournir un intervalle de caractères en utilisant un tiret (-). Les autres règles qui s'appliquent pour l'ensemble de caractères (ci-avant) s'appliquent également ici.

Par exemple, [^abc] est équivalent à [^a-c]. Ils correspondent à 'u' dans "bulle" et à 'i' dans "ciel".

Note : Le caractère ^ peut également être utilisé afin d'indiquer le début d'un champ.

(x)

Correspond à 'x' et garde la correspondance en mémoire. Les parenthèses permettent de capturer l'expression dans un « groupe ».

Les '(toto)' et '(truc)', dans le motif /(toto) (truc) \1 \2/ correspondent et gardent en mémoire les deux premiers mots de la chaîne de caractère "toto truc toto truc". Les \1 et \2 du motif correspondent respectivement à la première et à la deuxième correspondances pour les sous-chaînes entre parenthèses. Lorsqu'on souhaite effectuer un remplacement, on utilisera $1 et $2 pour faire référence au premier et second groupe et $n pour faire référence au n-ième groupe capturé (ex. ('toto truc'.replace(/(...) (...)/, '$2 $1'). $& fera référence à la chaîne entière).

Capturing groups have a performance penalty. If you don't need the matched substring to be recalled, prefer non-capturing parentheses (see below).

String.match() won't return groups if the /.../g flag is set. However, you can still use String.matchAll() to get all matches.

\n

Avec n un entier positif. Cela permet de faire référence à la dernière sous-chaîne qui correspond au n-ième groupe entre parenthèses de l'expression rationnelle (en comptant les parenthèses gauche). Ainsi, /apple(,)\sorange\1/ correspondra à "apple, orange," dans "apple, orange, cherry, peach".

(?<Nom>x)

Correspond à x et nomme la correspondance. Les correspondances associées pourront être retrouvées via le nom indiqué. Les chevrons ('<' et '>') sont obligatoires pour encadrer le nom.

Ainsi, si on veut extraire la composante de zone d'un numéro de téléphone aux États-Unis, on pourra écrire /\((?<area>\d\d\d)\)/ et récupérer le nombre voulu avec matches.groups.area.

(?:x) Correspond à 'x' mais ne garde pas la correspondance en mémoire. Les parenthèses ne capturent pas l'expression et permettent d'utiliser des sous-expressions d'une expression régulière pour travailler plus finement. L'expression /(?:zoo){1,2}/ sans parenthèes non-capturantes les caractères {1,2} ne s'appliqueraient qu'au dernier 'o' de 'zoo'. Avec les parenthèses capturantes, {1,2} s'applique au mot entier 'zoo'.

 Note de compatibilité : Firefox ne prend pas en charge les groupes nommés. Pour plus d'informations, voir le bug correspondant.