Partilhar via


TR1 Regular Expressions

Este tópico discute as gramáticas de diversos mecanismos de expressão regular que ofereça suporte a TR1.

Neste tópico.

  • Gramática de expressão regular

  • Resumo de gramática

  • Detalhes de semânticas

  • Correspondência e pesquisa

  • Sinalizadores de formato

Gramática de expressão regular

Bb982727.collapse_all(pt-br,VS.110).gifElemento

Um elemento pode ser uma das seguintes coisas:

  • Um caractere comum que coincide com o mesmo caractere na seqüência de destino.

  • A caractere curinga '.' que corresponde a qualquer caractere na seqüência de destino, exceto uma nova linha.

  • A colchete expressão do formulário "expr", que corresponde a um caractere ou um elemento de agrupamento na seqüência de destino que também está no conjunto definido pela expressãoexpr, ou do formulário "[^expr", que corresponde a um caractere ou um elemento de agrupamento na seqüência de destino que não esteja no conjunto de definido pela expressãoexpr.

    A expressão expr pode conter qualquer combinação das seguintes ações:

    • Um caractere individual.Adiciona esse caractere no conjunto definido pelo expr.

    • A intervalo de caracteres do formulário "ch1-ch2".Adiciona os caracteres que são representados por valores no intervalo fechado ch1, ch2 ao conjunto definido peloexpr.

    • A classe de caracteres do formulário "[:name:]".Adiciona os caracteres no conjunto definido pela classe nomeada expr.

    • Um a classe de equivalência do formulário "[=elt=]".Adiciona os elementos de agrupamento que são equivalentes a elt ao conjunto definido pelo expr.

    • A símbolo de agrupamento do formulário "[.elt.]".Adiciona o elemento de agrupamento elt ao conjunto definido pelo expr.

  • Um âncora.Âncora ' ^' corresponde ao início da seqüência de destino; âncora '$' corresponde ao final da seqüência de destino.

A grupo de captura do formulário "( subexpressão )", ou "\ ( subexpressão \)" em BRE e grep, que coincide com a seqüência de caracteres na seqüência de destino que correspondem o padrão entre os delimitadores.

  • Um o escape de identidade do formulário "\k", que corresponde ao caractere k na seqüência de destino.

Exemplos:

  • "a" coincide a seqüência de destino "a" mas não coincide com as seqüências de destino "B", "b" ou "c".

  • "." corresponde a todas as seqüências de destino "a", "B", "b" e "c".

  • "[b-z]" corresponde as seqüências de destino "b" e "c" mas não coincide com as seqüências de destino "a" ou "B".

  • "[: inferior:]" corresponde a "a", "b", as seqüências de destino e "c" mas não coincide com a seqüência de destino "B".

  • "(a)" corresponde a seqüência de destino "a" e associates capturam o grupo 1 com o subsequence "a", mas não corresponde a seqüências de destino "B", "b" ou "c".

Na ECMAScript, BRE, e grep, um elemento também pode ser um referência inversa do formulário "\dd", onde dd representa um valor decimal que corresponde a uma seqüência de caracteres na seqüência de destino, o que é o mesmo que a seqüência de caracteres que corresponde a Nth N grupo de captura.Por exemplo, "(a) \ 1" corresponde a seqüência de destino "aa", porque o grupo de captura da primeira (e única) coincide com a seqüência inicial "a" e, em seguida, \ 1 corresponde a seqüência final "a".

Na ECMAScript, um elemento também pode ser uma das seguintes ações:

  • A grupo de não captura do formulário "(?: subexpressão )".Coincide com a seqüência de caracteres na seqüência de destino que correspondem o padrão entre os delimitadores.

  • Limita escape de formato de arquivo do formulário "\f", "\n", "\r", "\t" ou "\v".Eles corresponderem a um avanço, nova linha, retorno de carro, tabulação horizontal e a guia vertical, respectivamente, na seqüência de destino.

  • A positivo assert do formulário "(? = subexpressão )".Coincide com a seqüência de caracteres na seqüência de destino que correspondem a entre os delimitadores padrão, mas não altera a posição de correspondência na seqüência de destino.

  • A negativo assert do formulário "(?subexpressão ) ".Corresponde a qualquer seqüência de caracteres na seqüência de destino que não correspondem ao padrão entre os delimitadores e não altera a posição de correspondência na seqüência de destino.

  • A seqüência de escape hexadecimal do formulário "\xhh".Corresponde a um caractere na seqüência de destino que é representado por um de dois dígitos hexadecimais hh.

  • A seqüência de escape do unicode do formulário "\uhhhh".Corresponde a um caractere na seqüência de destino que é representado pelos quatro dígitos hexadecimais hhhh.

  • A seqüência de escape do controle do formulário "\ck".Coincide com o caractere de controle chamado pelo caractere k.

  • A limite de palavra assert do formulário "\b".Corresponde a quando a posição atual na seqüência de destino é imediatamente após um limite de palavra.

  • A limite de palavra negativo assert do formulário "\B".Corresponde a quando a posição atual na seqüência de destino não está imediatamente após um limite de palavra.

  • A dsw caractere de escape do formulário "\d", "\D", "\s", "\S", "\w", "\W".Fornece um nome curto para uma classe de caracteres.

