Syntaxe d'une expression régulière

Une expression régulière décrit une ou plusieurs chaînes pour lesquelles une correspondance doit être établie lorsque vous recherchez un corps de texte. L'expression sert de modèle pour faire correspondre un modèle de caractères à la chaîne recherchée.

Une expression régulière est constituée de caractères ordinaires (par exemple les lettres de a à z) et de caractères spéciaux, appelés métacaractères.

Caractères spéciaux

Le tableau suivant contient une liste de métacaractères à un caractère et leur comportement dans les expressions régulières.

Notes

Pour trouver des correspondances à l'un de ces caractères spéciaux, vous devez avant tout le faire précéder d'un caractère d'échappement, en l'occurrence une barre oblique inverse (\). Par exemple, pour rechercher le caractère "+" littéral, vous pouvez utiliser l'expression "\+".

Métacaractère

Comportement

Exemple

*

Correspond zéro ou plusieurs fois au caractère ou à la sous-expression qui précède.

Équivalent à {0,}.

zo* correspond à "z" et "zoo".

+

Correspond une ou plusieurs fois au caractère ou à la sous-expression qui précède.

Équivalent à {1,}.

zo+ correspond à "zo" et "zoo", mais pas à "z".

?

Correspond zéro ou une fois au caractère ou à la sous-expression qui précède.

Équivalent à {0,1}.

Lorsqu'un point d'interrogation (?) suit immédiatement tout autre quantificateur (*, +?, {n}, {n,}, ou {n,m}), le modèle correspondant est non gourmand. Un modèle non gourmand correspond à la plus petite partie possible de la chaîne recherchée. Un modèle gourmand par défaut correspond à la plus grande partie possible de la chaîne recherchée.

zo? correspond à "z" et "zo", mais pas à "zoo".

o+? correspond à un "o" unique dans "oooo", et o+ correspond à tous les "o".

do(es)? correspond à "do" dans "do" ou "does".

^

Correspond à la position au début de la chaîne recherchée. Si le caractère m (recherche sur plusieurs lignes) est inclus avec les indicateurs, ^ correspond également à la position qui suit \n ou \r.

Lorsqu'il est utilisé comme premier caractère dans une expression entre crochets, ^ nie le jeu de caractères.

^\d{3} correspond à 3 chiffres au début de la chaîne recherchée.

[^abc] correspond à tout caractère sauf a, b, et c.

$

Correspond à la fin de la chaîne recherchée. Si le caractère m (recherche multiligne) est inclus avec les indicateurs, ^ correspond également à la position qui précède \n ou \r.

\d{3}$ correspond à 3 chiffres à la fin de la chaîne recherchée.

.

Correspond à tout caractère unique sauf le caractère de saut de ligne \n. Pour correspondre à tout caractère, y compris \n, utilisez un modèle tel que [\s\S].

a.c correspond à "abc", "a1c", et "a-c".

[]

Marque le début et la fin d'une expression entre crochets.

[1-4] correspond à "1", "2", "3" ou "4". [^aAeEiIoOuU] correspond à tout caractère à l'exclusion des voyelles.

{}

Marque le début et la fin d'une expression avec quantificateur.

a{2,3} correspond à "aa" et "aaa".

()

Marque le début et la fin d'une sous-expression. Les sous-expressions peuvent être enregistrées pour une utilisation ultérieure.

A(\d) a pour correspondance "A0" à "A9". Le chiffre est enregistré pour une utilisation ultérieure.

|

Indique un choix entre deux éléments ou plus.

z|food correspond à "z" ou "food". (z|f)ood correspond à "zood" ou "food".

/

Marque le début ou la fin d'un modèle d'expression régulière littérale dans JScript. Après le deuxième caractère "/", les indicateurs à un seul caractère peuvent être ajoutés pour spécifier le comportement de recherche.

/abc/gi est une expression régulière littérale JScript qui correspond à "abc". L'indicateur g (global) indique que toutes les occurrences du modèle doivent être recherchées et l'indicateur i (ignorer la casse) rend la recherche non sensible à la casse.

\

Marque le caractère suivant comme un caractère spécial, un littéral, une référence arrière ou une séquence d'échappement octale.

