Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
Se o opcional já não esquenta a cabeça, podendo ter ou não a entidade anterior, o asterisco é mais tranqüilo ainda, pois para ele pode ter, não ter, ou ter vários, infinitos. Em outras palavras, a entidade anterior pode aparecer em qualquer quantidade.
6*0 0, 60, 660, 6660, ..., 666666666660, ... bi*p bp, bip, biip, biiip, biiiip... b[ip]* b, bi, bip, biipp, bpipipi, biiiiip, bppp, ...
Como HTML é sempre um ótimo exemplo, voltamos ao nosso exemplo das
marcações, que podem ter vários espaços em branco após o
identificador, então <b > e </b > são
válidos. Vamos colocar essa condição na ER:
</?[BIPbip] *> </B>, </B >, </B >, ..., <p >, ...
Note que agora com o asterisco, nossa ER já não tem mais um
número finito de possibilidades. Vejamos como fica a leitura dessa ER:
um <, seguido ou não de uma /, seguido de:
ou B, ou I, ou P, ou b
, ou i, ou p, seguido ou não de vários
espaços, seguido de >.
Pergunta: o que casará [ar]*a na palavra
arara? Alternativas:
1) a [ar] zero vezes, seguido de a 2) ara [ar] duas vezes (a,r), seguido de a 3) arara [ar] quatro vezes (a,r,a,r), seguido de a 4) n.d.a.
Acertou se você escolheu a número 3. O asterisco repete em
qualquer quantidade, mas ele sempre tentará repetir o máximo
que conseguir. As três alternativas são válidas, mas entre casar a
lista [ar] zero, duas ou quatro vezes, ele
escolherá o maior número possível. Por isso se diz que o asterisco
é guloso.
Essa gulodice às vezes é boa, às vezes é ruim. Os próximos quantificadores, mais e chaves, bem como o opcional já visto, são igualmente gulosos. Mais detalhes sobre o assunto, confira mais adiante.
Vimos até agora que temos dois metacaracteres extremamente abrangentes, como o ponto (qualquer caractere) e o asterisco (em qualquer quantidade). E se juntarmos os dois? Teremos qualquer caractere, em qualquer quantidade. Pára um instante para pensar nisso. O que isso significa, tudo? Nada? A resposta é: ambos.
O nada, pois "qualquer quantidade" também é igual a "nenhuma
quantidade". Então é opcional termos qualquer caractere, não
importa. Assim, uma ER que seja simplesmente .*
sempre será válida e casará mesmo uma linha vazia.
O tudo, pois "qualquer quantidade" também é igual a "tudo o que tiver". E é exatamente isso o que o asterisco faz, ele é guloso, ganancioso, e sempre tentará casar o máximo que conseguir. Repita comigo: o MÁXIMO que conseguir.
O curinga .* é qualquer coisa!
Assim, temos aqui o curinga das ERs, uma carta para se usar em
qualquer situação. É muito comum ao escrever uma expressão regular,
você definir alguns padrões que procura, e lá no meio, em uma parte
que não importa, pode ser qualquer coisa, você coloca um
.* e depois continua a expressão normalmente.
Por exemplo, para procurar ocorrência de duas palavras na mesma
linha, relatório.*amanhã serve para achar aquela
linha maldita em que lhe pediram um trabalho "pra ontem". Ou, ainda,
procurar acessos de usuários em uma data qualquer:
22/11/2001.*login.
Resumão