Caractères d'échappement dans les expressions régulièresCharacter Escapes in Regular Expressions

La barre oblique inverse (\) dans une expression régulière indique une des possibilités suivantes :The backslash (\) in a regular expression indicates one of the following:

  • Le caractère qui la suit est un caractère spécial, comme indiqué dans le tableau de la section suivante.The character that follows it is a special character, as shown in the table in the following section. Par exemple, \b est une ancre qui indique qu'une correspondance d'expression régulière doit commencer sur une limite de mot, \t représente une tabulation et \x020 représente un espace.For example, \b is an anchor that indicates that a regular expression match should begin on a word boundary, \t represents a tab, and \x020 represents a space.

  • Un caractère qui doit être interprété littéralement, et qui sans cela serait interprété comme une construction du langage sans séquence d'échappement.A character that otherwise would be interpreted as an unescaped language construct should be interpreted literally. Par exemple, une accolade ({) commence la définition d'un quantificateur, mais une barre oblique inverse suivie d'une accolade (\{) indique que le moteur d'expressions régulières doit rechercher une correspondance avec l'accolade.For example, a brace ({) begins the definition of a quantifier, but a backslash followed by a brace (\{) indicates that the regular expression engine should match the brace. De la même façon, une seule barre oblique inverse marque le début d'une construction du langage avec échappement, mais deux barres obliques inverses (\\) indiquent que le moteur d'expressions régulières doit chercher une correspondance avec la barre oblique inverse.Similarly, a single backslash marks the beginning of an escaped language construct, but two backslashes (\\) indicate that the regular expression engine should match the backslash.

Note

Les séquences d'échappement des caractères sont reconnues dans les modèles d'expressions régulières, mais pas dans les modèles de remplacement.Character escapes are recognized in regular expression patterns but not in replacement patterns.

Caractères d’échappement dans .NETCharacter Escapes in .NET

Le tableau suivant répertorie les séquences d’échappement des caractères prises en charge par les expressions régulières dans .NET.The following table lists the character escapes supported by regular expressions in .NET.

Caractère ou séquenceCharacter or sequence DescriptionDescription
Tous les caractères à l'exception des suivants :All characters except for the following:

