JavaScript-dä regular ifadäniň içindäki kartlar

Kartlaryň mazmuny diňe çalşyrylan setirde däl, eýsem regular ifadäniň özünde hem elýeterlidir: biz bir zat bir karta goýup bilýäris, soňra bolsa derrew regular ifadäde bu ýerde şol kartdaky mazmunyň durmalydygyny aýdyp bileris.

Kartlaryň mazmuny olaryň ters sles bilen ýazylyp duran belgileri boýunça elýeterlidir. Mysal üçin, biriniň karta şeýle elýeter bolary: \1, ikkinji karta şeýle - \2, üçünji - \3 we ş.m.

Ýokarda ýazylanlaryň ählisi size heniz gaty düşnüksiz bolup görünýändigine ynanýaryn. Bu bolsa tüýs, sebäbi kartlar - regular ifadeleriň iň düşnüksiz ýeridir. Geliň mysallar bilen düşünýäli.

Mysal

Bizde şeýle bir setir bardyr diýeliň:

javascriptlet str = 'aa bb cd ef';

Onda ähli şol ýerleri, ýagny bir hataryň yzygider iki gezek gaýtalanylan ýerlerini tapalyň. Mesele çözmek üçin islendik haraplary gözläp, ony bir karta goýup, soňra bolsa şol kartdaky mazmunyň indiki nyşanyň peýdasyna gelýändigini barlarys:

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

Netijede üýtgeýjide aşakdaky ýazylar:

javascript'! ! cd ef'

Mysal

Bizde şeýle bir setir bardyr diýeliň:

javascriptlet str = 'asxca buzxb csgd';

Onda ähli şol sözleri, ýagny birinji we soňky harplaryň deň bolan sözlerini tapalyň. Mesele çözmek üçin şeýle bir şablon ýazarys: harpy, soň ýene bir ýa-da köpräk harp, soňra bolsa birinji harp ýaly bir harp:

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

Netijede üýtgeýjide aşakdaky ýazylar:

javascript'! ! csgd'

Amaly meseläler

Задание 1

Setir berlen:

javascriptlet str = 'aaa bbb ccc xyz';

Üç sany deň harpyň yzygider gaýtalanylan ähli setir böleklerini tapyň.

Задание 2

Setir berlen:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Iki ýa-da köpräk deň harpyň yzygider gaýtalanylan ähli setir böleklerini tapyň.

Задание 3

Setir berlen:

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

Iki sany deň söziň yzygider gaýtalanylan ähli setir böleklerini tapyň.