Exemplos:

  • "(?:a)" corresponde a seqüência de destino "a", mas "(?:a) \ 1" é inválido porque não há nenhum grupo de captura 1.

  • "(?=a) um" coincide a seqüência de destino "a".O assert positivo corresponde a seqüência inicial "a" na seqüência de destino e a final "a" na expressão regular corresponde a seqüência inicial "a" na seqüência de destino.

  • "(?!a) um "não coincide com a seqüência de destino"a".

  • "a\b". coincide a seqüência de destino "um ~", mas não corresponde a seqüência de destino "ab".

  • "a\B." corresponde a seqüência de destino "ab", mas não coincide com a seqüência de destino "um ~".

Na awk, um elemento também pode ser uma das seguintes ações:

  • A escape de formato de arquivo do formulário "\ \", "\a", "\b", "\f", "\n", "\ r", "\t" ou "\v".Eles corresponderem a uma barra invertida, alerta, backspace, avanço, nova linha, retorno de carro, tabulação horizontal e uma guia vertical, respectivamente, na seqüência de destino.

  • Um seqüência de escape octal do formulário "\ooo".Corresponde a um caractere na seqüência de destino cuja representação é o valor representado por um, dois ou três dígitos octais ooo.

Bb982727.collapse_all(pt-br,VS.110).gifRepetição

Qualquer elemento diferente de um positivo assert, um negativo assert, ou um âncora pode ser seguido por uma contagem de repetição.O tipo mais geral de contagem de repetição assume a forma "{min,max}", ou "\ {min,max\}" em BRE e grep.Um elemento que é seguido por essa forma de contagem de repetição corresponde a pelo menos min ocorrências sucessivas e não mais de max sucessivas ocorrências de uma seqüência que coincide com o elemento.Por exemplo, "um {2,3}" corresponde a seqüência de destino "aa" e a seqüência de destino "aaa", mas não no destino "a" ou a seqüência de destino "aaaa" na seqüência.

Uma contagem de repetição também pode ter uma das seguintes formas:

  • "{min}", or "\{min\}" in BRE and grep.Equivalent to "{min,min}".

  • "{min,}", or "\{min,\}" in BRE and grep.Equivalente a "{min, não vinculado}".

  • "*".Equivalente a "{0, não vinculado}".

Exemplos:

  • "um {2}" corresponde a seqüência de destino "aa" mas não a seqüência de destino "a" ou a seqüência de destino "aaa".

  • "a {2}", corresponde a seqüência de destino "aa", a seqüência de destino "aaa" e assim por diante, mas não coincide com a seqüência de destino "a".

  • "um *" corresponde a seqüência de destino "", "a", a seqüência de destino "aa" na seqüência no destino e assim por diante.

Para todas as gramáticas exceto BRE e grep, uma contagem de repetição também pode levar a uma das seguintes formas:

  • "?".Equivalente a "{0,1}".

  • "+".Equivalente a "{1, não vinculado}".

Exemplos:

  • "a"? coincide a seqüência de destino "" e a seqüência de destino "a", mas não a seqüência de destino "aa".

  • "+" corresponde a seqüência de destino "a", a seqüência de destino "aa" e assim por diante, mas não a seqüência de destino "".

Na ECMAScript, todos os formulários de contagem de repetição podem ser seguidos pelo caractere '?', que designa um - greedy repetição.

Bb982727.collapse_all(pt-br,VS.110).gifConcatenação

Elementos de expressão regular, com ou sem contagens de repetição, podem ser concatenados para expressões de formar regulares mais tempo.A expressão resultante corresponde a uma seqüência de destino que é uma concatenação de seqüências que correspondem os elementos individuais.Por exemplo, "{2,3} b" corresponde a seqüência de destino "aab" e a seqüência de destino "aaab", mas não coincide com a seqüência de destino "ab" ou "aaaab" da seqüência de destino.

Bb982727.collapse_all(pt-br,VS.110).gifAlternação

Em todas as gramáticas de expressão regular, exceto BRE e grep, uma expressão regular concatenada pode ser seguida pelo caractere ' |' e outro concatenada expressão regular.Qualquer número de expressões regulares concatenados pode ser combinado dessa maneira.A expressão resultante corresponde a qualquer seqüência de destino que corresponde a um ou mais expressões regulares concatenadas.

Quando mais de uma das expressões regulares concatenadas coincide com a seqüência de destino, ECMAScript escolhe o primeiro as expressões regulares concatenados que coincide a seqüência como a correspondência (primeiro corresponder); as outras gramáticas de expressão regular escolha aquela que atinge o correspondem mais longa.Por exemplo, "ab|cd" corresponde a seqüência de destino "ab" e a seqüência de destino "cd", mas não coincide com a seqüência de destino "abd" ou "acd" da seqüência de destino.

Na grep e egrep, um caractere de nova linha ('\n') pode ser usado para separar o alternations.

Bb982727.collapse_all(pt-br,VS.110).gifSubexpressão

Na BRE e grep, uma subexpressão é uma concatenação.Em outras gramáticas de expressão regular, uma subexpressão é uma alternância.

Resumo de gramática

A tabela a seguir resume os recursos que estão disponíveis em diversas gramáticas de expressão regular fornecidas pelo TR1:

Elemento

BRE

OND

ECMA

GREP

egrep

awk

alternação usando ' |'

+

+

+

+

alternação usando '\n'

+

+

âncora

+

+

+

+

+

+

referência inversa

+

+

+

expressão de colchete

+

+

+

+

+

+

grupo de captura usando o "(").

+

+

+

+

grupo de captura usando "\ (\)"

+

+

seqüência de escape do controle

+

caractere de escape dsw

+

escape de formato de arquivo

+

+

seqüência de escape hexadecimal

+

escape de identidade

+

+

+

+

+

+

assert negativo

+

assert do limite de palavra negativo

+

grupo de não captura

+

repetição não greedy.

+

seqüência de escape octal

+

caractere comum

+

+

+

+

+

+

assert positivo

+

repetição usando "{}"

+

+

+

+

repetição usando "\ {\}"

+

+

repetição usando ' *'

+

+

+

+

+

+

repetição usando '?' e '+'

+

+

+

+

seqüência de escape do Unicode

+

caractere curinga

+

+

+

+

+

+

assert do limite de palavra

+

Detalhes de semânticas

Bb982727.collapse_all(pt-br,VS.110).gifÂncora

Uma âncora corresponde a uma posição na seqüência de destino, não um caractere.A ' ^' corresponde ao início da seqüência de caracteres de destino, e '$' corresponde ao final da seqüência de caracteres de destino.

Bb982727.collapse_all(pt-br,VS.110).gifReferência inversa

Uma referência inversa é uma barra invertida seguida por um valor decimal s.Ele coincide com o conteúdo de Nth grupo de captura.O valor de n não deve ser maior que o número de grupos de captura que precedem a referência inversa.Na BRE e grep, o valor de n é determinado pelo dígito decimal que segue a barra invertida.Na ECMAScript, o valor de n é determinado por todos os dígitos decimais imediatamente após a barra invertida.Portanto, em BRE e grep, o valor de n nunca é mais de 9, mesmo se a expressão regular tem mais de nove grupos de captura.Na ECMAScript, o valor de n é não vinculado.

Exemplos:

  • ")(c+) para ((a+) (b +) \ 3" corresponde a seqüência de destino "aabbbcbbb".A referência inversa \ "3" corresponde ao texto no terceiro grupo de captura, ou seja, o "(b+)".Ele não corresponde a seqüência de destino "aabbbcbb".

  • "(a) \ 2" não é válido.

  • "\10 (b para (((((((((a))))))))))" tem significados diferentes no BRE e em ECMAScript.Na BRE a referência inversa é "\ 1".A referência inversa coincide com o conteúdo do primeiro grupo de captura (ou seja, aquele que começa com "(b" e termina com o final ")" e vem antes da referência inversa), e o final ' 0 'corresponde o caractere comum ' 0'.Na ECMAScript, a referência inversa é "\10".Ele corresponde ao grupo de captura décimo, ou seja, aquele mais interno.

