Операторы повторения символов в регулярках

Бывают ситуации, когда мы хотим указать, что символ повторяется заданное количество раз. Если мы знаем точное число повторений, то можно просто написать его несколько раз - /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'.