Rakstzīmju atkārtošanās operatori

Ir situācijas, kad mēs vēlamies norādīt, ka rakstzīme atkārtojas noteiktu skaitu reizu. Ja mēs zinām precīzu atkārtojumu skaitu, tad varam vienkārši to uzrakstīt vairākas reizes - /aaaa/. Bet ko darīt, ja mēs vēlamies pateikt šādi: atkārtot vienu vai vairāk reizi?

Šim nolūkam pastāv atkārtošanās operatori (kvantifikatori): plus + (viens vai vairāk reizi), zvaigznīte * (nulle vai vairāk reizi) un jautājums ? (nulle vai viena reize). Šie operatori iedarbojas uz to rakstzīmi, kas atrodas tieši pirms tiem.

Apskatīsim šo operatoru darbību ar piemēriem.

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' viens vai vairāk reizi, burts 'x':

javascriptlet str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');

Rezultātā mainīgajā ierakstīsies sekojošais:

javascript'xx ! ! ! xbx'

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' nulle vai vairāk reizi, burts 'x':

javascriptlet str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');

Rezultātā mainīgajā ierakstīsies sekojošais:

javascript'! ! ! ! xbx'

Piemērs

Atradīsim visas apakšvirknes pēc šablona burts 'x', burts 'a' nulle vai viens reizi, burts 'x':

javascriptlet str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');

Rezultātā mainīgajā ierakstīsies sekojošais:

javascript'! ! xaax xbx'

Praktiskie uzdevumi

Задание 1

Dota virkne:

javascriptlet str = 'aa aba abba abbba abca abea';

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aba', 'abba', 'abbba' pēc šablona: burts 'a', burts 'b' jebkurš skaits reizi, burts 'a'.

Задание 2

Dota virkne:

javascriptlet str = 'aa aba abba abbba abca abea';

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba', 'abba', 'abbba' pēc šablona: burts 'a', burts 'b' jebkurš skaits reizi (ieskaitot nevienu reizi), burts 'a'.

Задание 3

Dota virkne:

javascriptlet str = 'aa aba abba abbba abca abea';

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba' pēc šablona: burts 'a', burts 'b' vienu reizi vai nevienu, burts 'a'.

Задание 4

Dota virkne:

javascriptlet str = 'aa aba abba abbba abca abea';

Uzrakstiet regulāro izteiksmi, kas atradīs virknes 'aa', 'aba', 'abba', 'abbba', neaptverot 'abca' un 'abea'.