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 o seguinte: repetir uma ou mais vezes?

Para isso, existem os 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). Esses 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':

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa+x#', '!', $str);
?>

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

php'xx ! ! ! xbx'

Exemplo

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

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa*x#', '!', $str);
?>

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

php'! ! ! ! xbx'

Exemplo

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

php<?php
  $str = 'xx xax xaax xbx';
  $res = preg_replace('#xa?x#', '!', $str);
?>

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

php'! ! xaax xbx'

Problemas práticos

Задание 1

Dada a string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Escreva uma expressão regular que encontre as strings segundo o padrão: letra 'a', letra 'b' uma ou mais vezes, letra 'a'.

Задание 2

Dada a string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Escreva uma expressão regular que encontre as strings segundo o padrão: letra 'a', letra 'b' zero ou mais vezes, letra 'a'.

Задание 3

Dada a string:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

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

Задание 4

Dada a string:

php<?php
  $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'.