Pergunte a qualquer administrador Linux/Unix experiente a respeito de Expressões Regulares (ERs) e você obterá respostas mais ou menos assim:

  • “São fundamentais para procurar dados”
  • “As expressões regulares separam os meninos dos adultos”
  • “Case com uma mulher que domine o uso de expressões regulares”
  • “Você usa para tudo”

Pelas respostas você já sabe que Expressões Regulares (ERs) são algo bem importante. O problema é que apesar de todo mundo reconhecer sua importância, pouquíssimas pessoas realmente entendem e dominam o assunto: ERs são fáceis de aprender mas muito difíceis de dominar com eficiência.

A situação é análoga ao jogo de xadrez: você pode ensinar para qualquer pessoa as regras do xadrez e os movimentos das peças em 20 minutos… mas aprender a como jogar com eficiência pode levar meses ou anos. Com as ERs é mais ou menos assim: o básico você aprende em poucas horas, mas dominar seu uso levará muito mais tempo.

E a situação é ainda mais complexa pois não existe um “padrão oficial” de implementação das ERs, cada software ou utilitário pode implementar o uso das ERs de modo ligeiramente diferente. Assim, além de aprender o básico em comum, você tem que aprender as nuances específicas da implementação das ERs nos sistemas que você utiliza. Por exemplo: a implementação das ERs pode ser ligeiramente diferente no Grep, Awk, Emacs, Gawk, Java, Python, Tcl, Lisp, Oracle SQL, PostgreSQL, MySQL, Vim, R e muitos outros.

Para ajudar os iniciantes no assunto teremos uma série de artigos a respeito de ERs, e este é o primeiro deles: a introdução!

O que é uma Expressão Regular (ER)?

Uma Expressão Regular (ER) nada mais é do que um método formal para especificar um padrão de texto, utilizando metacaracteres para “casar” (do inglês “match”: casas, combinar, corresponder, igualar) tais padrões de texto.

Por exemplo: você tem um texto e deseja procurar todas as ocorrências da palavra “gato” (em minúsculas). Aqui é muito simples: a ER é a própria palavra:

  • ER para “gato”: gato

Mas e se você quiser encontrar todas as ocorrências das palavras “gato” ou “pato”?

  • ER para “gato” ou “pato”: [gp]ato

E se você quiser acrescentar “rato” à listagem?

  • ER para “gato”, “pato” ou “rato”: [gpr]ato

E se quiser pesquisar esses mesmos animais, independente do gênero?

  • ER para “gato”, “gata”, “pato”, “pata”, “rato”, “rata”: [gpr]at[oa]

E se quiser pesquisar por ocorrências dos números 10, 110, 1110, 11110, …, 11111111111111111110, … ?

  • ER para 10, 110, 1110, … : 1+0

Percebeu o que são as ERs? São métodos formais de se especificar um padrão de texto, através do uso de metacaracteres para indicar o padrão a ser casado. Nos exemplos acima vimos somente 2 dos mais simples metacaracteres: a lista [ ] e o +. Existem muitos outros metacaracteres e as ERs podem se tornar extremamente complexas dependendo do padrão de texto que você pretende procurar, por exemplo: a ER (\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4} pode ser utilizada para procurar por números de DDD e telefone (você consegue identificar o padrão de telefone aqui?).

Nos próximos artigos desta série você aprenderá a usar todos os metacaracteres e, em pouco tempo, estará escrevendo suas próprias ERs!

Classificado como: