Heim > Web-Frontend > js-Tutorial > Wie kann ich mit Regex überlappende Übereinstimmungen in einer Zeichenfolge finden?

Wie kann ich mit Regex überlappende Übereinstimmungen in einer Zeichenfolge finden?

Patricia Arquette
Freigeben: 2024-12-06 05:19:10
Original
950 Leute haben es durchsucht

How Can I Use Regex to Find Overlapping Matches in a String?

Überlappender String-Abgleich mit Regex

In der Zeichenfolge „12345“ wird „.match(/d{3}/g)“ angewendet. sollte im Idealfall drei Übereinstimmungen zurückgeben: „123“, „234“ und „345“. Es wird jedoch nur eine Übereinstimmung („123“) erhalten.

Grund:

Das globale Flag „g“ im regulären Ausdruck verbraucht drei Ziffern und erhöht den Index auf die Position nach dem ersten Spiel. Dies bedeutet, dass sich der Index bereits an Position 3 befindet, wenn die Regex versucht, mit der nächsten Teilzeichenfolge übereinzustimmen, sodass die verbleibenden überlappenden Übereinstimmungen effektiv übersprungen werden.

Lösung: Nullbreiten-Behauptung

Eine Behauptung mit einer Breite von Null, insbesondere ein positiver Lookahead mit einer einfangenden Gruppe, kann verwendet werden, um alle Positionen innerhalb der Eingabezeichenfolge abzugleichen. Diese Technik umfasst:

  • Testen jeder Position mithilfe der Lookahead-Assertion.
  • Manuelles Vorrücken der RegExp.lastIndex-Eigenschaft, um eine Endlosschleife zu vermeiden.

Beispiel in JavaScript:

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

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage