Taskud regulaaravaldises ise JavaScriptis
Taskute sisu on kättesaadav mitte ainult asendusstringis, vaid ka regulaaravaldises ise: me võime panna midagi taskusse ja siis otse regulaaravaldises öelda, et siin peab olema selle tasku sisu.
Taskute sisu on kättesaadav nende numbrite järgi,
mille ees on kurakaldkriips. Näiteks
esimene task on kättesaadav niimoodi: \1,
teine task niimoodi - \2, kolmas
- \3 ja nii edasi.
Olen kindel, et kõik ülal kirjutatu on teile siiani üsna hägune. See pole üllatav, kuna taskud on regulaaravaldiste kõige vähemarusaamatum koht. Võtame näiteid lahti.
Näide
Oletame, et meil on selline string:
let str = 'aa bb cd ef';
Leiame sellest kõik kohad, kus on kaks ühesugust tähte järjest. Ülesande lahendamiseks otsime ükskõik millist tähte, paneme selle taskusse, ja siis kontrollime, kas järgmine sümbol on selle tasku sisu:
let res = str.replace(/([a-z])\1/g, '!');
Lõpuks kirjutatakse muutujasse järgmine:
'! ! cd ef'
Näide
Oletame, et meil on selline string:
let str = 'asxca buzxb csgd';
Leiame sellest kõik sõnad, mille esimene ja viimane täht on samad. Ülesande lahendamiseks kirjutame järgmise mustri: täht, siis veel üks või rohkem tähte, ja siis sama täht nagu esimene:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Lõpuks kirjutatakse muutujasse järgmine:
'! ! csgd'
Praktilised ülesanded
Antud string:
let str = 'aaa bbb ccc xyz';
Leia kõik alamstringid, kus on kolm sama tähte järjest.
Antud string:
let str = 'a aa aaa aaaa aaaaa';
Leia kõik alamstringid, kus on kaks või enam sama tähte järjest.
Antud string:
let str = 'aaa aaa bbb bbb ccc ddd';
Leia kõik alamstringid, kus on kaks sama sõna järjest.