Bb982727.collapse_all(pt-br,VS.110).gifExpressão de colchete

Uma expressão de colchete define um conjunto de caracteres e agrupando elementos.Quando a expressão de colchete começa com o caractere ' ^' a correspondência é bem-sucedida se nenhum elemento no conjunto de coincidir com o caractere atual na seqüência de destino.Caso contrário, a correspondência é bem-sucedida se qualquer um dos elementos no conjunto corresponde ao caractere atual na seqüência de destino.

O conjunto de caracteres pode ser definido por listando qualquer combinação de caracteres individuais, intervalos de caracteres, classes de caracteres, classes de equivalência, e símbolos de agrupamento.

Bb982727.collapse_all(pt-br,VS.110).gifGrupo de captura

Um grupo de captura marca o seu conteúdo como uma única unidade na gramática expressão regular e rótulos de texto de destino que corresponda ao seu conteúdo.O rótulo associado a cada grupo de captura é um número, que é determinado, contando os parênteses de abertura que marcam capturar grupos até e incluindo o parêntese de abertura que marca o grupo de captura atual.Nessa implementação, o número máximo de grupos de captura é 31.

Exemplos:

  • "ab +" corresponde a seqüência de destino "abb", mas não coincide com a seqüência de destino "abab".

  • "(ab) +" não coincide com a seqüência de destino "abb", mas coincide a seqüência de destino "abab".

  • "((a+)(b+))(c+)" matches the target sequence "aabbbc" and associates capture group 1 with the subsequence "aabbb", capture group 2 with the subsequence "aa", capture group 3 with "bbb", and capture group 4 with the subsequence "c".

Bb982727.collapse_all(pt-br,VS.110).gifClasse de caracteres

Uma classe de caracteres em uma expressão de colchete adiciona todos os caracteres na classe nomeada para o conjunto de caracteres é definido pela expressão colchete.Para criar uma classe de caracteres, use "[:" seguido do nome da classe seguido por ":".Internamente, os nomes das classes de caracteres são reconhecidos chamando id = traits.lookup_classname.Um caractere ch pertence a essa classe se traits.isctype(ch, id) retorna true.O padrão regex_traits modelo oferece suporte os nomes de classe na tabela a seguir.

Class Name

Descrição

"alnum"

dígitos, letras maiúsculas e minúsculas

"alfa"

letras minúsculas e maiúsculas

"vazio"

espaço ou tabulação

"CTRL"

o escape de formato de arquivo caracteres

"dígito"

dígitos

"gráfico"

letras maiúsculas, letras minúsculas, dígitos e pontuação

"mais baixa"

letras minúsculas

"imprimir"

letras maiúsculas, letras minúsculas, dígitos, pontuação e espaço

"pontuação"

pontuação

"espaço"

espaço

"superior

caracteres maiúsculos

"xdigit"

dígitos, 'a', 'b', 'c', seria ', 'e', 'f', 'A', com equipamentos originais ' B', 'c' fabricados', 'E', 'F'

"d"

mesmo que o dígito

"s"

mesmo que o espaço

"w"

mesmo que alnum

Bb982727.collapse_all(pt-br,VS.110).gifIntervalo de caracteres

Um intervalo de caracteres em uma expressão de colchete adiciona todos os caracteres no intervalo para o conjunto de caracteres é definido pela expressão colchete.Para criar um intervalo de caracteres, coloque o caractere '-' entre os primeiro e último caracteres no intervalo.Isso coloca em um conjunto de todos os caracteres que têm um valor numérico que é maior ou igual ao valor numérico do primeiro caractere e menor ou igual ao valor do último caractere numérico.Observe que este conjunto de caracteres adicionados depende da representação da plataforma específica de caracteres.Se o caractere '-' ocorre no início ou final de uma expressão de colchete ou como primeiro ou último caractere de um intervalo de caracteres, ele representa a próprio.

