Escapes de caracteres em expressões regularesCharacter Escapes in Regular Expressions

A barra invertida (\) em uma expressão regular indica uma das situações a seguir:The backslash (\) in a regular expression indicates one of the following:

  • O caractere que segue é um caractere especial, conforme mostrado na tabela na seção a seguir.The character that follows it is a special character, as shown in the table in the following section. Por exemplo, \b é uma âncora que indica que uma correspondência da expressão regular deve começar em um limite de palavra, \t representa uma tabulação e \x020 representa um espaço.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.

  • Um caractere que, caso contrário, seria interpretado como um constructo de linguagem sem escape deve ser interpretado literalmente.A character that otherwise would be interpreted as an unescaped language construct should be interpreted literally. Por exemplo, uma chave ({) inicia a definição de um quantificador, mas uma barra invertida seguida por uma chave (\{) indica que o mecanismo de expressão regular deve corresponder à chave.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. Da mesma forma, uma única barra invertida marca o início de um constructo de linguagem com escape, mas duas barras invertidas (\\) indicam que o mecanismo de expressão regular deve corresponder à barra invertida.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.

Observação

Escapes de caracteres são reconhecidos em padrões de expressão regulares, mas não em padrões de substituição.Character escapes are recognized in regular expression patterns but not in replacement patterns.

Escapes de caracteres em .NETCharacter Escapes in .NET

A tabela a seguir lista os escapes de caracteres com suporte das expressões regulares em .NET.The following table lists the character escapes supported by regular expressions in .NET.

Caractere ou sequênciaCharacter or sequence DescriçãoDescription
Todos os caracteres, exceto pelos seguintes:All characters except for the following:

.. $ ^ { [ ( | ) * + ?$ ^ { [ ( | ) * + ? \
Caracteres diferentes dos listados na coluna Caractere ou sequência não têm significado especial em expressões regulares; eles correspondem a si mesmos.Characters other than those listed in the Character or sequence column have no special meaning in regular expressions; they match themselves.

Os caracteres incluídos na coluna Caractere ou sequência são elementos especiais na linguagem de expressão regular.The characters included in the Character or sequence column are special regular expression language elements. Para que seja feita a correspondência com eles em uma expressão regular, eles devem receber um escape ou ser incluídos em um grupo de caracteres positivo.To match them in a regular expression, they must be escaped or included in a positive character group. Por exemplo, a expressão regular \$\d+ ou [$]\d+ corresponde a "$1200".For example, the regular expression \$\d+ or [$]\d+ matches "$1200".
\a Corresponde a um caractere de sino (alarme), \u0007.Matches a bell (alarm) character, \u0007.
\b Em uma classe de caracteres [character_group], corresponde a uma barra invertida, \u0008.In a [character_group] character class, matches a backspace, \u0008. (Confira Classes de caracteres). Fora de uma classe de caracteres, \b é uma âncora que corresponde a um limite de palavra.(See Character Classes.) Outside a character class, \b is an anchor that matches a word boundary. (Confira Âncoras).(See Anchors.)
\t Corresponde a uma tabulação, \u0009.Matches a tab, \u0009.
\r Corresponde a um retorno de carro, \u000D.Matches a carriage return, \u000D. Observe que \r não é equivalente ao caractere de nova linha, \n.Note that \r is not equivalent to the newline character, \n.
\v Corresponde a uma tabulação vertical, \u000B.Matches a vertical tab, \u000B.
\f Corresponde a um avanço de página, \u000C.Matches a form feed, \u000C.
\n Corresponde a uma nova linha, \u000A.Matches a new line, \u000A.
\e Corresponde a um escape, \u001B.Matches an escape, \u001B.
\ nnn\ nnn Corresponde a um caractere ASCII, em que nnn consiste em dois ou três dígitos que representam o código de caracteres octal.Matches an ASCII character, where nnn consists of two or three digits that represent the octal character code. Por exemplo, \040 representa um caractere de espaço.For example, \040 represents a space character. Esse constructo é interpretado como referência inversa se tiver apenas um dígito (por exemplo, \2) ou se corresponder ao número de um grupo de captura.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. (Confira Constructos de referência inversa).(See Backreference Constructs.)
\x nn\x nn Corresponde a um caractere ASCII, em que nn é um código de caractere hexadecimal com dois dígitos.Matches an ASCII character, where nn is a two-digit hexadecimal character code.
\c X\c X Corresponde a um caractere de controle ASCII, em que X é a letra do caractere de controle.Matches an ASCII control character, where X is the letter of the control character. Por exemplo, \cC é CTRL-C.For example, \cC is CTRL-C.
\u nnnn\u nnnn Corresponde a uma unidade de código UTF-16 cujo valor é nnnn hexadecimal.Matches a UTF-16 code unit whose value is nnnn hexadecimal. Observação: O .NET não dá suporte para o caractere de escape Perl 5 que é usado para especificar Unicode.Note: The Perl 5 character escape that is used to specify Unicode is not supported by .NET. O caractere de escape Perl 5 tem o formato \x{ #### …}, em que #### é uma série de dígitos hexadecimais.The Perl 5 character escape has the form \x{####…}, where #### is a series of hexadecimal digits. Em vez disso, use \unnnn.Instead, use \unnnn.
\ Quando seguido por um caractere que não é reconhecido como um caractere com escape, corresponde a esse caractere.When followed by a character that is not recognized as an escaped character, matches that character. Por exemplo, \* corresponde a um asterisco (*) e é igual a \x2A.For example, \* matches an asterisk (*) and is the same as \x2A.

Um ExemploAn Example

O exemplo a seguir ilustra o uso de escapes de caracteres em uma expressão regular.The following example illustrates the use of character escapes in a regular expression. Ele analisa uma cadeia de caracteres que contém os nomes das maiores cidades do mundo e suas populações em 2009.It parses a string that contains the names of the world's largest cities and their populations in 2009. O nome de cada cidade é separado da sua população por uma tabulação (\t) ou uma barra vertical (| ou \u007c).Each city name is separated from its population by a tab (\t) or a vertical bar (| or \u007c). Cidades individuais e suas populações são separadas umas das outras por um retorno de carro e uma alimentação de linha.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 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
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

A expressão regular \G(.+)[\t|\u007c](.+)\r?\n é interpretada conforme mostrado na tabela a seguir.The regular expression \G(.+)[\t|\u007c](.+)\r?\n is interpreted as shown in the following table.

PatternPattern DescriçãoDescription
\G Inicia a correspondência onde a última correspondência terminou.Begin the match where the last match ended.
(.+) Corresponde qualquer caractere uma ou mais vezes.Match any character one or more times. Este é o primeiro grupo de captura.This is the first capturing group.
[\t\u007c] Corresponde a uma tabulação (\t) ou a uma barra vertical (|).Match a tab (\t) or a vertical bar (|).
(.+) Corresponde qualquer caractere uma ou mais vezes.Match any character one or more times. Este é o segundo grupo de captura.This is the second capturing group.
\r?\n Corresponde a zero ou uma ocorrência de um retorno de carro, seguida por uma nova linha.Match zero or one occurrence of a carriage return followed by a new line.

Consulte tambémSee also