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. |