Usando expressões regulares no Visual Studio

Visual Studio usa as expressões regulares do .NET Framework para localizar e substituir textos.No Visual Studio 2010 e versões anteriores, o Visual Studio usou a sintaxe personalizada de expressão regular nas janelas Localizar e Substituir.Este tópico explica como converter alguns dos símbolos personalizados mais usados de expressão regular para versões .NET.

DicaDica

Em sistemas operacionais Windows, a maioria de linhas terminam em “\r\n” (um carriage return seguido por uma nova linha).Esses caracteres não são visíveis, mas estão presentes no editor e são passados para o serviço de Expressão Regular do .NET.

Para obter mais informações, consulte Expressões regulares do .NET Framework.

DicaDica

Para obter informações sobre expressões regulares usadas em padrões de substituição, consulte Substituições em expressões regulares.Para usar um grupo de captura numerado, a sintaxe é $1 para especificar o grupo numerado e (x) para especificar o grupo em questão.Por exemplo, a expressão regular agrupada (\d)([a-z]) encontra quatro correspondências na seguinte cadeia de caracteres: 1a 2b 3c 4d.A cadeia de caracteres de substituição z$1 converte essa cadeia de caracteres de substituição em z1 z2 z3 z4>. A sintaxe equivalente no Visual Studio 2010 é {:z}([a-z]) para a expressão regular agrupada e z\1 para a cadeia de caracteres de substituição.

Comparando expressões regulares do .NET Framework

É possível converter expressões regulares da versão utilizada em versões anteriores do Visual Studio para expressões regulares do .NET Framework usando a tabela a seguir.

Finalidade

New

Old

Novo Exemplo

Corresponder a qualquer caractere único (exceto uma quebra de linha)

.

.

a.o corresponde a "aro" em "around" e "abo" em "about", mas não a "acro" em "across".

Corresponder a zero ou mais ocorrências da expressão anterior (correspondência com o maior número de caracteres possível)

*

*

a*r corresponde a “r” em “rack”, “ar” em “ark” e “aar” em “aardvark”

Corresponder qualquer caractere zero ou mais vezes (curinga *)

.*

.*

c.*e corresponde a “cke” em “racket”, “comme” em “comment” e “code” em “code”

Corresponder a uma ou mais ocorrências da expressão anterior (correspondência com o maior número de caracteres possível)

+

+

e.+e corresponde a “eede” em “feeder”, mas não em “ee”.

Corresponder qualquer caractere uma ou mais vezes (curinga ?)

.+

.+

e.+e corresponde a “eede” em “feeder”, mas não em “ee”.

Corresponder a zero ou mais ocorrências da expressão anterior (correspondência com o menor número de caracteres possível)

*?

@

e.*?e corresponde a “ee” em “feeder”, mas não em “eede”.

Corresponder a uma ou mais ocorrências da expressão anterior (correspondência com o menor número de caracteres possível)

+?

#

e.+?e corresponde a “ente” e “erprise” em “empresa”, mas não à palavra “empresa” inteira.

Ancorar a cadeia de caracteres de correspondência ao início de uma linha ou cadeia de caracteres

^

^

^car corresponde à palavra “carro” somente quando aparece no início de uma linha.

Ancorar a cadeia de caracteres de correspondência ao fim de uma linha ou cadeia de caracteres

\r?$

$

End\r?$ corresponde a "end" somente quando aparece no final de uma linha.

Corresponder a qualquer caractere em um conjunto

[abc]

[abc]

b[abc] corresponde a "ba", "bb" e "bc".

Corresponder qualquer caractere em um intervalo de caracteres

[a-f]

[x-y]

be[n-t] corresponde a "bet" em "between", "ben" em "beneath" e "bes" em "beside", mas não a "below".

Capturar e numerar implicitamente a expressão contida dentro dos parênteses

()

()

([a-z])X\1 corresponde a "aXa" e "bXb", mas não a "aXb". ". “\1” refere-se ao primeiro grupo de expressão “[a-z]”.

Invalide uma correspondência

(?!abc)

~(abc)

real (?!idade) corresponde "real" em "realid" e "reali" mas não em "realidade". Também localiza o segundo "real" (mas não o primeiro "real") em "realityreal".

Corresponder a qualquer caractere que não está em um determinado conjunto de caracteres

[^abc]

[^abc]

be[^n-t] corresponde a "bef" em "before", "beh" em "behind" e "bel" em "below", mas não "beneath".

Corresponder à expressão antes ou depois do símbolo.

|

|

(sponge|mud) bath corresponde a "sponge bath" e "mud bath".

Escape o caractere após a barra invertida

\

\

\^ corresponde ao caractere ^.

Especificar o número de ocorrências do caractere ou grupo precedente

{x}, em que x é o número de ocorrências

\x, em que x é o número de ocorrências

x(ab){2}x corresponde a "xababx", e x(ab){2,3}x corresponde a "xababx" e "xabababx", mas não a "xababababx".

Corresponder com o texto em uma classe de caractere Unicode, onde “X” é o número Unicode.Para obter mais informações sobre classes de caracteres Unicode, consulte

Propriedades de caracteres do Unicode padrão 5.2.

\p{X}

:X

\p{Lu} corresponde a "T" e "D" em "Thomas Doe".

Corresponder a um limite de palavra

\b (Fora de uma classe de caractere, \b especifica um limite de palavra, e dentro de uma classe de caractere, especifica um backspace.)

< e > especificam o início e fim de uma palavra

\bin corresponde a "in" em "inside", mas não a "pinto".

Corresponder a uma quebra de linha (por exemplo um retorno de carro seguido por uma nova linha).

\r?\n

\n

End\r?\nBegin corresponde a "End" e a "Begin" somente quando "End" é a última cadeia de caracteres em uma linha e "Begin" é a primeira cadeia de caracteres na próxima linha.

Corresponder a qualquer caractere alfanumérico

\w

:a

a\wd corresponde a "add" e "a1d", mas não "a d".

Corresponder qualquer caractere de espaço em branco.

(?([^\r\n])\s)

:b

Interface\sPública corresponde à frase "Interface Pública".

Fazer a correspondência a qualquer caractere numérico

\d

:d

\d corresponde a "3" em "3456", "2" em 23" e "1" em "1".

Corresponder um caractere Unicode

\uXXXX, em que XXXX especifica o valor do caractere Unicode.

\uXXXX, em que XXXX especifica o valor do caractere Unicode

\u0065 corresponde ao caractere "e".

Corresponder a um identificador

\b(_\w+|[\w-[0-9_]]\w*)\b

:i

Corresponde a "type1", mas não a &type1" ou "#define".

Corresponder a uma cadeia de caracteres entre aspas

((\".+?\")|('.+?'))

:q

Corresponde a qualquer cadeia de caracteres entre aspas simples ou duplas.

Fazer a correspondência com um número hexadecimal

\b0[xX]([0-9a-fA-F])\b

:h

Corresponde a "0xc67f" mas não "0xc67fc67f".

Fazer a correspondência de inteiros e decimais

\b[0-9]*\.*[0-9]+\b

:n

Correspondências "1,333".

Consulte também

Outros recursos

Localizando e substituindo texto