Utiliser des expressions régulières dans Visual StudioUse regular expressions in Visual Studio

Visual Studio utilise des expressions régulières de .NET pour rechercher et remplacer du texte.Visual Studio uses .NET regular expressions to find and replace text.

Exemples d’expressions régulièresRegular expression examples

Le tableau suivant contient des caractères, des opérateurs, des constructions et des exemples de modèles relatifs aux expressions régulières.The following table contains some regular expression characters, operators, constructs, and pattern examples. Pour obtenir une référence plus complète, consultez Langage des expressions régulières.For a more complete reference, see Regular expression language.

ObjectifPurpose ExpressionExpression ExempleExample
Correspond à n'importe quel caractère unique (sauf un saut de ligne).Match any single character (except a line break). Pour plus d’informations, consultez N’importe quel caractère.For more information, see Any character. .. a.omet en correspondance « Tao » dans « autour de » et « ABO » dans « about », mais pas « Acro » dans « sur »a.o matches "aro" in "around" and "abo" in "about" but not "acro" in "across"
Correspond à zéro ou plusieurs occurrences de l'expression précédente (correspond à autant de caractères que possible).Match zero or more occurrences of the preceding expression (match as many characters as possible). Pour plus d’informations, consultez Mettre en correspondance zéro occurrence ou plus.For more information, see Match zero or more times. * a*r correspond à "r" dans "rack", à "rar" dans "ark" et à "aar" dans "aardvark"a*r matches "r" in "rack", "ar" in "ark", and "aar" in "aardvark"
Correspond à n’importe quel caractère zéro ou plusieurs fois.Match any character zero or more times. .*.* c.*e correspond à « cke » dans « racket », à « comme » dans « commentaire » et à « code » dans « code ».c.*e matches "cke" in "racket", "comme" in "comment", and "code" in "code"
Correspond à une ou plusieurs occurrences de l'expression précédente (correspond à autant de caractères que possible).Match one or more occurrences of the preceding expression (match as many characters as possible). Pour plus d’informations, consultez Mettre en correspondance une occurrence ou plus.For more information, see Match one or more times. + e+dcorrespond à « seau » dans « Feeder » et « Ed » dans « Terni »e+d matches "eed" in "feeder" and "ed" in "faded"
Faire correspondre à n'importe quel caractère une ou plusieurs fois.Match any character one or more times. .+.+ e.+ecorrespond à « EEDE » dans « Feeder », mais ne trouve pas de correspondance dans « feed »e.+e matches "eede" in "feeder" but finds no matches in "feed"
Correspond à zéro ou plusieurs occurrences de l'expression précédente (correspond au minimum de caractères possible).Match zero or more occurrences of the preceding expression (match as few characters as possible). Pour plus d’informations, consultez Mettre en correspondance zéro occurrence ou plus (correspondance paresseuse).For more information, see Match zero or more times (lazy match). *?*? \w*?dcorrespond à « FAD » et « Ed » dans « Terni », mais pas au mot entier « Terni » en raison de la correspondance tardive\w*?d matches "fad" and "ed" in "faded" but not the entire word "faded" due to the lazy match
Correspond à une ou plusieurs occurrences de l'expression précédente (correspond au minimum de caractères possible).Match one or more occurrences of the preceding expression (match as few characters as possible). Pour plus d’informations, consultez Mettre en correspondance une occurrence ou plus (correspondance paresseuse).For more information, see Match one or more times (lazy match). +?+? e\w+?correspond à « EE » dans « en veille » et à « Ed » dans « Terni », mais ne trouve aucune correspondance dans « fondu »e\w+? matches "ee" in "asleep" and "ed" in "faded" but finds no matches in "fade"
Ancre la chaîne de correspondance au début d'une ligne ou d'une chaîneAnchor the match string to the beginning of a line or string ^ ^carcorrespond au mot « car » uniquement lorsqu’il apparaît au début d’une ligne^car matches the word "car" only when it appears at the beginning of a line
Ancre la chaîne de correspondance à la fin d'une ligneAnchor the match string to the end of a line \r?$\r?$ car\r?$correspond à « car » uniquement lorsqu’il apparaît à la fin d’une lignecar\r?$ matches "car" only when it appears at the end of a line
Ancre la chaîne de correspondance à la fin du fichierAnchor the match string to the end of the file $ car$correspond à « car » uniquement lorsqu’il apparaît à la fin du fichiercar$ matches "car" only when it appears at the end of the file
Correspond à n'importe quel caractère unique d'un ensembleMatch any single character in a set [abc][abc] b[abc]correspond à « BA », « BB » et « BC »b[abc] matches "ba", "bb", and "bc"
Correspond à n'importe quel caractère dans une plage de caractèresMatch any character in a range of characters [a-f][a-f] be[n-t]correspond à « Bet » dans « between », « Ben » dans « sous » et « BES » dans « beside », mais ne trouve aucune correspondance dans « ci-dessous »be[n-t] matches "bet" in "between", "ben" in "beneath", and "bes" in "beside", but finds no matches in "below"
Capture et numérote implicitement l'expression contenue dans les parenthèsesCapture and implicitly number the expression contained within parenthesis ()() ([a-z])X\1 correspond à "aXa" et à "bXb", mais pas à "aXb".([a-z])X\1 matches "aXa"and "bXb", but not "aXb". « \1 » fait référence au premier groupe d’expressions « [a-z] »."\1" refers to the first expression group "[a-z]". Pour plus d’informations, consultez Groupes de capture et modèles de remplacement.For more information, see Capture groups and replacement patterns.
Invalide une correspondanceInvalidate a match (?!abc)(?!abc) real(?!ity) correspond à "real" dans "realty" et dans "really", mais pas dans "reality".real(?!ity) matches "real" in "realty" and "really" but not in "reality." Trouve également le deuxième « real » (mais pas le premier « real ») dans « realityreal ».It also finds the second "real" (but not the first "real") in "realityreal".
Correspond à n'importe quel caractère qui ne figure pas dans un ensemble donné de caractères.Match any character that is not in a given set of characters. Pour plus d’informations, consultez Groupe de caractères négatif.For more information, see Negative character group. [^abc][^abc] be[^n-t]correspond à « BEF » dans « Before », à « BA » dans « behind » et à « Bel » dans « ci-dessous », mais ne trouve pas de correspondance dans « sous »be[^n-t] matches "bef" in "before", "beh" in "behind", and "bel" in "below", but finds no matches in "beneath"
Correspond à l'expression placée avant ou après le symboleMatch either the expression before or the one after the symbol || (sponge|mud) bathcorrespond à « éponge bain » et à « bain de boue »(sponge|mud) bath matches "sponge bath" and "mud bath"
Crée une séquence d'échappement pour le caractère placé après la barre oblique inverseEscape the character following the backslash \ \^correspond au caractère ^\^ matches the character ^
Spécifie le nombre d'occurrences du caractère ou du groupe précédent.Specify the number of occurrences of the preceding character or group. Pour plus d’informations, consultez Mettre en correspondance exactement n occurrences.For more information, see Match exactly n times. {n}, où n est le nombre d'occurrences{n}, where 'n' is the number of occurrences x(ab){2}xcorrespond à « xababx »x(ab){2}x matches "xababx"
x(ab){2,3}xcorrespond à « xababx » et à « xabababx », mais pas à « xababababx »x(ab){2,3}x matches "xababx" and "xabababx" but not "xababababx"
Mettre en correspondance un texte dans une catégorie Unicode.Match text in a Unicode category. Pour plus d’informations sur les classes de caractères Unicode, consultez Propriétés des caractères de la norme Unicode 5.2.For more information about Unicode character classes, see Unicode Standard 5.2 Character Properties. \p{X}, où "X" est le numéro Unicode.\p{X}, where "X" is the Unicode number. \p{Lu}correspond à « T » et « D » dans « Thomas Doe »\p{Lu} matches "T" and "D" in "Thomas Doe"
Correspond à la limite d'un motMatch a word boundary \b (en dehors d’une classe de caractères \b spécifie une limite de mot et, à l’intérieur d’une classe de caractères, \b spécifie un retour arrière)\b (Outside a character class \b specifies a word boundary, and inside a character class \b specifies a backspace.) \bincorrespond à « in » dans « à l’intérieur de », mais ne trouve pas de correspondance dans « Pinto »\bin matches "in" in "inside" but finds no matches in "pinto"
Correspond à un saut de ligne (c’est-à-dire un retour chariot suivi d’une nouvelle ligne)Match a line break (that is, a carriage return followed by a new line) \r?\n\r?\n End\r?\nBegincorrespond à "End" et "Begin" uniquement lorsque "End" est la dernière chaîne d’une ligne et "Begin" est la première chaîne de la ligne suivanteEnd\r?\nBegin matches "End" and "Begin" only when "End" is the last string in a line and "Begin" is the first string in the next line
Mettre en correspondance avec n’importe quel caractère alphabétiqueMatch any word character \w\w a\wdcorrespond à « Add » et à « A1D », mais pas à « a d »a\wd matches "add" and "a1d" but not "a d"
Correspond à n'importe quel espace blancMatch any whitespace character \s\s Public\sInterfacecorrespond à l’expression « public interface »Public\sInterface matches the phrase "Public Interface"
Mettre en correspondance avec n’importe quel caractère numérique décimalMatch any decimal digit character \d\d \dcorrespond à « 4 » et « 0 » dans « WD40 »\d matches "4" and "0" in "wd40"

Un exemple d’expression régulière qui combine certains des opérateurs et des constructions pour correspondre à un nombre hexadécimal \b0[xX]([0-9a-fA-F]+\)\best.An example regular expression that combines some of the operators and constructs to match a hexadecimal number is \b0[xX]([0-9a-fA-F]+\)\b. Cette expression correspond à « 0xc67f », mais pas à « 0xc67g ».This expression matches "0xc67f" but not "0xc67g".

Tip

Dans les systèmes d’exploitation Windows, la plupart des lignes se terminent par « \r\n » (retour chariot suivi d’une nouvelle ligne).In Windows operating systems, most lines end in "\r\n" (a carriage return followed by a new line). Ces caractères ne sont pas visibles, mais sont présents dans l’éditeur et transmis au service d’expression régulière .NET.These characters aren't visible but are present in the editor and passed to the .NET regular expression service.

Groupes de capture et modèles de remplacementCapture groups and replacement patterns

Un groupe de capture délimite une sous-expression d’une expression régulière et capture une sous-chaîne d’une chaîne d’entrée.A capture group delineates a subexpression of a regular expression and captures a substring of an input string. Vous pouvez utiliser les groupes de capture dans l’expression régulière elle-même (par exemple pour rechercher un mot en double), ou dans un modèle de remplacement.You can use captured groups within the regular expression itself (for example, to look for a repeated word), or in a replacement pattern. Pour plus d’informations, consultez Constructions de regroupement dans les expressions régulières.For detailed information, see Grouping constructs in regular expressions.

