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

Les tableaux suivants contiennent des caractères d’expression régulière, des opérateurs, des constructions et des exemples de modèle.The following tables 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 ExemplesExample
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.o correspond à "aro" dans "around" et à "abo" dans "about", mais pas à "acro" dans "across".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 (caractère générique *)Match any character zero or more times (Wildcard *) .*.* 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.+d correspond à « eed » dans « feeder », mais pas à « ed ».e.+d matches "eed" in "feeder" but not "ed".
Correspond à n'importe quel caractère une ou plusieurs fois (caractère générique ?)Match any character one or more times (Wildcard ?) .+.+ e.+e correspond à "eede" dans "feeder", mais pas à "ee".e.+e matches "eede" in "feeder" but not "ee".
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). *?*? e.*?e correspond à "ee" dans "feeder", mais pas à "eede".e.*?e matches "ee" in "feeder" but not "eede".
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.+?e correspond à "ente" et "erprise" dans "enterprise", mais pas au mot entier "enterprise".e.+?e matches "ente" and "erprise" in "enterprise", but not the whole word "enterprise".
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 ^ ^car correspond au mot "car" uniquement quand 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?$ end\r?$ correspond au mot "end" uniquement quand il apparaît à la fin d’une ligne.end\r?$ matches "end" 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 $ end$ correspond au mot "end" uniquement quand il apparaît à la fin du fichier.end$ matches "end" 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 "beneath" et à "bes" dans "beside", mais pas à "below".be[n-t] matches "bet" in "between", "ben" in "beneath", and "bes" in "beside", but not "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]".
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 », à "beh" dans "behind" et à "bel" dans "below", mais pas à "beneath".be[^n-t] matches "bef" in "before", "beh" in "behind", and "bel" in "below", but not "beneath".
Correspond à l'expression placée avant ou après le symboleMatch either the expression before or the one after the symbol || (sponge\|mud) bath correspond à "sponge bath" et à "mud bath".(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}x correspond à "xababx", et x(ab){2,3}x correspond à "xababx" et à "xabababx", mais pas à "xababababx".x(ab){2}x matches "xababx", and 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.) \bin correspond à "in" dans "inside", mais pas dans "pinto".\bin matches "in" in "inside" but not "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?\nBegin correspond à "End" et à "Begin" uniquement quand "END" est la dernière chaîne d’une ligne et "Begin" la première chaîne de la ligne suivante.End\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\wd correspond à "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\sInterface correspond à 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 \d correspond à "3" dans "3456", à "2" dans "23" et à "1" dans "1".\d matches and "3" in "3456", "2" in 23", and "1" in "1".
Correspond à un caractère UnicodeMatch a Unicode character \uXXXX où XXXX spécifie la valeur du caractère Unicode.\uXXXX where XXXX specifies the Unicode character value. \u0065 correspond au caractère "e".\u0065 matches the character "e".
Correspond à un identificateurMatch an identifier \b[_\w-[0-9]][_\w]*\b\b[_\w-[0-9]][_\w]*\b Correspond à « type1 » mais pas à « &type1 » ni « #define ».Matches "type1" but not "&type1" or "#define".
Correspond à une chaîne entre guillemetsMatch a string inside quotes ((\".+?\")|('.+?'))((\".+?\")|('.+?')) Correspond à n'importe quelle chaîne entre apostrophes ou guillemets.Matches any string inside single or double quotes.
Correspond à un nombre hexadécimalMatch a hexadecimal number \b0[xX]([0-9a-fA-F]+)\b\b0[xX]([0-9a-fA-F]+)\b Correspond à « 0xc67f » mais pas à « 0xc67g ».Matches "0xc67f" but not "0xc67g".
Correspond à des nombres entiers et décimauxMatch integers and decimals \b[0-9]*\.*[0-9]+\b\b[0-9]*\.*[0-9]+\b Correspond à « 1,333 ».Matches "1.333".

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 ils sont présents dans l’éditeur et sont passés au service d’expressions régulières de .NET.These characters aren't visible, but are present in the editor and are 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