Rückverweise in JScript

Rückverweise werden verwendet, um wiederholte Gruppen von Zeichen zu suchen. Sie werden auch verwendet, um durch das Neuanordnen der Reihenfolge und der Platzierung der Elemente in der Eingabezeichenfolge eine Eingabezeichenfolge umzuformatieren.

Sie können innerhalb eines regulären Ausdrucks und innerhalb einer Ersetzungszeichenfolge auf einen Teilausdruck verweisen. Jeder Teilausdruck wird durch eine Nummer identifiziert und wird als Rückverweis bezeichnet.

Klammern werden in einem regulären Ausdruck verwendet, um einen Teilausdruck zu erstellen. Die resultierende Teilübereinstimmung kann vom Programm abgerufen werden. Weitere Informationen finden Sie unter Alternierung und Teilausdrücke.

Verwenden von Rückverweisen

Sie können innerhalb eines regulären Ausdrucks auf einen Teilausdruck verweisen.

In einem regulären Ausdruck wird jede enthaltene Teilentsprechung in der Reihenfolge des Auftretens von links nach rechts gespeichert. Die Puffernummern, mit denen die Teilentsprechungen gespeichert werden, beginnen mit 1 und enden mit maximal 99 erfassten Teilausdrücken. Innerhalb des regulären Ausdrucks können Sie mit \n auf jeden Puffer zugreifen, wobei n eine oder zwei Dezimalstellen darstellt und den Puffer angibt.

Ein Verwendungszweck für Rückverweise ist die Möglichkeit, zwei identische, nebeneinander stehende Wörter im Text zu finden. Betrachten Sie den folgenden Satz: Is is the cost of of gasoline going up up?

Dieser Satz enthält mehrmals dieselben Wörter. Nun wäre es praktisch, eine Möglichkeit zur Korrektur des Satzes zu haben, ohne dass jedes Duplikat einzeln gesucht werden muss. Im folgenden regulären JScript-Ausdruck erledigt dies ein einziger Teilausdruck.

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

Der Teilausdruck ist in diesem Fall der gesamte in Klammern eingeschlossene Ausdruck. Dieser Teilausdruck enthält einen oder mehrere Buchstaben, angegeben durch [a-z]+. Der zweite Teil des regulären Ausdrucks ist der Verweis auf die zuvor gespeicherte Teilentsprechung, d. h. das zweite Vorkommen des Worts, das gerade durch den Klammerausdruck gefunden wurde. \1 wird zur Angabe der ersten Teilentsprechung verwendet.

Die Metazeichen für Wortgrenzen (\b) stellen sicher, dass nur ganze Wörter gefunden werden. Andernfalls würde dieser Ausdruck fälschlicherweise auch "is issued" oder "this is" finden.

Im folgenden Beispiel werden die doppelten Wörter aufgeführt. Es zeigt an, wie Übereinstimmungen und Teilentsprechungen im Code abgerufen werden können.

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

Sie können auch innerhalb einer Ersetzungszeichenfolge auf einen Teilausdruck verweisen.

Im folgenden Beispiel wird mit dem obigen regulären Ausdruck ein Vorkommen von zwei aufeinander folgenden identischen Wörtern durch ein einzelnes Vorkommen des gleichen Worts ersetzt. In der replace-Methode verweist $1 auf die zuvor gespeicherte Teilentsprechung. Wenn es mehr als eine Teilentsprechung gibt, können Sie nacheinander mit $2, $3 usw. auf die Teilentsprechungen verweisen.

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?

Im folgenden Beispiel wird jedes Paar von Wörtern in der Zeichenfolge ausgetauscht.

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.

Siehe auch

Referenz

Replace-Methode

Konzepte

Alternierung und Teilausdrücke

Weitere Ressourcen

Einführung in reguläre Ausdrücke