Expressões Regulares em Ruby

06set07

Expressões regulares são uma verdadeira “mão na roda” para qualquer desenvolvedor. Seja para editar código-fonte ou para facilitar alguma tarefa repetitiva de uma aplicação, esse recurso está sempre presente.

Até algum tempo atrás, achava que expressões regulares eram grego. Mas minha curiosidade não me deixou em paz e resolvi aprender sobre o assunto. Para minha surpresa, expressões regulares são bem fáceis de aprender.

Ruby faz ótimo uso das expressões regulares. Em Ruby, uma expressão regular (ou pattern, ou padrão) é delimitada por barras (“/”), da seguinte maneira: /^\w{8,15}$/ (que significa: permitir apenas letras, números e underscores. No mínimo 8 e no máximo 15 caracteres).

Vamos agora à alguns exemplos práticos.

Para verificar se uma dada cadeia de caracteres está de acordo com uma expressão regular, podemos fazer o seguinte:


string_exemplo = "Teste de RegExp"
if string_exemplo.match( /^\w{8,15}$/ )
  puts "String aceita!"
end

Ou utilizando o operador =~, que retorna a posição a partir da qual uma cadeia “bate” com a expressão regular. Isso é útil quando queremos verificar a validade de uma cadeia dentro de outra maior:


"Ligue para (99) 0000-0000" =~ /[(]\d{2}[)]\s*\d{4}-\d{4}/  #retorna 11

*Nota: não consegui utilizar a tag especial de código-fonte do WordPress nos dois exemplos acima pois ela está cheia de bugs e não renderiza coisas como <,> e \.

Podemos, também, substituir subcadeias:

s = "Bola"  
s.gsub!(/[aeiou]/,"*") #altera o proprio objeto
puts s  #imprime B*l*

Recursos interessantes para consulta:

Cheat Sheet
http://www.regex.pro.br/wiki/Home
Biblioteca de expressões regulares