Оператори за повторение на символи

Има ситуации, в които искаме да укажем, че символ се повтаря зададен брой пъти. Ако знаем точния брой повторения, можем просто да го напишем няколко пъти - /aaaa/. Но какво да правим, ако искаме да кажем това: повтори един или повече пъти?

За това съществуват оператори (квантификатори) за повторение: плюс + (един или повече пъти), звездичка * (нула или повече пъти) и въпрос ? (нула или един път). Тези оператори действат на символа, който стои пред тях.

Нека разгледаме работата на тези оператори с примери.

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' един или повече пъти, буква 'x':

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

В резултат в променливата ще се запише следното:

javascript'xx ! ! ! xbx'

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' нула или повече пъти, буква 'x':

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

В резултат в променливата ще се запише следното:

javascript'! ! ! ! xbx'

Пример

Нека намерим всички поднизове по шаблон буква 'x', буква 'a' нула или един път, буква 'x':

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

В резултат в променливата ще се запише следното:

javascript'! ! xaax xbx'

Практически задачи

Задание 1

Даден е низ:

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

Напишете регулярен израз, който намира низовете 'aba', 'abba', 'abbba' по шаблон: буква 'a', буква 'b' произволен брой пъти, буква 'a'.

Задание 2

Даден е низ:

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

Напишете регулярен израз, който намира низовете 'aa', 'aba', 'abba', 'abbba' по шаблон: буква 'a', буква 'b' произволен брой пъти (включително нула пъти), буква 'a'.

Задание 3

Даден е низ:

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

Напишете регулярен израз, който намира низовете 'aa', 'aba' по шаблон: буква 'a', буква 'b' един път или нула пъти, буква 'a'.

Задание 4

Даден е низ:

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

Напишете регулярен израз, който намира низовете 'aa', 'aba', 'abba', 'abbba', без да улавя 'abca' и 'abea'.