Operatori de repetare a caracterelor în regex

Există situații când dorim să indicăm, că un caracter se repetă de un anumit număr de ori. Dacă știm numărul exact de repetări, putem pur și simplu să-l scriem de mai multe ori - /aaaa/. Dar ce facem dacă vrem să spunem așa: repetă unu sau mai multe ori?

Pentru asta există operatori (cuantificatori) de repetare: plus + (unu sau mai multe ori), stea * (zero sau mai multe ori) și întrebare ? (zero sau o dată). Acești operatori acționează asupra caracterului care stă înaintea lor.

Să vedem funcționarea acestor operatori cu exemple.

Exemplu

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' unu sau mai multe ori, litera 'x':

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

În rezultat, în variabilă se va scrie următorul:

javascript'xx ! ! ! xbx'

Exemplu

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' zero sau mai multe ori, litera 'x':

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

În rezultat, în variabilă se va scrie următorul:

javascript'! ! ! ! xbx'

Exemplu

Să găsim toate subșirurile după șablonul litera 'x', litera 'a' zero sau o dată, litera 'x':

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

În rezultat, în variabilă se va scrie următorul:

javascript'! ! xaax xbx'

Probleme practice

Задание 1

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile 'aba', 'abba', 'abbba' după șablonul: litera 'a', litera 'b' orice număr de ori, litera 'a'.

Задание 2

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba', 'abba', 'abbba' după șablonul: litera 'a', litera 'b' orice număr de ori (inclusiv de zero ori), litera 'a'.

Задание 3

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba' după șablonul: litera 'a', litera 'b' o dată sau de zero ori, litera 'a'.

Задание 4

Este dat șirul:

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

Scrieți o expresie regulată care va găsi șirurile 'aa', 'aba', 'abba', 'abbba', fără a captura 'abca' și 'abea'.