<Anterior | Conteúdo | Próxima>
{} - Corresponde a um elemento um número específico de vezes
O { e } metacaracteres são usados para expressar os números mínimo e máximo de correspondências necessárias. Eles podem ser especificados de quatro maneiras possíveis:
Tabela 19-3: Especificando o número de correspondências
Significado do especificador
Significado do especificador
{n} Corresponde ao elemento anterior se ocorrer exatamente n vezes.
{n,m} Corresponde ao elemento anterior se ocorrer pelo menos n vezes, mas não mais que m vezes.
{n,} Corresponde ao elemento anterior, se ocorrer n ou mais vezes.
{,m} Corresponde ao elemento anterior se ocorrer não mais do que m vezes.
Voltando ao nosso exemplo anterior com os números de telefone, podemos usar este método de especificação de repetições para simplificar nossa expressão regular original de:
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
para:
^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$
Vamos tentar:
[me @ linuxbox ~] $ echo "(555) 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0- 9] {3} - [0-9] {4} $ '
(555) 123-4567
[me @ linuxbox ~] $ echo "555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9]
{3} - [0-9] {4} $ '
+555 123 4567-XNUMX
[me @ linuxbox ~] $ echo "5555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9
] {3} - [0-9] {4} $ '
[me @ linuxbox ~] $
[me @ linuxbox ~] $ echo "(555) 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0- 9] {3} - [0-9] {4} $ '
(555) 123-4567
[me @ linuxbox ~] $ echo "555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9]
{3} - [0-9] {4} $ '
+555 123 4567-XNUMX
[me @ linuxbox ~] $ echo "5555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9
] {3} - [0-9] {4} $ '
[me @ linuxbox ~] $
Como podemos ver, nossa expressão revisada pode validar números com e sem os parênteses, rejeitando os números que não estão formatados corretamente.