Grupe u samoj regularnoj ekspresiji u JavaScript-u
Sadržaj grupa je dostupan ne samo u niski zamene, već i u samoj regularnoj ekspresiji: mi možemo da stavimo nešto u grupu, a zatim direktno u regularnoj ekspresiji da kažemo da ovde mora da stoji sadržaj te grupe.
Sadržaj grupa je dostupan po njihovim brojevima,
ispred kojih stoji obrnuta kosa crta. Na primer,
prva grupa će biti dostupna ovako: \1,
druga grupa ovako - \2, treća
- \3 i tako dalje.
Uveren sam da je sve napisano iznad za sada prilično nejasno za vas. To nije iznenađujuće, pošto su grupe - najmanje razumljivo mesto regularnih izraza. Hajde da razumemo na primerima.
Primer
Neka imamo ovakvu nisku:
let str = 'aa bb cd ef';
Hajde da nađemo u njoj sva mesta, u kojima stoje dve iste slova jedan za drugim. Za rešenje zadatka ćemo tražiti bilo koje slovo, stavljati ga u grupu, a zatim proveravati, da li sledeći simbol sadržaj te grupe:
let res = str.replace(/([a-z])\1/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! cd ef'
Primer
Neka imamo ovakvu nisku:
let str = 'asxca buzxb csgd';
Hajde da nađemo u njoj sve reči, u kojima su ista prvo i poslednje slovo. Za rešenje zadatka napisaćemo sledeći šablon: slovo, zatim još jedno ili više slova, a zatim takvo isto slovo kao prvo:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! csgd'
Praktični zadaci
Data je niska:
let str = 'aaa bbb ccc xyz';
Pronađite sve podniske, u kojima ima tri ista slova jedan za drugim.
Data je niska:
let str = 'a aa aaa aaaa aaaaa';
Pronađite sve podniske, u kojima ima dve i više istih slova jedan za drugim.
Data je niska:
let str = 'aaa aaa bbb bbb ccc ddd';
Pronađite sve podniske, u kojima ima dva iste reči jedan za drugim.