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:
let 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ă:
let res = str.replace(/([a-z])\1/g, '!');
Ca rezultat, în variabilă se va scrie următorul:
'! ! cd ef'
Exemplu
Să presupunem că avem următorul sir:
let 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:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Ca rezultat, în variabilă se va scrie următorul:
'! ! csgd'
Probleme practice
Este dat sirul:
let str = 'aaa bbb ccc xyz';
Găsiți toate subșirurile în care există trei litere identice consecutive.
Este dat sirul:
let str = 'a aa aaa aaaa aaaaa';
Găsiți toate subșirurile în care există două sau mai multe litere identice consecutive.
Este dat sirul:
let str = 'aaa aaa bbb bbb ccc ddd';
Găsiți toate subșirurile în care există două cuvinte identice consecutive.