Exemplos:

  • "[0-7]" representa o conjunto de caracteres {'0', '1', '2', '3', '4', ' 5', ' 6', ' 7'}.Ele corresponde ao destino sequences "0", "1" e assim por diante, mas não "a".

  • Em sistemas que usam o ASCII codificação de caracteres, "[h-k]" representa o conjunto de caracteres {'h', 'i', 'j', 'k'}.Ele coincide com as seqüências de destino "h", "i" e assim por diante, mas não "\x8A" ou "0".

  • Em sistemas que usam o EBCDIC codificação de caracteres, "[h-k]" representa o conjunto de caracteres {'h', 'i', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', '\x90', 'j', 'k'} ('h' é codificado como 0x88 e 'k' é codificado como 0x92).Ele coincide com as seqüências de destino "h", "i", "\x8A" e assim por diante, mas não "0".

  • "[- 0 - 24]" representa o conjunto de caracteres {'-', '0', '1', ' 2', ' 4'}.

  • "[0 - 2-]" representa o conjunto de caracteres {'0', '1', '2', '-'}.

  • Em sistemas que usam a codificação de caracteres ASCII, "[+ -]" representa o conjunto de caracteres {'+ ',',', '-'}.

No entanto, quando são usados os intervalos de sensíveis à localidade, os caracteres em um intervalo são determinados pelas regras de agrupamento para a localidade.Caracteres que agrupam-se depois do primeiro caractere na definição do intervalo e antes do último caractere na definição do intervalo estão no conjunto.Os caracteres de final de dois também estão no conjunto.

Bb982727.collapse_all(pt-br,VS.110).gifElemento de agrupamento.

Um elemento de agrupamento é uma seqüência de multi-character que é tratada como um único caractere.

Bb982727.collapse_all(pt-br,VS.110).gifSímbolo de agrupamento.

Um símbolo de agrupamento em uma expressão de colchete adiciona um elemento de agrupamento ao conjunto que é definido pela expressão colchete.Para criar um símbolo de agrupamento, use "[." seguido do elemento de agrupamento seguido por ".".

Bb982727.collapse_all(pt-br,VS.110).gifSeqüência de Escape do controle

Uma seqüência de escape do controle é que uma barra invertida seguida pela letra 'c' seguido de uma das letras 'a' a 'z' ou 'A' a 'Z'.Ele coincide com o caractere de controle ASCII nomeado por essa letra.Por exemplo, o "\ci" corresponde a seqüência de destino "\x09", porque < ctrl-i > possui o valor 0x09.

Bb982727.collapse_all(pt-br,VS.110).gifCaractere de Escape DSW

Um caractere de escape dsw é um nome curto para uma classe de caracteres, conforme mostrado na tabela a seguir.

Seqüência de escape

Equivalente a chamada de classe

Padrão denominado classe

"\d"

"[[:d:]]"

"[[: dígito:]]"

"\D"

"[^[:d:]]"

"[^ [: dígito:]]"

"\s"

"[[:s:]]"

"[[: espaço:]]"

"\S"

"[^[:s:]]"

"[^ [: espaço:]]"

"\w"

"[[:w:]]"

"[a-zA-Z0-9 _]" *

"\W"

"[^[:w:]]"

"[^ a-zA-Z0-9 _]" *

* Conjunto de caracteres ASCII de

Bb982727.collapse_all(pt-br,VS.110).gifClasse de equivalência

Uma classe de equivalência em uma expressão de colchete adiciona todos os caracteres e agrupando elementos que são equivalentes ao elemento de agrupamento na definição de classe de equivalência ao conjunto que é definido pela expressão colchete.Para criar uma classe de equivalência, use "[=" seguido de um elemento de agrupamento seguido por "=]".Internamente, dois elementos de agrupamento elt1 e elt2 são equivalentes se traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).

Bb982727.collapse_all(pt-br,VS.110).gifEscape de formato de arquivo

Um escape de formato de arquivo consiste de seqüências de escape de caractere usual de linguagem C, "\ \", "\a", "\b", "\f", "\n", "\ r", "\t", "\v".Eles têm os significados usuais, ou seja, barra invertida, alerta, backspace, avanço, nova linha, retorno de carro, tabulação horizontal e uma guia vertical, respectivamente.Na ECMAScript, "\a" e "\b" não são permitidas.("\ \" é permitido, mas é um escape de identidade, não um escape de formato de arquivo).

Bb982727.collapse_all(pt-br,VS.110).gifSeqüência de Escape hexadecimal

