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.
Dica |
---|
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.
Dica |
---|
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 |
\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". |