.. $ ^ { [ ( | ) * + ?$ ^ { [ ( | ) * + ? \
Les caractères autres que ceux répertoriés dans la colonne Caractère ou séquence n’ont pas de signification spéciale dans les expressions régulières ; ils ne correspondent qu’à eux-mêmes.Characters other than those listed in the Character or sequence column have no special meaning in regular expressions; they match themselves.

Les caractères inclus dans la colonne Caractère ou séquence sont des éléments spéciaux du langage des expressions régulières.The characters included in the Character or sequence column are special regular expression language elements. Pour les faire correspondre dans une expression régulière, ils doivent être utilisés avec un caractère d’échappement ou inclus dans un groupe de caractères positif.To match them in a regular expression, they must be escaped or included in a positive character group. Par exemple, l'expression régulière \$\d+ ou [$]\d+ est en correspondance avec "$1200".For example, the regular expression \$\d+ or [$]\d+ matches "$1200".
\a Correspond à un caractère représentant une cloche (alarme), \u0007.Matches a bell (alarm) character, \u0007.
\b Dans une classe de caractères [groupe_caractères], correspond à un retour arrière, \u0008.In a [character_group] character class, matches a backspace, \u0008. (Voir Classes de caractères.) En dehors d'une classe de caractères, \b est une ancre qui correspond à une limite de mot.(See Character Classes.) Outside a character class, \b is an anchor that matches a word boundary. (Voir Ancres.)(See Anchors.)
\t Correspond à une tabulation, \u0009.Matches a tab, \u0009.
\r Correspond à un retour chariot, \u000D.Matches a carriage return, \u000D. Notez que \r n'est pas équivalent au caractère de nouvelle ligne, \n.Note that \r is not equivalent to the newline character, \n.
\v Correspond à une tabulation verticale, \u000B.Matches a vertical tab, \u000B.
\f Correspond à un saut de page, \u000C.Matches a form feed, \u000C.
\n Correspond à une nouvelle ligne, \u000A.Matches a new line, \u000A.
\e Correspond à un caractère d'échappement, \u001B.Matches an escape, \u001B.
\ nnn\ nnn Correspond à un caractère ASCII, où nnn est constitué de deux ou trois chiffres qui représentent le code octal du caractère.Matches an ASCII character, where nnn consists of two or three digits that represent the octal character code. Par exemple, \040 représente un espace.For example, \040 represents a space character. Cette construction est interprétée comme une référence arrière si elle a un seul chiffre (par exemple \2) ou si elle correspond au nombre d'un groupe de capture.This construct is interpreted as a backreference if it has only one digit (for example, \2) or if it corresponds to the number of a capturing group. (Voir Constructions de référence arrière.)(See Backreference Constructs.)
\x nn\x nn Correspond à un caractère ASCII, où nn est un code hexadécimal à deux chiffres d’un caractère.Matches an ASCII character, where nn is a two-digit hexadecimal character code.
\c X\c X Correspond à un caractère de contrôle ASCII, où X est la lettre du caractère de contrôle.Matches an ASCII control character, where X is the letter of the control character. Par exemple, \cC est Ctrl-C.For example, \cC is CTRL-C.
\u nnnn\u nnnn Correspond à une unité de code UTF-16 dont la valeur est nnnn en hexadécimal.Matches a UTF-16 code unit whose value is nnnn hexadecimal. Remarque : La séquence d’échappement des caractères de Perl 5 utilisée pour spécifier Unicode n’est pas prise en charge par .NET.Note: The Perl 5 character escape that is used to specify Unicode is not supported by .NET. La séquence d'échappement des caractères de Perl 5 a la forme \x{####…}, où #### est une série de chiffres hexadécimaux.The Perl 5 character escape has the form \x{####…}, where #### is a series of hexadecimal digits. Utilisez à la place \unnnn.Instead, use \unnnn.
\ Quand ce caractère d'échappement est suivi d'un caractère non reconnu comme caractère d'échappement, correspond au caractère lui-même.When followed by a character that is not recognized as an escaped character, matches that character. Par exemple, \* correspond à un astérisque (*) et est identique à \x2A.For example, \* matches an asterisk (*) and is the same as \x2A.

ExempleAn Example

L'exemple suivant montre l'utilisation de caractères d'échappement dans une expression régulière.The following example illustrates the use of character escapes in a regular expression. Il analyse une chaîne qui contient les noms des plus grandes villes du monde et leur population en 2009.It parses a string that contains the names of the world's largest cities and their populations in 2009. Chaque nom de ville est séparé de sa population par une tabulation (\t) ou par une barre verticale (| ou \u007c).Each city name is separated from its population by a tab (\t) or a vertical bar (| or \u007c). Les villes individuelles et leur population sont séparées les unes des autres par un retour chariot et un saut de ligne.Individual cities and their populations are separated from each other by a carriage return and line feed.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
      string input = "Mumbai, India|13,922,125\t\n" + 
                            "Shanghai, China\t13,831,900\n" + 
                            "Karachi, Pakistan|12,991,000\n" + 
                            "Delhi, India\t12,259,230\n" + 
                            "Istanbul, Turkey|11,372,613\n";
      Console.WriteLine("Population of the World's Largest Cities, 2009");
      Console.WriteLine();
      Console.WriteLine("{0,-20} {1,10}", "City", "Population");
      Console.WriteLine();
      foreach (Match match in Regex.Matches(input, delimited))
         Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value, 
                                            match.Groups[2].Value);
   }
}
// The example displyas the following output:
//       Population of the World's Largest Cities, 2009
//       
//       City                 Population
//       
//       Mumbai, India        13,922,125
//       Shanghai, China      13,831,900
//       Karachi, Pakistan    12,991,000
//       Delhi, India         12,259,230
//       Istanbul, Turkey     11,372,613
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n"
      Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _
                            "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _
                            "Karachi, Pakistan|12,991,000" + vbCrLf + _
                            "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _
                            "Istanbul, Turkey|11,372,613" + vbCrLf
      Console.WriteLine("Population of the World's Largest Cities, 2009")
      Console.WriteLine()
      Console.WriteLine("{0,-20} {1,10}", "City", "Population")
      Console.WriteLine()
      For Each match As Match In Regex.Matches(input, delimited)
         Console.WriteLine("{0,-20} {1,10}", match.Groups(1).Value, _
                                            match.Groups(2).Value)
      Next                         
   End Sub
End Module
' The example displays the following output:
'       Population of the World's Largest Cities, 2009
'       
'       City                 Population
'       
'       Mumbai, India        13,922,125
'       Shanghai, China      13,831,900
'       Karachi, Pakistan    12,991,000
'       Delhi, India         12,259,230
'       Istanbul, Turkey     11,372,613

L'expression régulière \G(.+)[\t|\u007c](.+)\r?\n est interprétée comme indiqué dans le tableau suivant.The regular expression \G(.+)[\t|\u007c](.+)\r?\n is interpreted as shown in the following table.

MotifPattern DescriptionDescription
\G Commencer la correspondance là où la dernière correspondance s'est terminée.Begin the match where the last match ended.
(.+) Faire correspondre à n'importe quel caractère une ou plusieurs fois.Match any character one or more times. Il s'agit du premier groupe de capture.This is the first capturing group.
[\t\u007c] Faire correspondre à une tabulation (\t) ou à une barre verticale (|).Match a tab (\t) or a vertical bar (|).
(.+) Faire correspondre à n'importe quel caractère une ou plusieurs fois.Match any character one or more times. Il s'agit du deuxième groupe de capture.This is the second capturing group.
\r?\n Faire correspondre à zéro ou à une occurrence d'un retour chariot suivi d'une nouvelle ligne.Match zero or one occurrence of a carriage return followed by a new line.

Voir aussiSee also