Heim >Web-Frontend >js-Tutorial >Wie kann ich mithilfe regulärer Ausdrücke überlappende Übereinstimmungen in einer Zeichenfolge finden?

Wie kann ich mithilfe regulärer Ausdrücke überlappende Übereinstimmungen in einer Zeichenfolge finden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 08:21:11289Durchsuche

How Can I Find Overlapping Matches in a String Using Regular Expressions?

Grundlegendes zum überlappenden String-Matching mit Regex

In bestimmten Szenarien stimmt die string#match-Methode mit dem globalen Flag möglicherweise nicht mit überlappenden Sequenzen in überein Eingabezeichenfolge. Betrachten Sie beispielsweise die Zeichenfolge „12345“. Mit dem regulären Ausdruck /d{3}/g erwarten wir drei Übereinstimmungen: ["123", "234", "345"]. Allerdings erhalten wir nur eine einzige Übereinstimmung, „123“.

Das liegt daran, dass die string#match-Methode die übereinstimmenden Zeichen verbraucht (d. h. ihren Index liest und über sie hinausgeht). Daher zeigt der aktuelle Index nach dem Abgleich mit „123“ auf „4“ und die Regex-Engine stoppt, sodass keine weiteren Übereinstimmungen gefunden werden können.

Überlappende Übereinstimmungen mit einer Null-Breite-Behauptung lösen

Um diese Einschränkung zu beseitigen, besteht eine beliebte Technik darin, eine positive Lookahead-Behauptung mit einer einfangenden Gruppe zu verwenden. Dieser Ansatz bestätigt das Vorhandensein eines Teilstrings, ohne ihn tatsächlich zu verbrauchen. Durch wiederholtes Testen aller Positionen in der Eingabezeichenfolge können wir die gewünschten überlappenden Übereinstimmungen erfassen.

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]);

In diesem Beispiel erstellen wir einen regulären Ausdruck mit einer positiven Lookahead-Behauptung, der drei aufeinanderfolgende Ziffern erfasst, ohne sie zu verbrauchen. Indem wir die Eingabezeichenfolge mit matchAll durchlaufen, erhalten wir die gewünschte Liste von Übereinstimmungen: ["123", "234", "345"].

Diese Technik wird in verschiedenen Programmiersprachen unterstützt und ermöglicht Entwicklern die Handhabung überlappende String-Matching-Szenarien mit Leichtigkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe regulärer Ausdrücke überlappende Übereinstimmungen in einer Zeichenfolge finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn