Operadores de repetição de caracteres em expressões regulares

Há situações em que queremos indicar que um caractere se repete um determinado número de vezes. Se sabemos o número exato de repetições, podemos simplesmente escrevê-lo várias vezes - /aaaa/. Mas o que fazer se quisermos dizer algo assim: repetir uma ou mais vezes?

Para isso, existem operadores (quantificadores) de repetição: o sinal de mais + (uma ou mais vezes), o asterisco * (zero ou mais vezes) e o ponto de interrogação ? (zero ou uma vez). Estes operadores atuam sobre o caractere que está antes deles.

Vamos ver o funcionamento desses operadores com exemplos.

Exemplo

Vamos encontrar todas as substrings pelo padrão letra 'x', letra 'a' uma ou mais vezes, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

javascript'xx ! ! ! xbx'

Exemplo

Vamos encontrar todas as substrings pelo padrão letra 'x', letra 'a' zero ou mais vezes, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

javascript'! ! ! ! xbx'

Exemplo

Vamos encontrar todas as substrings pelo padrão letra 'x', letra 'a' zero ou uma vez, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

javascript'! ! xaax xbx'

Problemas práticos

Задание 1

Dada a string:

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

Escreva uma expressão regular que encontre as strings 'aba', 'abba', 'abbba' seguindo o padrão: letra 'a', letra 'b' qualquer número de vezes, letra 'a'.

Задание 2

Dada a string:

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

Escreva uma expressão regular que encontre as strings 'aa', 'aba', 'abba', 'abbba' seguindo o padrão: letra 'a', letra 'b' qualquer número de vezes (inclusive nenhuma vez), letra 'a'.

Задание 3

Dada a string:

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

Escreva uma expressão regular que encontre as strings 'aa', 'aba' seguindo o padrão: letra 'a', letra 'b' uma vez ou nenhuma, letra 'a'.

Задание 4

Dada a string:

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

Escreva uma expressão regular que encontre as strings 'aa', 'aba', 'abba', 'abbba', sem capturar 'abca' e 'abea'.