Parênteses de agrupamento em expressões regulares JavaScript

Nos exemplos anteriores, os operadores de repetição atuavam apenas em um único caractere que estava antes deles. O que fazer se quisermos aplicá-los a vários caracteres?

Para isso, existem os parênteses de agrupamento '(' e ')'. Eles funcionam da seguinte forma: se algo estiver entre parênteses de agrupamento e houver um operador de repetição logo após ')' - ele atuará sobre tudo o que estiver dentro dos parênteses.

Vamos ver alguns exemplos.

Exemplo

No exemplo a seguir, o padrão de busca é o seguinte: a letra 'x', seguida pela string 'ab' uma ou mais vezes, depois a letra 'x':

javascriptlet str = 'xabx xababx xaabbx'
let res = str.replace(/x(ab)+x/g, '!');

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

javascript'! ! xaabbx'

Problemas práticos

Задание 1

Dada a string:

javascriptlet str = 'ab abab abab abababab abea';

Escreva uma expressão regular que encontre as strings segundo o padrão: a string 'ab' repetida 1 ou mais vezes.