Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
Quando pegamos o jeito com expressões regulares e as usamos
regularmente, é comum usar o .* para qualquer
situação, pois como todo curinga que se preze, é uma mão na roda.
Mas à medida que você vai usando ERs para coisas mais complicadas e
mais intensivamente, você começa a perceber que grande parte de seus
problemas foi ter usado o curinga guloso e genérico, onde você
poderia ter sido mais específico, e ele casou o que não devia.
Nem sempre é fácil trocar um curinga por outra coisa. Supõe-se que se você já o usou, é porque precisava de "qualquer coisa". Mas pare para pensar, esse qualquer coisa é realmente QUALQUER coisa? Lembre que isso é muito abrangente, o tudo e o nada. Não seria apenas "qualquer letra em qualquer quantidade" ou "quaisquer caracteres fora espaços em branco"?
Percebeu? As listas são nossa opção para tirar o curinga,
trocando-o por algo não tão abrangente. Então, se em um texto
normal, você procura parte de uma frase, o restante dela até o ponto
final não diga que é .*\., mas [^.]*\.
, ou melhor: [A-Za-z ,]*\.. Isso evita de o
curinga casar além do ponto final da frase e ir até o ponto final do
parágrafo.
Lembra a nossa demonstração da gulodice em que o asterisco casou
demais? Podemos evitar isso sendo mais específicos em nossa ER. Em vez
de dizer <.*>, ou seja, uma marcação pode ter
"qualquer coisa" antes do >, dizemos que pode ter
"qualquer coisa fora o fechamento da marcação". Invocaremos a lista
negada para nos ajudar nessa supertarefa, assim: <[^>]*>
, ou mais visual:
um <b>negrito</b> aqui. ...xxxxxxxxxxxxxx <.*> ...xxx.......xxxx <[^>]*>