Grupuri de captură în expresia regulată în JavaScript

Conținutul grupurilor de captură este accesibil nu doar în sirul de înlocuire, ci și în expresia regulată însăși: noi putem pune ceva într-un grup de captură, apoi direct în expresia regulată să spunem că aici trebuie să fie conținutul acelui grup de captură.

Conținutul grupurilor de captură este accesibil prin numerele lor, în fața cărora se pune backslash. De exemplu, primul grup de captură va fi accesibil așa: \1, al doilea grup de captură așa - \2, al treilea - \3 și așa mai departe.

Sunt sigur că tot ce este scris mai sus este încă destul de neclar pentru dumneavoastră. Nu este surprinzător, deoarece grupurile de captură sunt partea cea mai puțin înțeleasă a expresiilor regulate. Să înțelegem cu exemple.

Exemplu

Să presupunem că avem următorul sir:

javascriptlet str = 'aa bb cd ef';

Să găsim în el toate locurile în care sunt două litere identice consecutive. Pentru a rezolva problema, vom căuta orice literă, o vom pune într-un grup de captură, apoi vom verifica dacă următorul simbol este conținutul acelui grup de captură:

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

Ca rezultat, în variabilă se va scrie următorul:

javascript'! ! cd ef'

Exemplu

Să presupunem că avem următorul sir:

javascriptlet str = 'asxca buzxb csgd';

Să găsim în el toate cuvintele în care prima și ultima literă sunt identice. Pentru a rezolva problema, vom scrie următorul șablon: literă, apoi încă una sau mai multe litere, apoi aceeași literă ca prima:

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

Ca rezultat, în variabilă se va scrie următorul:

javascript'! ! csgd'

Probleme practice

Задание 1

Este dat sirul:

javascriptlet str = 'aaa bbb ccc xyz';

Găsiți toate subșirurile în care există trei litere identice consecutive.

Задание 2

Este dat sirul:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Găsiți toate subșirurile în care există două sau mai multe litere identice consecutive.

Задание 3

Este dat sirul:

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

Găsiți toate subșirurile în care există două cuvinte identice consecutive.