Partilhar via


Elementos de linguagem das expressões regulares

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

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

  • Sai do caractere

  • Classes de caracteres

  • Âncoras

  • Construções de agrupamento.

  • Quantificadores

  • Construções de retrorreferência

  • Construções de alternância

  • Substituições

  • Construções de diversas

Escapes de Caracteres

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

Caractere com escape

Descrição

Padrão

Matches

\a

Corresponde a um caractere de bell, \u0007.

\a

"\u0007" em "Erro!". + '\u0007'

\b

Em uma classe de caracteres 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" no "item1\titem2\t"

\r

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

\r\n(\w+)

"\r\nThese" em "linhas de \r\nThese are\ntwo".

\v

Corresponde a uma guia vertical, \u000B.

[\v]{2,}

"\v\v\v" no "\v\v\v"

\f

Corresponde a um formulário de alimentação \u000C.

[\f]{2,}

"\f\f\f" no "\f\f\f"

\n

Corresponde a uma nova linha, \u000A.

\r\n(\w+)

"\r\nThese" em "linhas de \r\nThese are\ntwo".

\e

Corresponde a um escape \u001B.

\e

"\x001B" no "\x001B"

\nnn

Usa a representação octal para especificar um caractere (nnn consiste em até três dígitos).

\w\040\w

"a b", "c d" em

"um d-bc"

\xnn

Usa a representação hexadecimal para especificar um caractere (nn consiste em exatamente dois dígitos).

\w\x20\w

"a b", "c d" em

"um d-bc"

\cX

\cx

Corresponde ao caractere de controle ASCII especificado por x ou x, onde x ou x é a letra de um caractere de controle.

\cC

"\x0003" no "\x0003" (Ctrl-C)

\unnnn

Corresponde a um caractere Unicode usando a representação hexadecimal (exatamente quatro dígitos, conforme representado por nnnn).

\w\u0020\w

"a b", "c d" em

"um d-bc"

\

Quando seguido de um caractere que não é reconhecido como um caractere de escape deste e outras tabelas neste tópico, corresponde ao caractere. Por exemplo, \* é o mesmo que \x2A. Isso permite que o mecanismo de expressão regular a ambigüidade de elementos de linguagem (como * ou?) e caracteres literais (representado por \* ou \?).