Uma seqüência de escape hexadecimal é uma barra invertida seguida pela letra 'x' seguido de dois dígitos hexadecimais (0-9a-fA-F).Ele corresponde a um caractere na seqüência de destino que possui o valor especificado por dois dígitos.Por exemplo, "\x41" corresponde a seqüência de destino "A" quando a codificação de caracteres ASCII.

Bb982727.collapse_all(pt-br,VS.110).gifEscape de identidade

Um escape de identidade é uma barra invertida seguida por um único caractere.Ele corresponde ao caractere.É necessário quando o caractere tem um significado especial; usando o escape de identidade, o significado especial é removido.Por exemplo:

  • "um *" corresponde a seqüência de destino "aaa", mas não coincide com a seqüência de destino "um *".

  • "a\ *" não coincide com a seqüência de destino "aaa", mas coincide com a seqüência de destino "um *".

O conjunto de caracteres que são permitidos em um escape de identidade depende a gramática de expressão regular, como mostrado na tabela a seguir.

Gramática

Caracteres de Escape de identidade permitidos

BRE, grep

{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' }

ERE, egre

{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' }

awk

EREPlus {' "', '/'}

ECMAScript

Todos os caracteres, exceto aqueles que podem fazer parte de um identificador.Normalmente, isso inclui letras, dígitos, '$', '_' e seqüências de escape do unicode.Para obter mais informações, consulte a especificação de linguagem do ECMAScript.

Bb982727.collapse_all(pt-br,VS.110).gifCaractere individual

Um caractere individual em uma expressão de colchete adiciona esse caractere para o conjunto de caracteres é definido pela expressão colchete.Em qualquer lugar em uma expressão de colchete, exceto no início, uma ' ^' representa a próprio.

Exemplos:

  • as seqüências de destino corresponde a "[abc]" "a", "b" e "c", mas não a seqüência "d".

  • "[^ abc]" corresponde a seqüência de destino "d", mas não as seqüências de destino "a", "b" ou "c".

  • "[uma ^ bc]" corresponde as seqüências de destino "a", "b", "c" e "^", mas não o "d" da seqüência de destino.

Em todas as gramáticas de expressão regular, exceto ECMAScript, se um ']' é o primeiro caractere que segue a abertura ' [' ou é o primeiro caractere que segue uma inicial ' ^', ele representa a próprio.

Exemplos:

  • "[] um" é inválido porque não há nenhum ']' para finalizar a expressão do colchete.

  • "[abc]]" corresponde as seqüências de destino "a", "b", "c" e "]", mas não o "d" da seqüência de destino.

  • "^ abc]" corresponde a seqüência de destino "d", mas não as seqüências de destino "a", "b", "c" ou "]".

Na ECMAScript, use ' \]' para representar o caractere ']' em uma expressão de colchete.

Exemplos:

  • "[] um" coincide a seqüência de destino "a" porque a expressão de colchete está vazia.

  • "[\]abc]" corresponde as seqüências de destino "a", "b", "c" e "]", mas não a seqüência de destino "d".

Bb982727.collapse_all(pt-br,VS.110).gifAssert negativo

Um negativo assert corresponde a qualquer coisa, mas seu conteúdo.Ela não consumir todos os caracteres na seqüência de destino.Por exemplo, "(?AA)(a*) "corresponde a seqüência de destino"a"e associates capturam o grupo 1 com o subsequence"a".Ele não corresponde a seqüência de destino "aa" ou "aaa" da seqüência de destino.

Bb982727.collapse_all(pt-br,VS.110).gifAssert negativo do limite de palavra

Corresponde a um assert do limite de palavra negativo se a posição atual na seqüência de destino não estiver imediatamente após um limite de palavra.

Bb982727.collapse_all(pt-br,VS.110).gifGrupo de não captura

Um grupo de não captura marca seu conteúdo como uma única unidade na gramática expressão regular, mas não rotular o texto de destino.Por exemplo, "(a)(?:b)*(c) coincide com o texto de destino"abbc"e associates capturam o grupo 1 com o subsequence"a"e a captura do grupo 2 com o subsequence"c".

Bb982727.collapse_all(pt-br,VS.110).gifRepetição não greedy.

A repetição não greedy consome o menor subsequence da seqüência de destino que corresponde ao padrão.Uma repetição greedy consome mais longa.Por exemplo, "(a+)(a*b)" corresponde o destino seqüência "aaab".Quando a repetição não greedy é usada, ele associa o grupo de captura 1 com o subsequence "a" no início do destino de seqüência e a captura do grupo 2 com o subsequence "aab" no final da seqüência de destino.Quando é usada uma correspondência greedy, ele associa o grupo de captura 1 com o subsequence "aaa" e captura o grupo 2 com o subsequence, "b".

Bb982727.collapse_all(pt-br,VS.110).gifSeqüência de Escape octal

Uma seqüência de escape octal é uma barra invertida seguida por um, dois ou três dígitos octais (0-7).Ele corresponde a um caractere na seqüência de destino que possui o valor especificado por esses dígitos.Se todos os dígitos são '0', a seqüência é inválida.Por exemplo, "\101" corresponde a seqüência de destino "A" quando a codificação de caracteres ASCII.

Bb982727.collapse_all(pt-br,VS.110).gifCaractere comum

Um caractere comum é qualquer caractere válido que não tem um significado especial na gramática atual.

Na ECMAScript, os seguintes caracteres têm um significado especial:

  • ^ $ \ .* + ?( ) [ ] { } |

Na BRE e grep, os seguintes caracteres têm um significado especial:

  • .[ \

Também em BRE e grep, os seguintes caracteres têm um significado especial quando eles são usados em um contexto específico:

  • ' *' tem um significado especial em todos os casos, exceto quando for o primeiro caractere em uma expressão regular ou o primeiro caractere que segue uma inicial ' ^' em uma expressão regular, ou quando ela é o primeiro caractere de um grupo de captura ou o primeiro caractere que segue uma inicial ' ^' em um grupo de captura.

  • ' ^' tem um significado especial quando ele é o primeiro caractere de uma expressão regular.

  • '$' tem um significado especial quando ele é o último caractere de uma expressão regular.

Na ERE, egrep, e awk, os seguintes caracteres têm um significado especial:

  • .[ \ ( * + ?{ |

Também em ERE, egrep, e awk, os seguintes caracteres têm um significado especial quando eles são usados em um determinado contexto.

  • ')' tem um significado especial quando ela corresponde a uma '('. anterior

  • ' ^' tem um significado especial quando ele é o primeiro caractere de uma expressão regular.

  • '$' tem um significado especial quando ele é o último caractere de uma expressão regular.

O mesmo caractere na seqüência de destino corresponde a um caractere comum.Por padrão, isso significa que a correspondência é bem-sucedida se os dois caracteres são representados pelo mesmo valor.Em uma coincidência de maiúsculas e minúsculas, dois caracteres ch0 e ch1 correspondente se traits.translate_nocase(ch0) == traits.translate_nocase(ch1).Em uma coincidência sensíveis à localidade, dois caracteres ch0 e ch1 correspondente se traits.translate(ch0) == traits.translate(ch1).

Bb982727.collapse_all(pt-br,VS.110).gifAssert positivo

Um positivo assert corresponde a seu conteúdo, mas não consome todos os caracteres na seqüência de destino.

Exemplos:

  • "(? = aa)(a*)"corresponde a seqüência de destino "aaaa" e associa o grupo de captura de 1 a subsequence "aaaa".

  • "(AA)(a*)" matches the target sequence "aaaa" and Associates Capture Group 1 with the subsequence "AA" at the beginning of the target Sequence and Capture Group 2 with the subsequence "AA" at the end of the target sequence.

  • "(?=AA) (a) |(a) "corresponde a seqüência de destino"a"e associates capturar o grupo 1 com uma seqüência vazia (porque o assert positivo falhou) e a captura do grupo 2 com o subsequence"a".Também coincide a seqüência de destino "aa" e associa o grupo 1 da captura subsequence captura e "aa" grupo 2 com uma seqüência vazia.

Bb982727.collapse_all(pt-br,VS.110).gifSeqüência de Escape do Unicode

Uma seqüência de escape do unicode é uma barra invertida seguida pela letra 'u' seguido de quatro dígitos hexadecimais (0-9a-fA-F).Ele corresponde a um caractere na seqüência de destino que possui o valor especificado por quatro dígitos.Por exemplo, "\u0041" corresponde a seqüência de destino "A" quando a codificação de caracteres ASCII.

Bb982727.collapse_all(pt-br,VS.110).gifCaractere curinga

Um caractere curinga corresponde a qualquer caractere a expressão-alvo, com exceção de uma nova linha.

Bb982727.collapse_all(pt-br,VS.110).gifLimite de palavra

Um limite de palavra ocorre nas seguintes situações:

  • O caractere atual no início da seqüência de destino e é um dos caracteres de palavraA-Za-z0-9_.

  • A atual posição do caractere é após o final da seqüência de destino e o último caractere na seqüência de destino é um dos caracteres de palavra.

  • O caractere atual é um dos caracteres word e o caractere precedente não é.

  • O caractere atual não é um dos caracteres word e o caractere precedente.

Bb982727.collapse_all(pt-br,VS.110).gifAssert do limite de palavra

Corresponde a uma declaração de limite de palavra quando a posição atual na seqüência de destino é imediatamente após um limite de palavra.

Correspondência e pesquisa

Para uma expressão regular corresponder a uma seqüência de destino, toda a expressão regular deve coincidir com a seqüência de destino inteira.Por exemplo, a expressão regular "bcr" coincide a seqüência de destino "bcr", mas não coincide com a seqüência de destino "abcd" nem a seqüência de destino "bcde".

Para uma pesquisa de expressão regular ter sucesso, deve haver uma subsequence em algum lugar na seqüência de destino que corresponde à expressão regular.Normalmente, a pesquisa localizará o subsequence correspondente à extrema esquerda.

Exemplos:

  • Uma pesquisa para a expressão regular "bcr" na seqüência de destino "bcr" tiver êxito e corresponde a seqüência inteira.Além disso, a mesma pesquisa na seqüência de destino "abcd" for bem-sucedida e coincida com os três últimos caracteres.Além disso, a mesma pesquisa na seqüência de destino "bcde" for bem-sucedida e coincide com os três primeiros caracteres.

  • Uma pesquisa para a expressão regular "bcr" na seqüência de destino "bcdbcd" for bem-sucedida e coincide com os três primeiros caracteres.

Se houver mais de um subsequence que corresponde a algum local na seqüência de destino, há duas maneiras para escolher o padrão correspondente.Primeiro corresponder escolhe o subsequence que foi encontrado pela primeira vez quando a expressão regular é correspondida.Correspondência mais longa escolhe a mais longa subsequence daqueles que corresponde nesse local.Se houver mais de um subsequence que tem o comprimento máximo, correspondência mais longa escolhe o que foi encontrado pela primeira vez.Por exemplo, quando a primeira correspondência é usada, uma pesquisa para a expressão regular "b|bc" na seqüência de destino "abcd" corresponde a subsequence, "b" porque o termo esquerdo da alternação coincide com aquele subsequence; Portanto, a primeira correspondência não tente o termo direito da alternação.Quando é usada a correspondência mais longa, a mesma pesquisa corresponde a "bc" porque "bc" tem mais de "b".

Uma correspondência parcial terá êxito se a correspondência de atingir o final da seqüência de destino sem falhas, mesmo se ela não chegou ao final da expressão regular.Portanto, após o êxito de uma correspondência parcial, acrescentar caracteres para a seqüência de destino pode causar a uma correspondência parcial posterior falhe.Entretanto, depois da falha de uma correspondência parcial, acrescentar caracteres para a seqüência de destino não pode causar a uma correspondência parcial posterior tenha êxito.Por exemplo, com uma correspondência parcial, "ab" corresponde a seqüência de destino "a", mas não "ac".

Sinalizadores de formato

Regras de formato ECMAScript

Regras de formato de sed

Texto de substituição

"$ &"

"&"

A seqüência de caracteres que corresponda à toda a expressão regular ([match[0].first, match[0].second))

"$$"

"$"

 

"\ &"

"&"

"$'" (sinal de cifrão seguido de cotação back)

 

A seqüência de caracteres que precede o subsequence que corresponde à expressão regular ([match.prefix().first, match.prefix().second))

"$'" (sinal de cifrão seguido de cotação direta)

 

A seqüência de caracteres que segue o que corresponde à expressão regular subsequence ([match.suffix().first, match.suffix().second))

"$ n"

"\n"

A seqüência de caracteres que corresponde ao grupo de captura na posição n, onde n é um número entre 0 e 9 ([match[n].first, match[n].second)

 

"\\n"

"\n"

"$ nn"

 

A seqüência de caracteres que corresponde ao grupo de captura na posição nn, onde nn é um número entre 10 e 99 ([match[nn].first, match[nn].second)

Consulte também

Referência

Visão geral da biblioteca C++ padrão