Nawiasy przechwytujące w samym wyrażeniu regularnym w JavaScript

Zawartość nawiasów przechwytujących jest dostępna nie tylko w łańcuchu zastępowania, ale także w samym wyrażeniu regularnym: możemy umieścić coś w nawiasie przechwytującym, a następnie bezpośrednio w wyrażeniu regularnym powiedzieć, że tutaj musi znajdować się zawartość tego nawiasu.

Zawartość nawiasów przechwytujących jest dostępna po ich numerach, przed którymi stoi odwrócony ukośnik. Na przykład, pierwszy nawias przechwytujący będzie dostępny w ten sposób: \1, drugi nawias w ten sposób - \2, trzeci - \3 i tak dalej.

Jestem pewien, że wszystko napisane powyżej jest dla was na razie dość niejasne. To nie zaskakujące, ponieważ nawiasy przechwytujące to najbardziej niezrozumiałe miejsce w wyrażeniach regularnych. Rozpracujmy to na przykładach.

Przykład

Załóżmy, że mamy taki łańcuch:

javascriptlet str = 'aa bb cd ef';

Znajdźmy w nim wszystkie miejsca, w których stoją dwie dowolne identyczne litery pod rząd. Aby rozwiązać zadanie, będziemy szukać dowolnej litery, umieszczać ją w nawiasie przechwytującym, a następnie sprawdzać, czy następnym symbolem jest zawartość tego nawiasu:

javascriptlet res = str.replace(/([a-z])\1/g, '!');

W rezultacie do zmiennej zostanie zapisane następujące:

javascript'! ! cd ef'

Przykład

Załóżmy, że mamy taki łańcuch:

javascriptlet str = 'asxca buzxb csgd';

Znajdźmy w nim wszystkie słowa, w których pierwsza i ostatnia litera są identyczne. Aby rozwiązać zadanie, napiszemy następujący wzorzec: litera, następnie jeszcze jedna lub więcej liter, a następnie taka sama litera jak pierwsza:

javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');

W rezultacie do zmiennej zostanie zapisane następujące:

javascript'! ! csgd'

Zadania praktyczne

Задание 1

Dany jest łańcuch:

javascriptlet str = 'aaa bbb ccc xyz';

Znajdź wszystkie podłańcuchy, w których występują trzy identyczne litery pod rząd.

Задание 2

Dany jest łańcuch:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Znajdź wszystkie podłańcuchy, w których występują dwie lub więcej identycznych liter pod rząd.

Задание 3

Dany jest łańcuch:

javascriptlet str = 'aaa aaa bbb bbb ccc ddd';

Znajdź wszystkie podłańcuchy, w których występują dwa identyczne słowa pod rząd.