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':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Como resultado, será armazenado na variável o seguinte:
'xx ! ! ! xbx'
Exemplo
Vamos encontrar todas as substrings pelo padrão letra
'x', letra 'a' zero ou mais
vezes, letra 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Como resultado, será armazenado na variável o seguinte:
'! ! ! ! xbx'
Exemplo
Vamos encontrar todas as substrings pelo padrão letra
'x', letra 'a' zero ou uma
vez, letra 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Como resultado, será armazenado na variável o seguinte:
'! ! xaax xbx'
Problemas práticos
Dada a string:
let 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'.
Dada a string:
let 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'.
Dada a string:
let 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'.
Dada a string:
let 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'.