Metacaracter Quantificador
Metacaracteres quantificadores servem para numerar quantas repetições
são permitidas para a entidade anterior. Agora não esqueça disso,
um quantificador não pode ser quantificado, ou seja, utilizar dois
quantificadores seguidos é um erro.
? = O que vem antes dele é opcional
Exemplo:
ER: calar?
Casa: calar cala (única e exclusivamente)
ER: tenta[r,]?
Casa: tenta tentar tenta,
Caiu a ficha?
* = Tanto faz, esse é largadão não interessa quantas vezes
vier ele está em todas.
ER: cas*aco
Casa: casssssaco casaco cassaco caaco ....
Interrompendo a nossa programação momentaneamente, vamos mudar um
pouco de assunto:
Vamos apresentar a maior descoberta da sua vida depois de aprender
a ligar o computador:
.*
Mas que diabos é isso? Isso significa TUDO! quantas vezes for e o
que for!
Exemplo: asdfghjlkçlçhlkfksjsplrep w ap 0p spo dofg slsd çslkd slkdçfn slkdjf sdlkjf.
Tudo isso acima representamos por
.*.
Se quisermos copiar todo o código fonte de uma página? A expressão
seria
.*.
Viu, só isso representa TUDO!
Mais uma coisa: Como ler uma expressão regular?
fal[ao]
ficaria:
- um f, seguido de a, seguido de l, seguido de a ou o
e por aí vai...
E por último, vamos aprender o que é gulodice:
Um ótimo exemplo para apresentar a gulodice é o
*, pois ele
é guloso como qualquer metacaracter quantificador existente. O *
tentará casar o MÁXIMO de vezes possíveis.
Exemplo:
ER:[cs]*a
Casa: ca,a,sa,a
Viu só que loucura? Mas é isso mesmo que você está pensando!
+ = quando tem que ter o antecessor dela para casar. A
única diferença para o * é que o caracter OBRIGATORIAMENTE deve
aparecer pelo menos uma vez.
Exemplo:
ER: a+b
Casa: ab aaaaaaaaaab aaaaaaaaaaaaaaaaaaaab aab
{n,m} = controla quantas vezes se deve repetir sendo "n"
igual ao início e m igual ao fim.
Exemplo:
ER: fácil{3,6}
Casa: fácilll fácillll fácilllll fácillllll (somente isso)
Exemplo: achar a tag HTML </ h1>, sendo que ela pode ter
até 3 espaços:
ER:</ {0,3}h1>
Casa: </h1> </ h1> </ h1> </ h1>
Mais alguns exemplos de lista:
- {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)
Existe mais um grupo de metacaracteres, os do tipo âncora, mas esses
grupos são bem específicos e por enquanto não são de extrema
necessidade. Caso você precise deles me mande um e-mail que lhe passo
todos.
Tá e ai? O que é um metacaracter do tipo âncora?
São metacaracteres que marcam o início e o fim de uma linha por
exemplo.