Linguagem de Expressão Regular - Referência Rápida

Uma expressão regular é um padrão que o mecanismo de expressão regular tenta corresponder no texto de entrada. Um padrão consiste em um ou mais literais de caracteres, operadores ou construções. Para uma breve introdução, consulte Expressões regulares do .NET.

Cada seção nesta referência rápida lista uma categoria específica de caracteres, operadores e construções que você pode usar para definir expressões regulares.

Também fornecemos essas informações em dois formatos que você pode baixar e imprimir para fácil referência:

Fugas de personagens

O caractere de barra invertida (\) em uma expressão regular indica que o caractere que o segue é um caractere especial (conforme mostrado na tabela a seguir) ou deve ser interpretado literalmente. Para obter mais informações, consulte Fugas de caracteres.

Personagem escapado Description Padrão Matches
\a Corresponde a um caractere de sino, \u0007. \a "\u0007" no "Error!" + '\u0007'
\b Em uma classe de caractere, corresponde a um backspace, \u0008. [\b]{3,} "\b\b\b\b" no "\b\b\b\b"
\t Corresponde a uma guia, \u0009. (\w+)\t "item1\t", "item2\t" em "item1\titem2\t"
\r Corresponde a um retorno de carro, \u000D. \r( não é equivalente ao caractere de nova linha, \n.) \r\n(\w+) "\r\nThese" no "\r\nThese are\ntwo lines."
\v Corresponde a uma guia vertical, \u000B. [\v]{2,} "\v\v\v" no "\v\v\v"
\f Corresponde a um feed de formulário, \u000C. [\f]{2,} "\f\f\f" no "\f\f\f"
\n Corresponde a uma nova linha, \u000A. \r\n(\w+) "\r\nThese" no "\r\nThese are\ntwo lines."
\e Corresponde a um escape, \u001B. \e "\x001B" no "\x001B"
\nnn Usa representação octal para especificar um caractere (nnn consiste em dois ou três dígitos). \w\040\w "a b", "c d" em "a bc d"
\xnn Usa representação hexadecimal para especificar um caractere (nn consiste exatamente em dois dígitos). \w\x20\w "a b", "c d" em "a bc d"
\cX

\cx
Corresponde ao caractere de controle ASCII especificado por X ou x, onde X ou x é a letra do caractere de controle. \cC "\x0003" em "\x0003" (Ctrl-C)
\unnnn Corresponde a um caractere Unicode usando representação hexadecimal (exatamente quatro dígitos, conforme representado por nnnn). \w\u0020\w "a b", "c d" em "a bc d"
\ Quando seguido por um caractere que não é reconhecido como um caractere escapado nesta e em outras tabelas neste tópico, corresponde a esse caractere. Por exemplo, é o mesmo que , \* e \. é o mesmo que \x2E\x2A. Isso permite que o mecanismo de expressão regular desambigue elementos de linguagem (como * ou ?) e literais de caracteres (representados por \* ou \?). \d+[\+-x\*]\d+ "2+2" e "3*9" em "(2+2) * 3*9"

Classes de Personagens

Uma classe de caracteres corresponde a qualquer um de um conjunto de caracteres. As classes de caracteres incluem os elementos de idioma listados na tabela a seguir. Para obter mais informações, consulte Classes de caracteres.

Classe de caractere Description Padrão Matches
[character_group] Corresponde a qualquer caractere único em character_group. Por padrão, a correspondência diferencia maiúsculas de minúsculas. [ae] "a" no "gray"

"a", "e" em "lane"
[^character_group] Negação: Corresponde a qualquer caractere que não esteja no character_group. Por padrão, os caracteres em character_group diferenciam maiúsculas de minúsculas. [^aei] "r", "g", "n" em "reign"
[primeiro-último] Intervalo de caracteres: corresponde a qualquer caractere único no intervalo do primeiro ao último. [A-Z] "A", "B" em "AB123"
. Curinga: Corresponde a qualquer caractere, exceto \n.

Para corresponder a um caractere de ponto literal (. ou \u002E), você deve precedê-lo com o caractere de escape (\.).
a.e "ave" no "nave"

"ate" no "water"
\p{Designação} Corresponde a qualquer caractere único na categoria geral Unicode ou bloco nomeado especificado pelo nome. \p{Lu}

\p{IsCyrillic}
"C", "L" em "City Lights"

"Д", "Ж" em "ДЖem"
\P{Designação} Corresponde a qualquer caractere único que não esteja na categoria geral Unicode ou no bloco nomeado especificado pelo nome. \P{Lu}

\P{IsCyrillic}
"i", "t", "y" em "City"

