Índice Anterior Próxima

Evite o curinga

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           <[^>]*>

Índice Anterior Próxima