Partilhar via


Referências anteriores em JScript

Referências anteriores são usados para localizar grupos de caracteres de repetição. Eles também são usados para reformatar uma seqüência de caracteres de entrada, reorganizando a ordem e o posicionamento dos elementos na seqüência de entrada.

Você pode consultar uma subexpressão de dentro de uma expressão regular e a partir uma seqüência de caracteres de substituição. Cada subexpressão é identificado pelo número e é conhecido como referência anterior.

Uma expressão regular dos parênteses são usados para criar uma subexpressão. A submatch resultante pode ser recuperada pelo programa. Para obter mais informações, consulte Alternação e subexpressões.

Utilizando referências anteriores

Você pode consultar uma subexpressão a partir de uma expressão regular.

Uma expressão regular, cada submatch salva é armazenada como ele é encontrado da esquerda para a direita. Os números de buffer no qual os subcorrespondentes são armazenados começam com 1 e continuam até um máximo de 99 subexpressões. Dentro da expressão regular, você pode acessar cada buffer usando \n, onde n é um ou dois dígitos decimais, identificando um buffer específico.

Um aplicativo de referências anteriores fornece a capacidade de localizar a ocorrência de duas palavras idênticas juntos no texto. Execute a seguinte frase: Is is the cost of of gasoline going up up?

Esta sentença contém várias palavras duplicadas. Seria útil imaginar uma maneira para corrigir a sentença sem ter de procurar por duplicatas de cada palavra. A seguinte expressão regular de JScript usa uma subexpressão única para fazer isso.

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

Nesse caso, a subexpressão é tudo entre parênteses. Esse subexpressão inclui um ou mais caracteres alfabéticos, conforme especificado pelo [a-z]+. A segunda parte da expressão regular é a referência para o submatch salvo anteriormente, ou seja, a segunda ocorrência da palavra apenas correspondida pela expressão entre parênteses. \1é usado para especificar o primeiro submatch.

O \b metacaracteres de limite de palavra certificar-se de que as palavras separadas somente são detectadas. Caso contrário, uma frase como "é emitida" ou "this is" seria incorretamente identificado por essa expressão.

O exemplo a seguir lista as palavras duplicadas. Ele mostra como correspondências e subcorrespondentes podem ser recuperadas no código.

var result;

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"

// Get the first match.
result = re.exec(src);

while (result != null)
{
    // Show the entire match.
    print();
    print(result[0]);

    // Show the submatches.
    for (var index = 1; index < result.length; index++)
    {
        print("submatch " + index + ": " + result[index]);
    }

    // Get the next match.
    result = re.exec(src);
}

// Output:
//  Is is
//  submatch 1: Is

//  of of
//  submatch 1: of

//  up up
//  submatch 1: up

Você também pode consultar uma subexpressão a partir de uma seqüência de caracteres de substituição.

Usando a expressão regular, mostrada acima, o exemplo a seguir substitui uma ocorrência de duas palavras de idênticas consecutivas com uma única ocorrência da mesma palavra. No Substituir método, $1 se refere à primeira salvo submatch. Se houver mais de um submatch, você consultá-las consecutivamente como $2, $3e assim por diante.

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"
var result = src.replace(re, "$1");
print(result);
// Output:
//  Is the cost of gasoline going up?

O exemplo a seguir troca cada par de palavras na seqüência de caracteres.

var re = /(\S+)(\s+)(\S+)/gi
var src = "The quick brown fox jumps over the lazy dog."
var result = src.replace(re, "$3$2$1");
print(result);
// Output:
//  quick The fox brown over jumps lazy the dog.

Consulte também

Referência

o método replace

Conceitos

Alternação e subexpressões

Outros recursos

Introdução a expressões regulares