Pour créer un groupe de capture numéroté, placez la sous-expression entre parenthèses dans le modèle d’expression régulière.To create a numbered capture group, surround the subexpression with parentheses in the regular expression pattern. Les captures sont numérotées automatiquement de la gauche vers la droite en fonction de l'ordre des parenthèses ouvrantes dans l'expression régulière.Captures are numbered automatically from left to right based on the position of the opening parenthesis in the regular expression. Pour accéder au groupe capturé :To access the captured group:

  • dans l’expression régulière : Utilisez \number.within the regular expression: Use \number. Par exemple, \1 dans l’expression régulière (\w+)\s\1 fait référence au premier groupe de capture (\w+).For example, \1 in the regular expression (\w+)\s\1 references the first capture group (\w+).

  • dans un modèle de remplacement : Utilisez $number.in a replacement pattern: Use $number. Par exemple, l’expression régulière groupée (\d)([a-z]) définit deux groupes : le premier contient un chiffre décimal unique tandis que le deuxième contient un caractère unique compris entre a et z.For example, the grouped regular expression (\d)([a-z]) defines two groups: the first group contains a single decimal digit, and the second group contains a single character between a and z. L’expression recherche quatre correspondances dans la chaîne suivante : 1a 2b 3c 4d.The expression finds four matches in the following string: 1a 2b 3c 4d. La chaîne de remplacement z$1 référence le premier groupe uniquement ($1) et convertit la chaîne en z1 z2 z3 z4.The replacement string z$1 references the first group only ($1), and converts the string to z1 z2 z3 z4.

