Aqui Chaves não é o au?tor mexicano preferido de 10 entre 10 brasileiros. As chaves são a solução para uma quantificação mais controlada, onde se pode especificar exatamente quantas repetições se quer da entidade anterior.
Basicamente, {n,m}
significa de n até m vezes, assim algo como 6{1,4}
casa 6, 66, 666 e 6666. Só, nada mais que isso.
Temos também a sintaxe relaxada das chaves, em que podemos omitir a quantidade final, ou ainda, especificar exatamente um número:
{1,3} de 1 a 3 {3,} pelo menos 3 (3 ou mais) {0,3} até 3 {3} exatamente 3 {1} exatamente 1 {0,1} zero ou 1 (igual ao opcional) {0,} zero ou mais (igual ao asterisco) {1,} um ou mais (igual ao mais)
Note que o {1}
tem efeito nulo, pois 6{1}
é igual a 6
. Pode ser útil caso você queira impressionar alguém com sua ER, pode encher de {1}
que não mudará sua lógica. Mas observe os três últimos exemplos.
Com as chaves, conseguimos simular o funcionamento de outros três metacaracteres, o opcional, o asterisco e o mais.
Se temos as chaves que já fazem o serviço, então pra quê ter ou outros três? Você pode escolher a resposta que achar melhor. Eu tenho algumas:
*
é menor e mais fácil que {0,}
*
, +
e ?
são links para as chavesComo você pode perceber não há uma resposta certa. Então todas as especulações acima podem ser corretas. Invente uma e me mande, vamos fazer uma coleção!
Ah, e sendo {0,}
algo mais feio que um simples *
, isso também pode ser usado para tornar sua ER grande e intimidadora. Só cuidado para não atirar no próprio pé e depois não conseguir entender sua própria criação...
Resumão
*
, o +
e a ?
.