"e", "m" em "ДЖem"
\w Corresponde a qualquer caractere de palavra. \w "I", , , , "D""A""1"em "3""ID A1.3"
\W Corresponde a qualquer caractere não-palavra. \W " ", "." em "ID A1.3"
\s Corresponde a qualquer caractere de espaço em branco. \w\s "D " no "ID A1.3"
\S Corresponde a qualquer caractere que não seja de espaço em branco. \s\S " _" no "int __ctr"
\d Corresponde a qualquer dígito decimal. \d "4" no "4 = IV"
\D Corresponde a qualquer caractere diferente de um dígito decimal. \D " ", , , , "="" ""I"em "V""4 = IV"

Âncoras

Âncoras, ou asserções atômicas de largura zero, fazem com que uma correspondência seja bem-sucedida ou falhe dependendo da posição atual na cadeia de caracteres, mas elas não fazem com que o mecanismo avance pela cadeia de caracteres ou consuma caracteres. Os metacaracteres listados na tabela a seguir são âncoras. Para obter mais informações, consulte Âncoras.

Asserção Description Padrão Matches
^ Por padrão, a correspondência deve começar no início da cadeia de caracteres; No modo multilinha, ele deve começar no início da linha. ^\d{3} "901" no "901-333-"
$ Por padrão, a correspondência deve ocorrer no final da cadeia de caracteres ou antes no final da cadeia de caracteres, no modo multilinha, deve ocorrer antes do final da linha ou antes \n\n no final da linha. -\d{3}$ "-333" no "-901-333"
\A A correspondência deve ocorrer no início da cadeia de caracteres. \A\d{3} "901" no "901-333-"
\Z A correspondência deve ocorrer no final da cadeia de caracteres ou antes \n no final da cadeia de caracteres. -\d{3}\Z "-333" no "-901-333"
\z A correspondência deve ocorrer no final da cadeia de caracteres. -\d{3}\z "-333" no "-901-333"
\G A correspondência deve ocorrer no ponto onde a partida anterior terminou, ou se não houve nenhuma correspondência anterior, na posição na cadeia de caracteres onde a correspondência começou. \G\(\d\) "(1)", "(3)", "(5)" em "(1)(3)(5)[7](9)"
\b A correspondência deve ocorrer em um limite entre um caractere (alfanumérico) e um \w\W caractere (não alfanumérico). \b\w+\s\w+\b "them theme", "them them" em "them theme them them"
\B A partida não deve ocorrer em um \b limite. \Bend\w*\b "ends", "ender" em "end sends endure lender"

Construções de agrupamento

As construções de agrupamento delineiam subexpressões de uma expressão regular e normalmente capturam substrings de uma cadeia de caracteres de entrada. As construções de agrupamento incluem os elementos de linguagem listados na tabela a seguir. Para obter mais informações, consulte Agrupando construções.

Construção de agrupamento Description Padrão Matches
(Subexpressão) Captura a subexpressão correspondente e atribui-lhe um número ordinal baseado em um. (\w)\1 "ee" no "deep"
(?<subexpressão do nome>)
ou
(?'subexpressão do nome')
Captura a subexpressão correspondente em um grupo nomeado. (?<double>\w)\k<double> "ee" no "deep"
(?<subexpressão name1-name2>)
ou
(?'subexpressão name1-name2')
Define uma definição de grupo de equilíbrio. Para obter mais informações, consulte a seção "Definição de grupo de balanceamento" em Construções de agrupamento. (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ "((1-3)*(3-1))" no "3+2^((1-3)*(3-1))"
(?:Subexpressão) Define um grupo não capturador. Write(?:Line)? "WriteLine" no "Console.WriteLine()"

"Write" no "Console.Write(value)"
(?imnsx-imnsx:Subexpressão) Aplica ou desabilita as opções especificadas na subexpressão. Para obter mais informações, consulte Opções de expressão regular. A\d{2}(?i:\w+)\b "A12xl", "A12XL" em "A12xl A12XL a12xl"
(?=Subexpressão) Asserção de olhar positivo de largura zero. \b\w+\b(?=.+and.+) "cats", "dogs"
presente em
"cats, dogs and some mice."
(?!Subexpressão) Asserção de visão panorâmica negativa de largura zero. \b\w+\b(?!.+and.+) "and", , "some""mice"
presente em
"cats, dogs and some mice."
(?<=Subexpressão) Afirmação de olhar positivo de largura zero. \b\w+\b(?<=.+and.+)

———————————

\b\w+\b(?<=.+and.*)
"some", "mice"
presente em
"cats, dogs and some mice."
————————————
"and", , "some""mice"
presente em
"cats, dogs and some mice."
(?<!Subexpressão) Asserção negativa de largura zero. \b\w+\b(?<!.+and.+)

———————————

\b\w+\b(?<!.+and.*)
"cats", , "dogs""and"
presente em
"cats, dogs and some mice."
————————————
"cats", "dogs"
presente em
"cats, dogs and some mice."
(?>Subexpressão) Grupo atômico. «(?>a|ab)c "ac" em"ac"

nada em"abc"

Olhares num relance

Quando o mecanismo de expressão regular atinge uma expressão lookaround, ele usa uma substring que alcança da posição atual até o início (lookbehind) ou o fim (lookahead) da cadeia de caracteres original e, em seguida, é executado Regex.IsMatch nessa substring usando o padrão lookaround. O sucesso do resultado desta subexpressão é então determinado pelo facto de se tratar de uma afirmação positiva ou negativa.

Olhar ao redor Nome Function
(?=check) Perspetiva positiva Afirma que o que se segue imediatamente à posição atual na string é "check"
(?<=check) Olhar positivo por trás Afirma que o que precede imediatamente a posição atual na cadeia de caracteres é "check"
(?!check) Olhar Negativo Afirma que o que se segue imediatamente à posição atual na string não é "check"
(?<!check) Olhar negativo para trás Afirma que o que precede imediatamente a posição atual na cadeia de caracteres não é "check"

Uma vez correspondidos, os grupos atômicos não serão reavaliados novamente, mesmo quando o restante do padrão falhar devido à correspondência. Isso pode melhorar significativamente o desempenho quando os quantificadores ocorrem dentro do grupo atômico ou do restante do padrão.

Quantificadores

Um quantificador especifica quantas instâncias do elemento anterior (que pode ser um caractere, um grupo ou uma classe de caracteres) devem estar presentes na cadeia de caracteres de entrada para que ocorra uma correspondência. Os quantificadores incluem os elementos de linguagem listados na tabela a seguir. Para obter mais informações, consulte Quantifiers.

Quantifier Description Padrão Matches
* Corresponde ao elemento anterior zero ou mais vezes. a.*c "abcbc" no "abcbc"
+ Corresponde ao elemento anterior uma ou mais vezes. "be+" "bee"em , "be" em "been""bent"
? Corresponde ao elemento anterior zero ou uma vez. "rai?" "rai" no "rain"
{n} Corresponde ao elemento anterior exatamente n vezes. ",\d{3}" ",043"em , , ",543"",876", e ",210" em "1,043.6""9,876,543,210"
{n,} Corresponde ao elemento anterior pelo menos n vezes. "\d{2,}" "166", , "29""1930"
{n,m} Corresponde ao elemento anterior pelo menos n vezes, mas não mais do que m vezes. "\d{3,5}" "166", "17668"

"19302" no "193024"
*? Corresponde ao elemento anterior zero ou mais vezes, mas o menor número de vezes possível. a.*?c "abc" no "abcbc"
+? Corresponde ao elemento anterior uma ou mais vezes, mas o menor número de vezes possível. "be+?" "be"em , "be" em "been""bent"
?? Corresponde ao elemento anterior zero ou uma vez, mas o menor número de vezes possível. "rai??" "ra" no "rain"
{n}? Corresponde ao elemento anterior exatamente n vezes. ",\d{3}?" ",043"em , , ",543"",876", e ",210" em "1,043.6""9,876,543,210"
{n,}? Corresponde ao elemento anterior pelo menos n vezes, mas o menor número de vezes possível. "\d{2,}?" "166", , "29""1930"
{n,m}? Corresponde ao elemento anterior entre n e m vezes, mas o menor número de vezes possível. "\d{3,5}?" "166", "17668"

"193", "024" em "193024"

Construções de Backreference

Uma referência posterior permite que uma subexpressão previamente correspondida seja identificada posteriormente na mesma expressão regular. A tabela a seguir lista as construções de backreference suportadas por expressões regulares no .NET. Para obter mais informações, consulte Construções de referência posterior.

Construção de referência posterior Description Padrão Matches
\número Backreference. Corresponde ao valor de uma subexpressão numerada. (\w)\1 "ee" no "seek"
\k<Designação> Backreference nomeado. Corresponde ao valor de uma expressão nomeada. (?<char>\w)\k<char> "ee" no "seek"

Construções de alternância

As construções de alternância modificam uma expressão regular para permitir a correspondência. Essas construções incluem os elementos de linguagem listados na tabela a seguir. Para obter mais informações, consulte Construções de alternância.

Construção de alternância Description Padrão Matches
| Corresponde a qualquer elemento separado pelo caractere de barra vertical (|). th(e|is|at) "the", "this" em "this is the day."
(?(expressão)sim|não)
ou
(?(expressão)sim)
Corresponde sim se o padrão de expressão regular designado pela expressão corresponder, caso contrário, corresponde à parte opcional não . expressão é interpretada como uma asserção de largura zero.

Para evitar ambiguidade com um grupo de captura nomeado ou numerado, você pode, opcionalmente, usar uma asserção explícita, como esta:
(?( (?=expressão) )sim|não)
(?(A)A\d{2}\b|\b\d{3}\b) "A10", "910" em "A10 C103 910"
(?(nome)sim|não)
ou
(?(Nome)Sim)
Corresponde sim se nome, um grupo de captura nomeado ou numerado, tiver uma correspondência, caso contrário, corresponde ao não opcional. (?<quoted>")?(?(quoted).+?"|\S+\s) "Dogs.jpg ", "\"Yiska playing.jpg\"" em "Dogs.jpg \"Yiska playing.jpg\""

Substituições

As substituições são elementos de linguagem de expressão regular que são suportados em padrões de substituição. Para obter mais informações, consulte Substituições. Os metacaracteres listados na tabela a seguir são asserções atômicas de largura zero.

Caráter Description Padrão Padrão de substituição String de entrada Seqüência de resultados
$número Substitui a substring correspondente pelo número do grupo. \b(\w+)(\s)(\w+)\b $3$2$1 "one two" "two one"
${Designação} Substitui a substring correspondente pelo nome do grupo nomeado. \b(?<word1>\w+)(\s)(?<word2>\w+)\b ${word2} ${word1} "one two" "two one"
$$ Substitui um literal "$". \b(\d+)\s?USD $$$1 "103 USD" "$103"
$& Substitui uma cópia de toda a partida. \$?\d*\.?\d+ **$&** "$1.30" "**$1.30**"
$` Substitui todo o texto da cadeia de caracteres de entrada antes da correspondência. B+ $` "AABBCC" "AAAACC"
$' Substitui todo o texto da cadeia de caracteres de entrada após a correspondência. B+ $' "AABBCC" "AACCCC"
$+ Substitui o último grupo que foi capturado. B+(C+) $+ "AABBCCDD" "AACCDD"
$_ Substitui toda a cadeia de caracteres de entrada. B+ $_ "AABBCC" "AAAABBCCCC"

Opções de expressão regular

Você pode especificar opções que controlam como o mecanismo de expressão regular interpreta um padrão de expressão regular. Muitas dessas opções podem ser especificadas em linha (no padrão de expressão regular) ou como uma ou mais RegexOptions constantes. Esta referência rápida lista apenas opções embutidas. Para obter mais informações sobre inline e RegexOptions opções, consulte o artigo Opções de expressão regular.

Você pode especificar uma opção embutida de duas maneiras:

  • Usando a construção(?imnsx-imnsx) diversa, onde um sinal de menos (-) antes de uma opção ou conjunto de opções desativa essas opções. Por exemplo, (?i-mn) ativa a correspondência que não diferencia maiúsculas de minúsculas (), desativa o modo de várias linhas () e desativa as capturas de grupo sem nome (min). A opção aplica-se ao padrão de expressão regular a partir do ponto em que a opção é definida e é efetiva até o final do padrão ou até o ponto em que outra construção reverte a opção.
  • Usando a subexpressão) da construção(?imnsx-imnsx:de agrupamento, que define opções apenas para o grupo especificado.

O mecanismo de expressão regular .NET suporta as seguintes opções embutidas:

Opção Description Padrão Matches
i Use a correspondência que não diferencia maiúsculas de minúsculas. \b(?i)a(?-i)a\w+\b "aardvark", "aaaAuto" em "aardvark AAAuto aaaAuto Adam breakfast"
m Use o modo multilinha. ^ e corresponder ao início e ao fim de uma linha, em vez do início e $ do fim de uma cadeia de caracteres. Para obter um exemplo, consulte a seção "Modo de várias linhas" em Opções de expressão regular.
n Não capture grupos sem nome. Para obter um exemplo, consulte a seção "Somente capturas explícitas" em Opções de expressão regular.
s Use o modo de linha única. Para obter um exemplo, consulte a seção "Modo de linha única" em Opções de expressão regular.
x Ignore o espaço em branco sem escape no padrão de expressão regular. \b(?x) \d+ \s \w+ "1 aardvark", "2 cats" em "1 aardvark 2 cats IV centurions"

Construções diversas

Construções diversas modificam um padrão de expressão regular ou fornecem informações sobre ele. A tabela a seguir lista as construções diversas suportadas pelo .NET. Para obter mais informações, consulte Construções diversas.

Construção Definição Exemplo
(?imnsx-imnsx) Define ou desabilita opções como insensibilidade a maiúsculas e minúsculas no meio de um padrão. Para obter mais informações, consulte Opções de expressão regular. \bA(?i)b\w+\b jogos "ABA", "Able" em "ABA Able Act"
(?#comentar) Comentário embutido. O comentário termina no primeiro parêntese de encerramento. \bA(?#Matches words starting with A)\w+\b
# [ao fim da linha] Comentário do modo X. O comentário começa sem escapar # e continua até o fim da linha. (?x)\bA\w+\b#Matches words starting with A

Consulte também