L’illustration suivante montre une expression régulière (\w+)\s\1 et une chaîne de remplacement $1.The following image shows a regular expression (\w+)\s\1 and a replacement string $1. L’expression régulière et le modèle de remplacement font référence au premier groupe de capture qui a reçoit automatiquement le numéro 1.Both the regular expression and the replacement pattern reference the first capture group that's automatically numbered 1. Lorsque vous choisissez Remplacer tout dans la boîte de dialogue Remplacement rapide de Visual Studio, les mots répétés sont supprimés du texte.When you choose Replace all in the Quick Replace dialog box in Visual Studio, repeated words are removed from the text.

Remplacement rapide montrant un groupe de capture numéroté dans Visual Studio

Tip

Assurez-vous que le bouton Utiliser des expressions régulières est sélectionné dans la boîte de dialogue Remplacement rapide.Make sure the Use Regular Expressions button is selected in the Quick Replace dialog box.

Groupes de capture nommésNamed capture groups

Au lieu d’utiliser la numérotation automatique d’un groupe de capture, vous pouvez lui donner un nom.Instead of relying on the automatic numbering of a capture group, you can give it a name. La syntaxe pour un groupe de capture nommé est (?<name>subexpression).The syntax for a named capture group is (?<name>subexpression).

Les groupes de capture nommés, tout comme les groupes numérotés, peuvent être utilisés dans l’expression régulière elle-même ou dans un modèle de remplacement.Named capture groups, like numbered capture groups, can be used within the regular expression itself or in a replacement pattern. Pour accéder au groupe de capture nommé :To access the named capture group:

  • dans l’expression régulière : Utilisez \k<name>.within the regular expression: Use \k<name>. Par exemple, \k<repeated> dans l’expression régulière (?<repeated>\w+)\s\k<repeated> fait référence au groupe de capture nommé repeated et dont la sous-expression est \w+.For example, \k<repeated> in the regular expression (?<repeated>\w+)\s\k<repeated> references the capture group that's named repeated and whose subexpression is \w+.

  • dans un modèle de remplacement : Utilisez ${name}.in a replacement pattern: Use ${name}. Par exemple, ${repeated}.For example, ${repeated}.

Par exemple, l’illustration suivante montre une expression régulière (?<repeated>\w+)\s\k<repeated> et une chaîne de remplacement ${repeated}.As an example, the following image shows a regular expression (?<repeated>\w+)\s\k<repeated> and a replacement string ${repeated}. L’expression régulière et le modèle de remplacement font référence au groupe de capture nommé repeated.Both the regular expression and the replacement pattern reference the capture group named repeated. Lorsque vous choisissez Remplacer tout dans la boîte de dialogue Remplacement rapide de Visual Studio, les mots répétés sont supprimés du texte.When you choose Replace all in the Quick Replace dialog box in Visual Studio, repeated words are removed from the text.

Remplacement rapide montrant un groupe de capture nommé dans Visual Studio

Tip

Assurez-vous que le bouton Utiliser des expressions régulières est sélectionné dans la boîte de dialogue Remplacement rapide.Make sure the Use Regular Expressions button is selected in the Quick Replace dialog box.

Pour plus d'informations sur les groupes de capture nommés, voir Sous-expressions mises en correspondance nommées.For more information about named capture groups, see Named matched subexpressions. Pour plus d’informations sur les expressions régulières utilisées dans les modèles de remplacement, consultez Substitutions dans les expressions régulières.For more information about regular expressions that are used in replacement patterns, see Substitutions in regular expressions.

Voir aussiSee also