Referências anteriores em JScript

Um dos recursos mais importantes de expressões regulares é a capacidade para armazenar parte de um padrão correspondente para reutilização posterior.sistema autônomo você pode se lembrar, colocar parênteses ao redor de um padrão de expressão regular ou parte de um padrão faz com que essa parte da expressão a ser armazenado em um buffer temporário.Você pode substituir a capturar, usando os metacaracteres não capturar?:,? =, ou?!.

Usando referências anteriores

Cada submatch capturado é armazenado sistema autônomo que for encontrado da esquerda para a direita em um padrão de expressões regulares.Os números de buffer começar em um e continuem até um máximo de 99 subexpressions capturados.Cada buffer pode ser acessado usando \ n where n é um ou dois dígitos Decimal identificando um buffer específico.

Um dos aplicativos mais simples e mais úteis de referências anteriores fornece a capacidade de localizar a ocorrência de duas palavras idênticas e adjacentes em texto.Execute a seguinte frase:

Is is the cost of of gasoline going up up?

A frase acima claramente tem várias palavras duplicadas.Seria bom planejar uma forma de corrigir essa frase sem em busca de duplicatas de cada palavra única.A seguinte expressão regular usa uma subexpressão única para fazer isso:

/\b([a-z]+) \1\b/gi

A expressão capturada, sistema autônomo especificada pelo [a-z] +, inclui um ou mais caracteres alfabéticos.A segunda parte da expressão regular é a referência para o submatch capturado anteriormente, ou seja, a segunda ocorrência da palavra apenas correspondida pela expressão entre parênteses.\1 Especifica submatch primeiro.Os metacaracteres de limite de palavra Certifique-se de que apenas palavras inteiras são detectadas.Caso contrário, uma frase sistema autônomo "é emitida" ou "é" seria identificada incorretamente por essa expressão.

O sinalizar global (g), a expressão regular a seguir indica que a expressão é aplicada a correspondências tantos que ele possa encontrar na seqüência de caracteres de entrada.O sinalizar de não diferenciação de maiúsculas e minúsculas (i) no participante da expressão Especifica distinção entre maiúsculas e minúsculas.O sinalizar de várias linhas Especifica que as correspondências possíveis podem ocorrer em um dos lados de um caractere de nova linha.

Usando a expressão regular acima, o código a seguir pode usar as informações de submatch para substituir uma ocorrência de duas palavras idênticas consecutivas em uma seqüência de caracteres de texto com uma única ocorrência da mesma palavra:

var ss = "Is is the cost of of gasoline going up up?.\n";
var re = /\b([a-z]+) \1\b/gim;       //Create regular expression pattern.
var rv = ss.replace(re,"$1");   //Replace two occurrences with one.

O uso do $ 1 dentro de Substituir método refere-se a primeira submatch salvo.Se você tivesse submatch mais de um, você pode se referir a eles consecutivamente usando $ 2, US$ 3 e assim por diante.

Referências anteriores também podem quebrar para baixo um Universal recurso indicador (URI) em suas partes do componente.Suponha que você deseja dividir o seguinte URI para o protocolo (ftp, http e assim por diante), o endereço de domínio e o caminho (página:

https://msdn.microsoft.com:80/scripting/default.htm

As expressões regulares a seguir fornecem essa funcionalidade:

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

A primeira subexpressão entre parênteses captura a parte de protocolo do endereço web.A subexpressão corresponde a qualquer palavra que precede um dois-pontos e duas barras.A subexpressão entre parênteses segunda captura a parte de endereço domínio do endereço.A subexpressão corresponde a um ou mais caracteres Outros que / ou:.A terceira subexpressão entre parênteses captura um número da porta se alguma for especificada.A subexpressão corresponde a zero ou mais dígitos após dois-pontos.Você pode repetir essa subexpressão não mais de uma vez.Finalmente, a quarta subexpressão entre parênteses captura as informações de caminho e/ou de página especificadas pelo endereço web.A subexpressão corresponde a qualquer sequência de caracteres que não inclua # ou os caracteres de espaço.

Aplicar a expressão regular para o URI acima, os subcorrespondentes contém o seguinte:

  • RegExp. $ 1 contém "http"

  • RegExp. $ 2 contém "msdn.microsoft.com"

  • RegExp. $ 3 contém ": 80"

  • RegExp. $ 4 contém "/ scripting/padrão.htm"

Consulte também

Outros recursos

Introdução a expressões regulares