Partilhar via


Escapes de Caracteres

A barra invertida (\) em uma expressão regular indica que um dos seguintes:

  • O caractere que segue é um caractere especial, conforme mostrado na tabela na seção a seguir. 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 guia, e \x020 representa um espaço.

  • Um caractere que, caso contrário, deverá ser interpretado como uma construção de linguagem escape deve ser interpretada literalmente. Por exemplo, uma chave ({) começa a definição de um quantificador, mas uma barra invertida seguida por uma chave (\{) indica que o mecanismo de expressão regular deve coincidir com a chave. Da mesma forma, uma barra invertida marca o início de uma construção de linguagem de escape, mas as duas barras invertidas (\\) indicam que o mecanismo de expressão regular deve coincidir com a barra invertida.

Observação

Escapa de caractere é reconhecidas em padrões de expressões regulares, mas não em padrões de substituição.

Caractere "escapa" na.NET Framework

A tabela a seguir lista a escapa de caracteres com suporte a expressões regulares na.NET Framework.

Caractere ou seqüência

Descrição

Todos os caracteres, exceto o seguinte:

. $ ^ { [ ( | ) * + ? \

Esses caracteres têm um significado especial em expressões regulares; eles correspondam a próprios.

\a

Corresponde a um caractere de bell (alarme) \u0007.

\b

Em um [character_group] caracteres de classe, corresponde a backspace, \u0008. (See Classes de Caracteres.) Fora de uma classe de caracteres, \b é uma âncora que corresponda a um limite de palavra. (See Âncoras de expressões regulares.)

\t

Corresponde a uma guia, \u0009.

\r

Corresponde a um retorno de carro, \u000D. Observe que \r não equivale ao caractere de nova linha, \n.

\v

Corresponde a uma guia vertical, \u000B.

\f

Corresponde a um formulário de feed, \u000C.

\n

Corresponde a uma nova linha, \u000A.

\e

Corresponde a um escape \u001B.

\nnn

Corresponde a um caractere ASCII, onde nnn consiste em até três dígitos representam o código de caracteres octal. Por exemplo, \040 representa um caractere de espaço. No entanto, essa construção é interpretada como referência anterior, se ele tiver apenas um dígito (por exemplo, \2) ou se ele corresponde ao número de um grupo de captura. (See Construtores de Referência Passada.)

\xnn

Corresponde a um caractere ASCII, onde nn é um código de caractere hexadecimal de dois dígitos.

\cX

Corresponde a um caractere de controle ASCII, onde x é a letra de um caractere de controle. Por exemplo, \cC é CTRL-c.

\unnnn

Corresponde a um caractere Unicode, onde nnnn é um ponto de código hexadecimal de quatro dígitos.

Observação

O .NET Framework não oferece suporte para o caractere de escape Perl 5 que é usado para especificar Unicode.O caractere de escape do Perl 5 tem a forma \x{#…}, onde #… é uma série de dígitos hexadecimais.Em vez disso, use \unnnn.

\

Quando seguido por um caractere que não é reconhecido como um escape de caractere, corresponde a esse caractere. Por exemplo, \* coincide com um asterisco (*) e é o mesmo que \x2A.

Um exemplo

O exemplo a seguir ilustra o uso de caracteres de escapa em uma expressão regular. Ele analisa uma seqüência de caracteres que contém os nomes de cidades de maiores do mundo e suas populações em 2009. O nome de cada cidade é separado da sua população por uma tabulação (\t) ou uma barra vertical (| ou \u007c). Cidades individuais e suas populações são separadas uns dos outros por um retorno de carro e avanço de linha.

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 + _
                            "Dehli, 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
'       Dehli, India         12,259,230
'       Istanbul, Turkey     11,372,613
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" + 
                            "Dehli, 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
//       Dehli, India         12,259,230
//       Istanbul, Turkey     11,372,613

A expressão regular \G(.+)[\t|\u007c](.+)\r?\n é interpretado como mostrado na tabela a seguir.

Padrão

Descrição

\G

Começa a correspondência onde a última correspondência foi encerrada.

(.+)

Corresponde qualquer caractere em uma ou mais vezes. Este é o primeiro grupo de capturando.

[\t\u007c]

Corresponde a uma guia (\t) ou vertical da barra (|).

(.+)

Corresponde qualquer caractere em uma ou mais vezes. Este é o segundo grupo de capturando.

\r? \n

Corresponde a zero ou em uma ocorrência de um retorno de carro seguido por uma nova linha.

Consulte também

Conceitos

Elementos de linguagem das expressões regulares

Histórico de alterações

Date

History

Motivo

Maio de 2010

Corrigido o padrão de expressão regular.

Comentários do cliente.