Compartilhar via


TR1 Expressões regulares

Este tópico discute as gramáticas dos mecanismos de expressão regular vários que oferece suporte a TR1.

Neste tópico.

  • Gramática de expressões regulares

  • Resumo de gramática

  • Detalhes de semânticas

  • Correspondência e pesquisa

  • Sinalizadores de formato

Gramática de expressões regulares

Elemento

Um elemento pode ser uma das seguintes ações:

  • An caractere comum que coincida com o mesmo caractere na sequência de destino.

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

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

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

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

    • A intervalo de caractere do formulário "ch1-ch2". Adiciona os caracteres que são representados por valores no intervalo fechadoch1, ch2] no conjunto definido pelo expr.

    • A classe de caractere do formulário "[:name:]". Adiciona os caracteres na classe nomeada ao conjunto definido pelo expr.

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

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

  • An ancorar.ancorar ' ^ ' corresponde ao início da sequência de destino; '$' correspondências de ancoragem no participante da sequência de destino.

A agrupar de capturar do formulário ()" subexpressão )", or "\( subexpressão \)" in BRE e grep, que coincide a sequência de caracteres na sequência de destino correspondentes do padrão entre os delimitadores.

  • An caractere de escape de identidade do formulário "\k", que corresponde ao caractere k na sequência de destino.

Exemplos:

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

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

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

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

  • "(a)" coincide a sequência de destino "a" e associa agrupar de capturar 1 com o subsequence "a", mas não corresponde a seqüências de destino "B", "b" ou "c".

In ECMAScript, BRE, e grep, um elemento também pode ser um referência de volta do formulário "\dd", onde dd representa um valor decimal N corresponde a uma sequência de caracteres na sequência de destino é igual a sequência de caracteres é correspondida pelo Nth agrupar de capturar.Por exemplo, "(a) \1" corresponde a sequência de destino "suavização" porque a primeira (e única) agrupar de capturar coincide a sequência inicial "a" e, em seguida, o \1 coincide a sequência final "a".

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

  • A não-agrupar de capturar do "(?: formulário subexpressão)".Coincide a sequência de caracteres na sequência de destino correspondentes do padrão entre os delimitadores.

  • Um limitado escape de formatação de arquivo do formulário "\f", "\n", "\r", "\t" ou "\v".Esses correspondam um avanço, nova linha, retorno de carro, tabulação horizontal e guia vertical, respectivamente, em sequência de destino.

  • A declaração positiva do "(?= formulário subexpressão)".Coincide a sequência de caracteres na sequência de destino que é correspondido pelo padrão entre os delimitadores, mas não alterar a posição correspondente na sequência de destino.

  • A declaração negativa do formulário? "(!subexpressão)".Corresponde a qualquer sequência de caracteres na sequência de destino que não corresponde ao padrão entre os delimitadores e não altera a posição correspondente na sequência de destino.

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

  • A sequência de escape Unicode do formulário \u"hhhh". Corresponde a um caractere na sequência de destino é representado por a quatro dígitos hexadecimais hhhh.

  • A sequência de escape de controle do formulário "\ck". Corresponde ao caractere de controle nomeado pelo caractere k.

  • A declaração de limite de palavra do formulário "\b".Correspondências quando a posição corrente na sequência de destino é imediatamente após um limite de palavra.

  • A declaração de limite de palavra negativo do formulário "\B".Correspondências quando a posição corrente na sequência de destino não estiver imediatamente após um limite de palavra.

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

Exemplos:

  • "(?:a)" coincide a sequência de destino "a", mas "(?:a) \1" é inválido porque não nenhum agrupar de capturar de 1.

  • "(?=a) um" coincide a sequência de destino "a".Declaração positiva coincide a sequência inicial "a" na sequência de destino e o final "a" na expressão regular corresponde a sequência inicial "a" na sequência de destino.

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

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

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

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

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

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

Repetição

