Antisèche sur la syntaxe des expressions rationnelles
Cette page fournit une « antisèche » sur l'ensemble des fonctionnalités offertes par la syntaxe des objets RegExp
en agrégeant le contenu des articles contenus dans le guide sur les expressions rationnelles. Si vous avez besoin de plus d'informations sur un sujet donné, vous pouvez suivre le lien donné en début de chaque section pour accéder à l'article correspondant. Vous pouvez également aller consulter le guide en question.
Classes de caractères
Les classes de caractères permettent de distinguer différents types de caractères comme, entre autres, les lettres ou les chiffres.
Caractères | Signification |
---|---|
. |
Peut signifier :
On notera que le marqueur multiligne
ES2018 a ajouté le marqueur |
\d |
Correspond à tout chiffre (chiffre arabe). Équivalent à la classe |
\D |
Correspond à tout caractère qui n'est pas un chiffre (chiffre arabe). Équivalent à la classe |
\w |
Correspond à tout caractère alphanumérique appartenant à l'alphabet latin ou aux chiffres arabes, incluant également le tiret bas. Équivalent à la classe |
\W |
Correspond à tout caractère qui n'est pas un caractère de mot de l'alphabet latin ou des chiffres arabes. Équivalent à la classe |
\s |
Correspond à un caractère de blanc, ce qui inclut un espace, une tabulation, une tabulation verticale, un saut de ligne ou les autres caractères d'espacement Unicode. Équivalent à la classe |
\S |
Correspond à un caractère qui n'est pas un blanc. Équivalent |
\t |
Correspond à une tabulation horizontale. |
\r |
Correspond à un retour chariot. |
\n |
Correspond à un saut de ligne. |
\v |
Correspond à une tabulation verticale. |
\f |
Correspond à un saut de page. |
[\b] |
Correspond à un retour arrière. Si vous recherchez le caractère de limite de mot, (\b ), voir Limites.
|
\0 |
Correspond au caractère NUL. Ne doit pas être suivi par un autre chiffre. |
\cX
|
Correspond à un caractère de contrôle représenté par sa notation caret, où "X" est une lettre de A à Z (correspondant respectivement aux points de code |
\xhh
|
Correspond au caractère dont le code hexadécimal sur deux chiffres vaut hh .
|
\uhhhh
|
Correspond au codet UTF-16 de valeur hexadécimale (représentée sur 4 chiffres) hhhh .
|
\u{hhhh} or \u{hhhhh}
|
(Uniquement lorsque le marqueur u est activé) Correspond au caractère dont la valeur Unicode représentée en hexadécimale vaut U+hhhh ou U+hhhhh .
|
\ |
Indique que le caractère suivant devrait être traité spécialement ou échappé. Il se comporte d'une de ces deux façons.
On notera que certains caractères comme
Note : Afin de correspondre à ce caractère ("\") littéralement, on l'échappera lui-même en utilisant |
Assertions
Les assertions incluent les limites (décrivant les débuts et fins de ligne ou de mots) et d'autres motifs indiquant certains critères pour qu'une correspondance soit possible (recherche en avant, en arrière, expressions conditionnelles).
Assertions de limites
Caractères | Signification |
---|---|
^ |
Correspond au début de la chaîne. Si le marqueur multiligne est présent, cela correspond également immédiatement après un caractère de rupture de ligne. Ainsi, Note : Ce caractère a un sens différent s'il apparaît au début d'un groupe. |
$ |
Correspond à la fin de la chaîne. Si le marqueur multiligne est présent, cela correspond également immédiatement avant un caractère de rupture de ligne. Ainsi, |
\b |
Correspond à une limite de mot. Il s'agit de la position où un caractère de mot n'est pas suivi ou précédé d'un autre caractère de mot. Par exemple entre une lettre et un espace. La limite de mot n'est pas incluse dans la correspondance. Autrement dit, la longueur d'une limite de mot vaut zéro. Exemples :
Pour la correspondance du caractère retour arrière ( |
\B |
Correspond à une position qui n'est pas une limite de mot. Il s'agit d'une position où le caractère précédent et le caractère suivant sont du même type : ou tous les deux sont des caractères de mot, ou tous les deux ne sont pas des caractères de mot. On a donc cette correspondance entre deux lettres ou entre deux espaces. De même que pour la limite de mot, cette position n'est pas incluse dans la correspondance. Ainsi, |
Autres assertions
Note :
Le caractère ?
peut également être utilisé comme quantificateur.
Caractères | Signification |
---|---|
x(?=y) |
Recherche en avant Correspond à "x" uniquement si "x" est suivi par "y". Ainsi, / |
x(?!y) |
Recherche en avant négative Correspond à "x" uniquement si "x" n'est pas suivi par "y". Ainsi, |
(?<=y)x |
Recherche en arrière Correspond à "x" uniquement si "x" est précédé de "y". Ainsi, |
(?<!y)x |
Recherche en arrière négative Correspond à "x" uniquement si "x" n'est pas précédé de "y". Ainsi, |
Groupes et intervalles
Les groupes et intervalles indiquent des groupes ou intervalles pour les caractères.
Caractères | Signification |
---|---|
x|y
|
Correspond à "x" ou "y". Ainsi |
[xyz]
|
Une classe de caractères. Correspond à n'importe lequel des caractères entre crochets. Il est possible d'indiquer un intervalle de caractères en utilisant un tiret. Toutefois, si le tiret apparaît comme premier ou dernier caractère entre les crochets, il sera interprété littéralement.
Ainsi,
Par exemple,
Par exemple, |
|
La négation ou le complément d'une classe de caractère. Correspond à tout ce qui n'est pas indiqué entre les crochets. Il est possible d'indiquer un intervalle de caractères en utilisant un tiret. Si ce dernier est le premier ou le dernier caractère entre les crochets, il est interprété littéralement. Ainsi Note : Le caractère ^ peut également indiquer le début d'une chaîne de caractères. |
(x) |
Groupe capturant Correspond à
Une expression rationnelle peut avoir plusieurs groupes capturants. Les résultats de ces mémorisations sont stockés dans un tableau dont les éléments suivent le même ordre que les parenthèses ouvrantes des groupes capturants, ce qui correspond généralement à l'ordre des groupes. On peut ainsi accéder aux résultats avec l'index correspondant ( Les groupes capturants induisent un coût en performances. Si vous n'avez pas besoin de réutiliser les fragments de chaînes qui correspondent, privilégiez l'utilisation des groupes non capturants (voir ci-après).
|
\n
|
Avec "n" un entier positif. Une référence à la n-ième correspondance fournie par un groupe. Ainsi, |
\k<Nom> |
Une référence au dernier fragment de chaîne correspondant au groupe capturant nommé indiqué par
Ainsi,
Note : |
(?<Nom>x) |
Groupe de capture nommé Correspond à "x" et enregistre la correspondance avec le nom indiqué par
Ainsi, pour extraire le département d'un code postal, on pourra utiliser |
(?:x) |
Groupe non-capturant Correspond à "x" mais ne garde pas la correspondance en mémoire. La sous-chaîne correspondante ne peut pas être récupérée depuis les éléments du tableau des correspondances ([1], ..., [n] ) ou depuis les propriétés prédéfinies de l'objet RegExp ($1, ..., $9 ).
|
Quantificateurs
Les quantificateurs indiquent le nombre de caractères ou d'expressions pour la correspondance.
Note : Dans ce qui suit, élément fait référence à des caractères uniques ou à des classes de caractères, des échappements Unicode, des groupes et des intervalles.
Caractères | Signification |
---|---|
x*
|
Correspond à l'élément précédent "x" 0 ou plusieurs fois. Ainsi, |
x+
|
Correspond à l'élément précédent "x" 1 ou plusieurs fois. Cette forme est équivalente à |
x?
|
Correspond à l'élément précédent "x" 0 ou 1 fois. Ainsi,
S'il est utilisé immédiatement après l'un des quantificateurs |
x{n}
|
Avec "n" un entier positif, correspond à "n" occurrences, exactement, de l'élément "x" précédent. Ainsi, |
x{n,}
|
Avec "n" un entier positif, correspond à au moins "n" occurrences de l'élément "x" précédent. Ainsi, |
x{n,m}
|
Avec "n" qui vaut 0 ou un entier positif et "m" un autre entier positif, et
|
|
Par défaut, les quantificateurs comme
|
Échappement de propriétés Unicode
Les séquences d'échappement de propriétés Unicode permettent de cibler des caractères en fonction de leurs propriétés Unicode.
// Valeurs non-binaires
\p{ValeurPropriétéUnicode}
\p{NomPropriétéUnicode=ValeurPropriétéUnicode}
// Valeurs binaires et non-binaires
\p{NomPropriétéUnicodeBinaire}
// Négation : \P correspond à la négation de \p
\P{ValeurPropriétéUnicode}
\P{NomPropriétéUnicodeBinaire}
- NomPropriétéUnicodeBinaire
-
Le nom d'une propriété binaire Unicode. Par exemple
ASCII
,Alpha
,Math
,Diacritic
,Emoji
,Hex_Digit
,Math
,White_space
, etc. Voir la liste des propriétés dans les données Unicode pour plus d'informations. - NomPropriétéUnicode
-
Le nom d'une propriété non-binaire :
- General_Category (
gc
) - Script (
sc
) - Script_Extensions (
scx
)
Voir aussi PropertyValueAliases.txt
- General_Category (
- ValeurPropriétéUnicode
-
L'une des valeurs indiquées dans la section "Values". De nombreuses valeurs ont des alias ou des noms raccourcis (par exemple, la valeur
Decimal_Number
, de la propriétéGeneral_Category
, peut être écriteNd
,digit
, ou encoreDecimal_Number
). Pour la plupart des valeurs, la partieNomPropriétéUnicode
et le signe égal peuvent être omis. SiNomPropriétéUnicode
est indiqué, la valeur doit correspondre au type de propriété indiquée.
Note : Il existe de nombreuses propriétés et valeurs disponibles. Il serait laborieux de les lister ici de façon exhaustive.