Chaves em expressões regulares PHP
Os operadores +, *, ? são úteis,
no entanto, com eles não é possível especificar um
número exato de repetições. Neste caso, o operador
{} virá em seu auxílio.
Ele funciona da seguinte forma: {5}
- cinco repetições, {2,5} - repete
de duas a cinco vezes (ambos inclusivos), {2,}
- repete duas vezes ou mais.
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' uma
ou duas vezes, letra 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'xx ! ! xaaax'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' duas
vezes ou mais, letra 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'xx xax ! !'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' três
vezes, letra 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'xx xax xaax !'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'a' dez vezes:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'aaa ! aaa'
Exemplo
Neste exemplo, o autor do código queria o seguinte padrão:
letra 'x', letra 'a' três
vezes ou menos, letra 'x',
mas, infelizmente, isso - {,3} - não
funciona. É necessário especificar explicitamente:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'xx ! ! !'
Exemplo
Zero também é permitido:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Como resultado, será armazenado na variável o seguinte:
'! ! ! !'
Problemas práticos
Dada a string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Escreva uma expressão regular que encontre as strings
'abba', 'abbba', 'abbbba'
e apenas elas.
Dada a string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Escreva uma expressão regular que encontre strings
do tipo 'aba', nas quais 'b' aparece
menos de três vezes (inclusive).
Dada a string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Escreva uma expressão regular que encontre strings
do tipo 'aba', nas quais 'b' aparece
mais de quatro vezes (inclusive).