Capture-Gruppen in der regulären Ausdruck selbst in JavaScript
Der Inhalt der Capture-Gruppen ist nicht nur im Ersetzungsstring verfügbar, sondern auch im regulären Ausdruck selbst: wir können etwas in eine Capture-Gruppe aufnehmen und dann direkt im regulären Ausdruck angeben, dass hier der Inhalt dieser Capture-Gruppe stehen muss.
Der Inhalt der Capture-Gruppen ist über ihre Nummern verfügbar,
denen ein Backslash vorangestellt ist. Zum Beispiel
wird die erste Capture-Gruppe so angesprochen: \1,
die zweite Capture-Gruppe so - \2, die dritte
- \3 und so weiter.
Ich bin sicher, dass alles oben Geschriebene für Sie noch ziemlich unklar ist. Das ist nicht verwunderlich, da Capture-Gruppen der am wenigsten verständliche Teil der regulären Ausdrücke ist. Lassen Sie uns das an Beispielen erarbeiten.
Beispiel
Nehmen wir an, wir haben die folgende Zeichenkette:
let str = 'aa bb cd ef';
Lassen Sie uns alle Stellen darin finden, an denen zwei gleiche Buchstaben hintereinander stehen. Um die Aufgabe zu lösen, suchen wir nach einem beliebigen Buchstaben, nehmen ihn in eine Capture-Gruppe auf und prüfen dann, ob dem nächsten Zeichen der Inhalt dieser Capture-Gruppe folgt:
let res = str.replace(/([a-z])\1/g, '!');
In der Variable wird folgendes gespeichert:
'! ! cd ef'
Beispiel
Nehmen wir an, wir haben die folgende Zeichenkette:
let str = 'asxca buzxb csgd';
Lassen Sie uns alle Wörter darin finden, in denen der erste und der letzte Buchstabe gleich sind. Um die Aufgabe zu lösen, schreiben wir das folgende Muster: Buchstabe, dann ein oder mehrere weitere Buchstaben, und dann derselbe Buchstabe wie der erste:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
In der Variable wird folgendes gespeichert:
'! ! csgd'
Praktische Aufgaben
Gegeben sei die Zeichenkette:
let str = 'aaa bbb ccc xyz';
Finden Sie alle Teilzeichenketten, in denen drei gleiche Buchstaben hintereinander vorkommen.
Gegeben sei die Zeichenkette:
let str = 'a aa aaa aaaa aaaaa';
Finden Sie alle Teilzeichenketten, in denen zwei oder mehr gleiche Buchstaben hintereinander vorkommen.
Gegeben sei die Zeichenkette:
let str = 'aaa aaa bbb bbb ccc ddd';
Finden Sie alle Teilzeichenketten, in denen zwei gleiche Wörter hintereinander vorkommen.