Operátory opakovania znakov v regulárnych výrazoch

Vyskytujú sa situácie, keď chceme určiť, že znak sa opakuje daný počet krát. Ak poznáme presný počet opakovaní, môžeme ho jednoducho napísať viackrát - /aaaa/. Ale čo robiť, ak chceme povedať toto: opakovať jeden alebo viac krát?

Na to existujú operátory (kvantifikátory) opakovania: plus + (jeden alebo viac krát), hviezdička * (nula alebo viac krát) a otáznik ? (nula alebo jeden krát). Tieto operátory pôsobia na znak, ktorý stojí pred nimi.

Pozrime sa na prácu týchto operátorov na príkladoch.

Príklad

Nájdeme všetky podreťazce podľa vzoru písmeno 'x', písmeno 'a' jeden alebo viac krát, písmeno 'x':

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

Výsledkom do premennej sa zapíše nasledovné:

javascript'xx ! ! ! xbx'

Príklad

Nájdeme všetky podreťazce podľa vzoru písmeno 'x', písmeno 'a' nula alebo viac krát, písmeno 'x':

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

Výsledkom do premennej sa zapíše nasledovné:

javascript'! ! ! ! xbx'

Príklad

Nájdeme všetky podreťazce podľa vzoru písmeno 'x', písmeno 'a' nula alebo jeden krát, písmeno 'x':

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

Výsledkom do premennej sa zapíše nasledovné:

javascript'! ! xaax xbx'

Praktické úlohy

Задание 1

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce 'aba', 'abba', 'abbba' podľa vzoru: písmeno 'a', písmeno 'b' ľubovoľný počet krát, písmeno 'a'.

Задание 2

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce 'aa', 'aba', 'abba', 'abbba' podľa vzoru: písmeno 'a', písmeno 'b' ľubovoľný počet krát (vrátane žiadneho krát), písmeno 'a'.

Задание 3

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce 'aa', 'aba' podľa vzoru: písmeno 'a', písmeno 'b' jeden krát alebo žiadny, písmeno 'a'.

Задание 4

Daný reťazec:

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

Napíšte regulárny výraz, ktorý nájde reťazce 'aa', 'aba', 'abba', 'abbba', bez zachytenia 'abca' a 'abea'.