Qualquer elemento Outros que um declaração positiva, a declaração negativa, or an ancorar pode ser seguido por uma contagem de repetição.Leva o tipo mais geral de contagem de repetição a formulário {"min,max}", or "\{min,max\} "em BRE e grep. Um elemento que é seguido por isso formulário de repetição contar corresponde a pelo menos min ocorrências sucessivas e não mais de max sucessivas ocorrências de uma sequência que corresponde ao elemento. Por exemplo, "um {2,3}" corresponde a sequência de destino "suavização" e a sequência de destino "aaa", mas não o destino de sequência "um" ou a sequência de destino "aaaa".

Uma contagem de repetição também pode ter um dos seguintes formatos:

  • "{min}", or "\{min\} "em BRE e grep. Equivalente a "{min,min}".

  • "{min,}", or "\{min\} "em BRE e grep. Equivalente a "{minnão vinculado} ".

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

Exemplos:

  • "uma {2}" corresponde a sequência de destino "suavização", mas não a sequência de destino "um" ou o destino sequência "aaa".

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

  • "um *"corresponde a sequência de destino"", o destino de sequência "a", a sequência de destino "suavização" e assim por diante.

Para todas as gramáticas exceto BRE e grep, uma contagem de repetição também pode ter um dos seguintes formulários:

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

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

Exemplos:

  • "a"? coincide a sequência de destino "" e a sequência de destino "a", mas não a sequência de destino "suavização".

  • "+"corresponde a sequência de destino "a", a sequência de destino "suavização" e assim por diante, mas não a sequência de destino"".

In ECMAScript, todas as formas de contagem de repetição podem ser seguidas pelo caractere '? ', que designa um repetição não greedy.

Concatenação

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

Alternaçã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 concatenados a expressão regular. Qualquer número de expressões regulares concatenados pode ser combinado dessa maneira.A expressão resultante corresponde a qualquer sequência de destino que corresponde a um ou mais expressões regulares concatenadas.

Quando mais de uma das expressões regulares concatenadas coincide a sequência de destino, ECMAScript escolhe a primeira das expressões regulares concatenadas que coincide a sequência sistema autônomo o (correspondênciaprimeira correspondência); o Outros gramáticas de expressão regular escolher o que atinge o correspondência mais longa.Por exemplo, "ab|cd" corresponde a sequência de destino "ab" e a sequência de destino "cd", mas não coincide com a sequência de destino "abd" ou "acd" da sequência de destino.

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

Subexpressão

In 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ível em vários gramáticas de expressão regular fornecidas pelo TR1:

Elemento

BRE

ERE

ECMA

GREP

egrep

awk

alternação usando ' | '

+

+

+

+

alternação usando '\n'

+

+

ancorar

+

+

+

+

+

+

referência de volta

+

+

+

expressão entre colchetes

+

+

+

+

+

+

agrupar de capturar usando "()"

+

+

+

+

agrupar de capturar usar "\ (\)"

+

+

sequência de escape de controle

+

escape de caractere dsw

+

escape de formatação de arquivo

+

+

sequência de escape hexadecimais

+

caractere de escape de identidade

+

+

+

+

+

+

declaração negativa

+

declaração de limite de palavra negativo

+

não-agrupar de capturar

+

repetição não greedy

+

sequência de escape octal

+

caractere comum

+

+

+

+

+

+

declaração positiva

+

repetição usando "{}"

+

+

+

+

repetição usando "\ {\}"

+

+

repetição usando ' * '

+

+

+

+

+

+

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

+

+

+

+

sequência de escape Unicode

+

caractere curinga

+

+

+

+

+

+

declaração de limite de palavra

+

Detalhes de semânticas

ancorar

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

referência inversa

A referência inversa é uma barra invertida seguida por um valor decimal N.Ele corresponde ao Sumário do enésimo agrupar de capturar.O valor de N não deve ser maior do que o número de grupos de capturar que precedem a referência inversa.In BRE e grep, o valor de N é determinado pelo dígito decimal que se segue a barra invertida. In ECMAScript, o valor de N é determinado por todos os dígitos Decimal que seguem imediatamente 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 capturar. In ECMAScript, o valor de N é não vinculado.

Exemplos:

  • "((a+) (b) +)(c+) \3" coincide a sequência de destino "aabbbcbbb".A referência inversa "\3" coincide com o texto na terceira agrupar de capturar, ou seja, o "(b+)".Não é compatível com a sequência de destino "aabbbcbb".

  • "(a) \2" inválido.

  • "\10 (b (((((((((a))))))))))" tem significados diferentes noBRE e em ECMAScript. In BREo referência inversa é "\1". A referência inversa coincide com o Sumário da primeira agrupar de capturar (ou seja, aquele que começa com "(b" e termina com a final ")" e antes da referência inversa), e final ' 0 'corresponde o caractere comum ' 0'.In ECMAScript, a referência de retorno é "\10". Ele corresponde do décimo agrupar de capturar, ou seja, aquele mais interno.

Expressões de colchete

Uma expressão entre colchetes define um conjunto de caracteres e Agrupando elementos.Quando a expressão entre colchetes começa com o caractere ' ^ ' a correspondência for bem-sucedido se o caractere na sequência de destino corrente coincidir com nenhum elemento no conjunto.Caso contrário, a correspondência é realizada se qualquer um dos elementos no conjunto corresponde ao caractere corrente na sequência de destino.

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

agrupar de capturar

A agrupar de capturar marca seu Sumário sistema autônomo uma única unidade na gramática expressão regular e rotula o texto de destino que corresponde ao seu Sumário.O rótulo associado a cada agrupar de capturar é um número, que é determinado ao contabilizar os parênteses de abertura marcar agrupar de capturar s até e incluindo o parêntese de abertura que marca corrente agrupar de capturar.Nessa implementação, o número máximo de grupos de capturar é 31.

Exemplos:

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

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

  • "((a+)(b+))(c+)" matches the destino sequência "aabbbc" and associates capturar agrupar 1 with the subsequence "aabbb", capturar agrupar 2 with the subsequence "suavização", capturar agrupar 3 with "bbb", and capturar agrupar 4 with the subsequence "c".

Classe de caractere

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

Class Name

Descrição

"alnum"

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

"alfa"

letras em minúsculas e maiúsculas

"em branco"

espaço ou tabulação

"cntrl"

the escape de formatação de arquivo caracteres

"dígito"

dígitos

"gráfico de"

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

"menor"

letras em minúsculas

"imprimir"

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

"punct"

pontuação

"espaço"

espaço

"superior

caracteres maiúsculos

"xdigit"

dígitos, 'a', 'b', 'c', ' d ',' e ',' f ', 'A', 'B', 'C', ' d', 'E', 'F'

"d"

mesmo sistema autônomo dígito

"s"

mesmo sistema autônomo espaço

"w"

mesmo que alnum

Intervalo de caractere

Um intervalo de caractere em uma expressão entre colchetes adiciona todos os caractere no intervalo e o conjunto de caractere que está definido pela expressão entre colchetes.Para criar um intervalo de caracteres, coloque o caractere '-' entre os caracteres e o sobrenome do intervalo.Isso coloca no conjunto de todos os caracteres que têm um valor numérico que é mais ou igual ao valor numérico do primeiro caractere e menor que ou igual ao valor numérico do último caractere.Observe que este conjunto de caracteres adicionados depende a representação específica da plataforma de caracteres.Se o caractere '-' ocorre no início ou participante de uma expressão entre colchetes ou sistema autônomo o primeiro ou último caractere de um intervalo de caracteres que representa o 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 caractere {'h', 'i', 'j', 'k'}.Coincidir 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 caractere {'h', 'i', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', '\x90', 'j', 'k'} ('h' é codificado sistema autônomo 0x88 e 'k' é codificado sistema autônomo 0x92).Coincidir com as seqüências de destino "h", "i", "\x8A" e assim por diante, mas não "0".

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

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

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

No entanto, quando fazem distinção de localidade intervalos são usados, caracteres de um intervalo são determinados pelas regras de agrupamento para a localidade.Caracteres depois do primeiro caractere na definição do intervalo e antes do último caractere na definição do intervalo de intercalação são no conjunto.Os caracteres de participante de dois também estão no conjunto.

Elemento de agrupamento

Um elemento de agrupamento é uma sequência multi-character que é tratada sistema autônomo um único caractere.

Símbolo de agrupamento

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

sequência de escape de controle

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

DSW caractere escape

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

sequência de escape

Equivalente a classe nomeada

Padrão de classe nomeada

"\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 caractere ASCII

Classe de equivalência

Adiciona uma classe de equivalência em uma expressão de suporte de 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 entre colchetes.Para criar uma classe de equivalência, use "[="seguido de um elemento de agrupamento seguido por"=]".Internamente, dois elementos de agrupamentoelt1 e elt2 são equivalentes se traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).

escape de formatação de arquivo

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

sequência de escape hexadecimais

Uma sequê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 sequência de destino que possui o valor especificado por dois dígitos.Por exemplo, "\x41" corresponde a sequência de destino "A" quando codificação de caracteres ASCII é usada.

caractere de escape de identidade

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

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

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

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

Gramática

Permitido de caracteres de caractere de escape de identidade

BRE, grep

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

ERE, egre

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

awk

EREAlém de {' "', '/'}

ECMAScript

Todos os caracteres, exceto os que podem fazer parte de um identificador.Geralmente, 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.

caractere individuais

Um caractere individual em uma expressão entre colchetes adiciona esse caractere para o conjunto de caracteres definida pela expressão entre colchetes.Em qualquer lugar em uma expressão entre colchetes, exceto no início, uma ' ^ ' representa propriamente dito.

Exemplos:

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

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

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

Em todas as gramáticas de expressão regular, exceto ECMAScriptSe um '] 'é o primeiro caractere que segue a abertura' ['ou é o primeiro caractere que segue uma inicial' ^ ', que representa o 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 sequência de destino.

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

In ECMAScriptuse ' \] ' para representar o caractere'] ' em uma expressão entre colchetes.

Exemplos:

  • "[] um" coincide a sequência de destino "a" porque a expressão entre colchetes está vazia.

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

Assert negativo

Uma declaração negativa corresponde a qualquer coisa, mas seu Sumário.Não consome quaisquer caracteres na sequência de destino.Por exemplo, "(?!.suavização)(a*) "coincide a sequência de destino" um "e associa agrupar de capturar 1 com o subsequence"a".Não corresponde a sequência de destino "suavização" ou "aaa" da sequência de destino.

Assert palavra limite negativo

Se a posição corrente na seqüência de caracteres de destino não estiver imediatamente após um corresponde a uma declaração de limite de palavra negativolimite de palavra.

Não-agrupar de capturar

Um não-agrupar de capturar marca seu Sumário sistema autônomo uma única unidade na gramática expressão regular, mas não rotular o texto de destino.Por exemplo, "(a)(?:b)*(c) matches the destino text"abbc"and associates agrupar de captura 1 with the subsequence"a"and agrupar de captura 2 with the subsequence"c".

Repetição não greedy

Uma repetição não greedy consome o subsequence menor da sequência de destino corresponde ao padrão.Uma repetição greedy consome mais longa.Por exemplo, "(a+)(a*b)" combina o destino aaab"sequência".Quando é usada uma repetição não greedy, ele associa agrupar de capturar 1 com o subsequence "a" no início da sequência de destino e agrupar de capturar 2 com o subsequence "aab" no participante da sequência de destino.Quando uma correspondência greedy é usada, ele associa capturar o agrupar 1 com a subsequence "aaa" e capturar o agrupar 2 com o subsequence "b".

sequência de escape octal

Uma sequê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 sequência de destino que possui o valor especificado por esses dígitos.Se todos os dígitos são '0', a sequência é inválido.Por exemplo, "\101" corresponde a sequência de destino "A" quando codificação de caracteres ASCII é usada.

Caractere comum

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

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

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

In 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 forem usados em um contexto específico:

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

  • ' ^ ' 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.

In 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 ele coincidir com um '('. 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.

Um caractere comum coincide com o mesmo caractere na sequência de destino.Por padrão, isso significa que a correspondência for bem-sucedida se os dois caracteres são representados pelo mesmo valor.Em uma correspondência não diferencia maiúsculas de minúsculas, dois caracteres ch0 e ch1 Coincidir se traits.translate_nocase(ch0) == traits.translate_nocase(ch1). Em uma coincidência sensíveis à localidade, dois caracteres ch0 e ch1 Coincidir se traits.translate(ch0) == traits.translate(ch1).

Assert positivo

Uma declaração positiva corresponde ao seu Sumário, mas não consome quaisquer caracteres na sequência de destino.

Exemplos:

  • "(?=suavização)(a*)" matches the destino sequência "suavizaçãosuavização" and Associates agrupar de captura 1 with the subsequence "suavizaçãosuavização".

  • "(suavização)(a*)" matches the destino sequência "suavizaçãosuavização" and Associates agrupar de captura 1 with the subsequence "suavização" at the beginning of the destino sequência and agrupar de captura 2 with the subsequence "suavização" at the participante of the destino sequência.

  • "(?=suavização)(a)|(a)" matches the destino sequência "a" and Associates agrupar de capturar 1 with an empty sequência (because the positive Assert Failed) e agrupar de capturar 2 com o subsequence "a".Também coincide a sequência de destino "suavização" e associa o agrupar de capturar de 1 a subsequence "suavização" e capturar o agrupar 2 com uma sequência vazia.

sequência de escape do Unicode

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

caractere curinga

Um caractere curinga corresponde a qualquer caractere a expressão-alvo, exceto uma nova linha.

Limite do palavra

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

  • O caractere corrente no início da sequência de destino e é um dos caracteres a palavra A-Za-z0-9_.

  • A corrente posição do caractere é após o participante da sequência de destino e o último caractere na sequência de destino é um dos caracteres de palavra.

  • O caractere corrente é um dos caracteres de palavra e o caractere precedente não.

  • O caractere corrente não é um dos caracteres de palavra e o caractere precedente.

Limite Assert do palavra

Quando a posição corrente na seqüência de caracteres de destino é imediatamente após um corresponde a uma declaração de limite de palavralimite de palavra.

Correspondência e pesquisa

Para uma expressão regular corresponder a uma sequência de destino, toda a expressão regular deve corresponder à sequência de destino inteira.Por exemplo, a expressão regular "BCD" coincide a sequência de destino"BCD" mas não corresponda à sequência de destino "um" BCD nem a sequência de destino"BCD e".

Para uma Pesquisar de expressão regular ter sucesso, deve haver um subsequence em algum lugar na sequência de destino corresponde à expressão regular.Normalmente, a Pesquisar localizará o subsequence correspondente mais à esquerda.

Exemplos:

  • Uma Pesquisar com a expressão regular "BCD" na sequência de destino"BCD" tiver êxito e corresponde a sequência inteira.A mesma Pesquisar na sequência de destino "abcd" também é bem-sucedida e coincida com os três últimos caracteres.A mesma Pesquisar na sequência de destino "bcde" também é bem-sucedida e corresponde os três primeiros caracteres.

  • Uma Pesquisar de expressão regular "bcr" na sequência de destino "bcdbcd" tiver êxito e corresponde os três primeiros caracteres.

Se houver mais de um subsequence corresponde a algum local na sequência de destino, há duas maneiras para escolher o padrão correspondente.Primeira correspondência escolhe subsequence encontrado primeiro quando a expressão regular é correspondida.Correspondência mais longa escolhe subsequence maior dos correspondentes nesse local.Se houver mais de um subsequence que tem o comprimento máximo, correspondência mais longa escolherá aquele que foi encontrado primeiro.Por exemplo, quando a primeira correspondência é usada, uma Pesquisar com a expressão regular "b|bc" na sequência de destino "abcd" corresponde a subsequence "b" porque esse subsequence coincide com o termo à esquerda da alternação; portanto, a primeira correspondência não tente a vigência direita a alternação.Quando a correspondência mais longa é usada, a mesma Pesquisar corresponde a "bc" porque "bc" tem mais de "b".

Uma correspondência parcial é bem-sucedida se a correspondência de atingir o participante da sequência de destino sem falhas, mesmo que ele não atingiu o participante da expressão regular.Portanto, depois que uma correspondência parcial for bem-sucedida, acrescentando caracteres da sequência de destino poderá fazer com que uma correspondência parcial posterior falhe.No entanto, depois que uma correspondência parcial falha, acrescentando caracteres da sequência de destino não pode causar a uma correspondência parcial posterior seja bem-sucedida.Por exemplo, com uma correspondência parcial, "ab" corresponde a sequência de destino "um"mas não"ac".

Sinalizadores de formato

Regras de formatação ECMAScript

sed regras de formatação

Texto de substituição

"$&"

"&"

A sequência de caractere que corresponde à expressão regular inteira ([match[0].first, match[0].second))

"$$"

"$"

 

"\&"

"&"

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

 

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

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

 

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

"$ n"

"\n"

A sequência de caractere que corresponde ao agrupar de capturar na posição n, onde n é um número entre 0 e 9 ([match[n].first, match[n].second)

 

"\\n"

"\n"

"$ nn"

 

A sequência de caractere que corresponde ao agrupar de capturar na posição nn, onde nn é um número entre 10 e 99 ([match[nn].first, match[nn].second)

Consulte também

Outros recursos

Referência de extensões de TR1 biblioteca C++ padrão