\n correspond à un caractère de saut de ligne. \( correspond à "(" . \\ correspond à "\" .

La plupart des caractères spéciaux perdent leur signification et représentent des caractères ordinaires lorsqu'ils apparaissent à l'intérieur d'une expression entre crochets. Pour plus d'informations, consultez la section « Caractères dans les expressions entre crochets » dans la rubrique Listes de caractères correspondants.

Métacaractères

Le tableau suivant contient une liste de métacaractères à caractères multiples et leur comportement dans les expressions régulières.

Métacaractère

Comportement

Exemple

\b

Correspond à la limite d'un mot, c'est-à-dire à la position entre un mot et un espace.

er\b correspond au "er" de "manger", mais pas au "er" de "mangera".

\B

Correspond à une non-limite de mot.

er\B correspond au "er" de "mangera", mais pas au "er" de "manger".

\d

Correspond à un caractère numérique.

Équivalent à [0-9].

Dans la chaîne "12 345" recherchée, \d{2} correspond à "12" et "34". \d correspond à "1", "2", "3", "4" ou "5".

\D

Correspond à un caractère non numérique.

Équivalent à [^0-9].

\D+ , correspond à "abc" et "def" dans "abc123 def".

\w

Correspond à chacun des caractères suivants : A-Z, a-z, 0-9 et trait de soulignement.

Équivalent à [A-Za-z0-9_].

Dans la chaîne recherchée "The quick brown fox...", \w+ correspond à "The", "quick", "brown" et "fox".

\W

Correspond à tout caractère à l'exclusion de A-Z, a-z, 0-9 et trait de soulignement.

Équivalent à [^A-Za-z0-9_].

Dans la chaîne recherchée "The quick brown fox...", \W+ correspond à "..." et tous les espaces.

[xyz]

Un jeu de caractères. Correspond à n'importe lequel des caractères spécifiés.

[abc] correspond à "a" dans "plaine".

[^xyz]

Un jeu de caractères négatif. Correspond à tout caractère qui n'est pas spécifié.

[^abc] , correspond à "p", "l", "i" et "n" dans "plaine".

[a-z]

Une plage de caractères. Correspond à l'un des caractères de la plage spécifiée.

[a-z] correspond à tout caractère alphabétique en minuscules dans la plage s'étendant de "a" à "z".

[^a-z]

Une plage de caractères négative. Correspond à tout caractère n'appartenant pas à la plage spécifiée.

[^a-z] correspond à tout caractère qui n'est pas dans la plage "a" à "z".

{n}

Correspond exactement n fois. n est un entier non négatif.

o{2} ne correspond pas au "o" dans "François", mais correspond aux deux "o" de "zoo".

{n,}

Correspond au moins n fois. n est un entier non négatif.

* équivaut à {0,}.

+ équivaut à {1,}.

o{2,} ne correspond pas au "o" dans "François", mais correspond à tous les "o" de "foooood".

{n,m}

Correspond au moins n fois et au plus m fois. n et m sont des entiers non négatifs, où n <= m. Il ne peut pas y avoir d'espace entre la virgule et les nombres.

? équivaut à {0,1}.

Dans la chaîne "1234567", \d{1,3} correspond à "123", "456" et "7".

(modèle)

Correspond au modèle et enregistre la correspondance. Vous pouvez récupérer la correspondance enregistrée à partir d'éléments de tableau retournés par la exec Method dans JScript. Pour rechercher des parenthèses ( ), utilisez "\(" ou "\)".

(Chapter|Section) [1-9] correspond à "Chapter 5", et "Chapter" est enregistré pour une utilisation ultérieure.

(?:modèle)

Correspond au modèle mais n'enregistre pas la correspondance ; c'est-à-dire que la correspondance n'est pas stockée pour une utilisation ultérieure éventuelle. Elle est utile lorsque vous souhaitez combiner des parties d'un modèle avec le caractère « ou » (|).

industr(?:y|ies) équivaut à industry|industries.

(?=modèle)

Préanalyse positive. Une fois la correspondance trouvée, la recherche de la correspondance suivante démarre avant le texte mis en correspondance. La correspondance n'est pas enregistrée pour une utilisation ultérieure.

^(?=.*\d).{4,8}$ applique une restriction spécifiant qu'un mot de passe doit comporter 4 à 8 caractères dont au moins un chiffre.

Dans le modèle, .*\d recherche tous les caractères suivis d'un chiffre. Pour la chaîne recherchée "abc3qr", le résultat correspondant est "abc3".

En démarrant avant (et non après) cette correspondance, .{4,8} correspond à une chaîne de 4 à 8 caractères. Cela correspond à "abc3qr".

^ et $ spécifient les positions au début et à la fin de la chaîne recherchée. Cela permet d'empêcher une correspondance si la chaîne recherchée contient des caractères en dehors des caractères mis en correspondance.

(?!modèle)

Préanalyse négative. Correspond à une chaîne recherchée qui ne correspond pas au modèle. Une fois la correspondance trouvée, la recherche de la correspondance suivante démarre avant le texte mis en correspondance. La correspondance n'est pas enregistrée pour une utilisation ultérieure.

\b(?!th)\w+\b correspond aux mots qui ne commencent pas par "th".

Dans le modèle, \b correspond à la limite d'un mot. Pour la chaîne recherchée " quick" , cela correspond au premier espace. (?!th) correspond à une chaîne qui n'est pas "th". Cela correspond à "qu".

En démarrant avant cette correspondance, \w+ correspond à un mot. Cela correspond à "quick".

\cx

Correspond au caractère de contrôle indiqué par x. La valeur de x doit être incluse dans la plage A-Z ou a-z. Si ce n'est pas le cas, c sera considéré comme un caractère "c" littéral.

\cM correspond à un CTRL+M ou à un caractère de retour chariot.

\xn

Correspond à n, n étant une valeur d'échappement hexadécimale. Les valeurs d'échappement hexadécimales doivent comporter exactement deux chiffres. Permet aux codes ASCII d'être utilisés dans des expressions régulières.

\x41 correspond à "A". \x041 est équivalent à "\x04" suivi de "1" (car n doit comporter exactement 2 chiffres).

\num

Correspond à num, num étant un entier positif. Ceci une référence aux correspondances enregistrées.

(.)\1 correspond à deux caractères identiques consécutifs.

\n

Identifie une valeur d'échappement octale ou une référence arrière. Si \n est précédé d'au moins n sous-expressions capturées, n est une référence arrière. Sinon, n est une valeur d'échappement octale si n est un chiffre octal (0-7).

(\d)\1 correspond à deux chiffres identiques consécutifs.

\nm

Identifie une valeur d'échappement octale ou une référence arrière. Si \nm est précédé d'au moins nm sous-expressions capturées, nm est une référence arrière. Si \nm est précédé d'au moins n sous-expressions capturées, n est une référence arrière suivie par un caractère m littéral. Si ni l'une ni l'autre de ces conditions n'existe, \nm correspond à la valeur d'échappement octale nm lorsque n et m sont des chiffres octaux (0-7).

\11 correspond à un caractère de tabulation.

\nml

Correspond à la valeur d'échappement octale nml lorsque n est un chiffre octal (0-3) et m et l sont des chiffres octaux (0-7).

\011 correspond à un caractère de tabulation.

\un

Correspond à n, n étant un caractère Unicode exprimé sous la forme de quatre chiffres hexadécimaux.

\u00A9 correspond au symbole de copyright (©).

Caractères non imprimables

Le tableau suivant contient les séquences d'échappement qui représentent des caractères non imprimables.

Caractère

Correspondance

Équivalent à

\f

Caractère de saut de page.

\x0c et \cL

\n

Caractère de saut de ligne

\x0a et \cJ

\r

Caractère de retour chariot

\x0d et \cM

\s

Tout caractère espace blanc. Cela inclut l'espace, la tabulation et le saut de page.

[ \f\n\r\t\v]

\S

Tout caractère autre qu'un espace blanc.

[^ \f\n\r\t\v]

\t

Caractère de tabulation

\x09 et \cI

\v

Caractère de tabulation verticale.

\x0b et \cK

Ordre de priorité

À l'instar d'une expression arithmétique, une expression régulière est évaluée de gauche à droite, selon un ordre de priorité.

Le tableau suivant contient l'ordre de priorité des opérateurs d'expression régulière, de la plus élevée à la plus faible.

Opérateur ou opérateurs

Description

\

Échappement

(), (?:), (?=), []

Parenthèses et crochets

*, +, ?, {n}, {n,}, {n,m}

Quantificateurs

^, $, \ToutMétacaractère

Ancres et séquences

|

Alternative

Les caractères ont une priorité plus élevée que l'opérateur d'alternative, ce qui permet par exemple à l'expression "m|food" de correspondre à "m" ou à "food".

Voir aussi

Concepts

Création d'une expression régulière