⊗jsSpREEP 129 of 294 menu

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.

swtrdefruzl