\d+[\+-x\*]\d+\d+[\+-x\*\d+

"2 + 2" e "3 * 9" em "(2+2) * 3 * 9"

Voltar ao topo

Classes de Caracteres

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

Classe de caractere

Descrição

Padrão

Matches

[grupo caractere]

Corresponde a qualquer caractere único na character_group. Por padrão, a correspondência é diferencia maiúsculas de minúsculas.

[ae]

"a" em "gato"

"a", "e" na "pista"

[^grupo caractere]

Negação: Corresponde a qualquer caractere que não esteja na character_group. Por padrão, caracteres de character_group diferenciam maiúsculas de minúsculas.

[^aei]

"r", "g", "n" no "Reinado do japonês"

[primeiro-último]

Intervalo de caracteres: Corresponde a qualquer caractere no intervalo de primeiro para último.

[A-Z]

"A", "B" em "ab123"

.

Curinga: Corresponde a qualquer caractere único exceto \n.

a.e

"ave" em "nave"

"ar" em "água"

\p{name}

Corresponde a qualquer caractere único na categoria geral do Unicode ou nomeado bloco especificado por nome.

\p{Lu}

\p{IsCyrillic}

"C", "L" em "Luzes da cidade"

"Д", "Ж" no "ДЖem"

\P{name}

Corresponde a qualquer caractere que não está na categoria geral do Unicode ou nomeado bloco especificado por nome.

\P{Lu}

\P{IsCyrillic}

"i", "t", "y" em "Cidade"

"e", "m" no "ДЖem"

\w

Corresponde qualquer caractere palavra.

\w

"I", "D", "A", "1", "3" no "ID A1.3"

\W

Corresponde a qualquer caractere não-word.

\W

" ", "." no "ID A1.3"

\s

Corresponde qualquer caractere de espaço em branco.

\w\s

"D" no "ID A1.3"

\S

Corresponde qualquer caractere de espaço em branco.

\s\S

" _" em "int __ctr"

\d

Corresponde qualquer dígito decimal.

\d

"4" em "4 = IV"

\D

Corresponde a qualquer dígito decimal com ponto.

\D

" ", "=", " ", "I", "V" em "4 = IV"

Voltar ao topo

Âncoras

Âncoras ou declarações de largura zero atômicas, causam uma correspondência para o êxito ou falha de acordo com a posição atual na seqüência de caracteres, mas eles não causam o mecanismo de avance para a seqüência de caracteres ou caracteres de consumir. Os metacaracteres listados na tabela a seguir são âncoras. Para obter mais informações, consulte Âncoras de expressões regulares.

Asserção

Descrição

Padrão

Matches

^

A correspondência deve começar no início de uma seqüência ou linha.

^\d{3}

"901-" em

"901-333-"

$

A correspondência deve ocorrer no final da seqüência de caracteres ou antes de \n no final da linha ou seqüência de caracteres.

-\d{3}$

"-333" em

"-901-333"

\A

A correspondência deve ocorrer no início da seqüência de caracteres.

\A\d{3}

"901" em

"901-333-"

\Z

A correspondência deve ocorrer no final da seqüência de caracteres ou antes de \n no final da seqüência de caracteres.

-\d{3}\Z

"-333" em

"-901-333"

\z

A correspondência deve ocorrer no final da seqüência de caracteres.

-\d{3}\z

"-333" em

"-901-333"

\G

A correspondência deve ocorrer no ponto onde a ocorrência anterior foi encerrada.

\G\(\d\)

"(1)", "(3)", "(5)" no "(1)(3)(5)[7](9)"

\b

A correspondência deve ocorrer em um limite entre um \w (alfanuméricas) e um \W caractere (não-alfanuméricos).

\b\w+\s\w+\b

"eles-los" em "eles tema-los-los"

\B

A correspondência não deve ocorrer em um \b limite.

\Bend\w*\b

"Finalizar", "remetente" no "fim envia suportar credor"

Voltar ao topo

Agrupando Construtores

Construções de agrupamento delinear subexpressões de uma expressão regular e normalmente capturar substrings de uma seqüência de caracteres de entrada. Construções de agrupamento incluem os elementos de linguagem listados na tabela a seguir. Para obter mais informações, consulte Agrupando Construtores.

Agrupando Construtores

Descrição

Padrão

Matches

(Subexpressão)

Captura a subexpressão correspondente e o atribui um número ordinal de baseado em zero.

(\w)\1

"ee" em "profunda"

(?<nome> subexpressão)

Captura a subexpressão correspondente em um grupo nomeado.

(?<double>\w)\k<double>

"ee" em "profunda"

(?<Nome1-nome2> subexpressão)

Define a definição de um grupo de equilíbrio. Para obter mais informações, consulte a "balanceamento de definição de grupo" seção Agrupando Construtores.

(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$

"((1-3)*(3-1))" no "3+2^((1-3)*(3-1))"

(?: subexpressão)

Define um grupo de não captura.

Write(?:Line)?

"writeline" no "Console.WriteLine()"

(?imnsx-imnsx: subexpressão)

Aplica ou desativa as opções especificadas em subexpressão. Para obter mais informações, consulte Opções de expressões regulares.

A\d{2}(?i:\w+)\b

"a12xl", "a12xl" no "a12xl A12XL a12xl"

(?= subexpressão)

Declaração de lookahead positivo de largura igual a zero.

\w+(?=\.)

"é", "ran" e "saída" "ele é. O cão é executado. O sol é ".

(?! subexpressão)

Declaração de lookahead negativo de largura igual a zero.

\b(?!un)\w+\b

"certamente", "usado" em "certeza unity se usado"

(?<= subexpressão)

Declaração de lookbehind de largura zero positivo.

(?<=19)\d{2}\b

"99", "50", "05" no "1851 1999 1950 1905 2003"

(?<! subexpressão)

Declaração de lookbehind de largura zero negativo.

(?<!19)\d{2}\b

"51", "03" no "1851 1999 1950 1905 2003"

(?[] subexpressão)

Subexpressão nonbacktracking (ou "cavalo").

[13579](?[]A+B+)

"1ABB", "3ABB" e "5AB" no "5AC de 5AB de 3ABBC de 1ABB"

Voltar ao topo

Quantificadores

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

Quantificador

Descrição

Padrão

Matches

*

Coincide com o elemento anterior zero ou mais vezes.

\d*\. \d

".0", "19.9", "219.9"

+

O elemento anterior coincide com uma ou mais vezes.

"be+"

"sido" no "foi", "ser" em "dobrada"

?

Coincide com o elemento anterior zero ou uma vez.

"rai? n"

"ran", "chuva"

{n}

Corresponde exatamente ao elemento anterior n vezes.

",\d{3}"

", 043" no "1,043.6",", 876" ", 543" e ", 210" no "9,876,543,210"

{n,}

O elemento anterior corresponde a pelo menos n vezes.

"\d{2,}"

"166", "29", "1930"

{n,m}

O elemento anterior corresponde a pelo menos n vezes, mas não mais de m vezes.

"\d{3,5}"

"166", "17668"

"19302" no "193024"

*?

Corresponde ao elemento anterior zero ou mais vezes, mas, como algumas vezes possível.

\d*? \. \d

".0", "19.9", "219.9"

+?

Correspondências o elemento anterior de um ou mais vezes, mas, como algumas vezes possível.

"be+?"

"ser" no "foi", "ser" em "dobrada"

??

Coincide com o elemento anterior zero ou um tempo, mas, como algumas vezes possível.

"rai?? n"

"ran", "chuva"

{n}?

Corresponde exatamente ao elemento anterior n vezes.

",\d{3}?"

", 043" no "1,043.6",", 876" ", 543" e ", 210" no "9,876,543,210"

{n,}?

O elemento anterior corresponde a pelo menos n vezes, mas algumas vezes possível.

"\d{2,}?"

"166", "29", "1930"

{n,m}?

Coincide com o elemento anterior entre n e m vezes, mas algumas vezes possível.

"\d{3,5}?"

"166", "17668"

"193", "024" no "193024"

Voltar ao topo

Construtores de Referência Passada

Referência anterior permite uma subexpressão com correspondência anterior seja identificada posteriormente na mesma expressão regular. A tabela a seguir lista as construções retrorreferência oferece suportadas a expressões regulares na.NET Framework. Para obter mais informações, consulte Construtores de Referência Passada.

Construtores de Referência Passada

Descrição

Padrão

Matches

\número

Referência Passada. Corresponde ao valor de uma subexpressão numerada.

(\w)\1

"ee" em "busca"

\k<name>

Referência Passada nomeada. Corresponde ao valor de uma expressão nomeado.

(?<char>\w)\k<char>

"ee" em "busca"

Voltar ao topo

Construtores de Alternância

Construções de alternação modificar uma expressão regular para habilitar um / ou correspondência. Essas construções incluem os elementos de linguagem listados na tabela a seguir. Para obter mais informações, consulte Construtores de Alternância.

Alternância de Construtores

Descrição

Padrão

Matches

|

Corresponde a qualquer um elemento, separado pelo caractere de barra vertical (|).

th(e|is|at)

"o", "Este" em "Este é o dia. "

(?(expressão)Sim|não)

Corresponde a Sim se expressão corresponde; Caso contrário, corresponde a opcional sem parte. expressão é interpretado como uma declaração de largura igual a zero.

(?(A)A\d{2}\b|\b\d{3}\b)

"A10", "910" no "C103 de A10 910"

(?(nome)Sim|não)

Correspondências Sim se a captura nomeada nome tem uma correspondência; Caso contrário, corresponde a opcional sem.

(?<quoted>")?(?(quoted).+?"|\S+\s)

Dogs.jpg, "yiska playing.jpg" no "Dogs.jpg"yiska playing.jpg""

Voltar ao topo

Substituições

Substituições são elementos de linguagem de expressão regular que são compatíveis com padrões de substituição. Para obter mais informações, consulte Substituições. Os metacaracteres listados na tabela a seguir são declarações de largura zero atômicas.

Caracterer

Descrição

Padrão

Padrão de substituição

Seqüência de entrada

Seqüência de resultado

$número

Substitui a subseqüência correspondida pelo grupo número.

\b(\w+)(\s)(\w+)\b

$3$2$1

"um dois"

"dois um"

${name}

Substitui a subseqüência correspondida pelo grupo nomeado nome.

\b(?<word1>\w+)(\s)(?<word2>\w+)\b

${word2} ${word1}

"um dois"

"dois um"

$$

Substitui um literal "$".

\b(\d+)\s?USD

$$$1

"USD 103"

"$103"

$&

Substitui uma cópia da correspondência inteira.

(\$*(\d*(\.+\d+)?){1})

**$&

"$1.30"

"**$1.30**"

$`

Substitui todo o texto da sequência de entrada antes da correspondência.

B+

$`

"AABBCC"

"AAAACC"

$'

Substitui todo o texto da sequência de entrada após a correspondência.

B+

$'

"AABBCC"

"AACCCC"

$+

Substitui o último grupo que foi capturado.

B+(C+)

$+

"AABBCCDD"

AACCDD

$_

Substitui toda a sequência de caracteres de entrada.

B+

$_

"AABBCC"

"AAAABBCCCC"

Voltar ao topo

Construtores Diversos

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

Construct

Definição

Exemplo

(?imnsx-imnsx)

Define ou desativa opções como, por exemplo, distinção entre maiúsculas e minúsculas no meio de um padrão. Para obter mais informações, consulte Opções de expressões regulares.

\bA(?i)b\w+\bcorresponde a "ABA", "Capaz de" em "ABA Act capaz de"

(?# comentário)

Comentário in-line. O comentário termina com o parêntese de fechamento primeiro.

\bA(?#Matches words starting with A)\w+\b

#[para o final da linha]

Modo de Comentário X. O comentário começa com um sinal # e continua até o final da linha.

(?x)\bA\w+\b#Matches words starting with A

Voltar ao topo

Consulte também

Referência

System.Text.RegularExpressions

Regex

Conceitos

Expressões Regulares do .NET Framework

Classes de Expressões Regulares

Outros recursos

Práticas recomendadas para expressões regulares na.NET Framework

Exemplos de Expressões Regulares