Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Postado em
6 September 2007 @ 13:48

Tag(s)
Ruby

Expressões Regulares em Ruby

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:

[sourcecode language=’ruby’]
s = “Bola”
s.gsub!(/[aeiou]/,”*”) #altera o proprio objeto
puts s #imprime B*l*
[/sourcecode]

Recursos interessantes para consulta:

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


1 Comentário

Comentário por
Samuel Vinícius
8 September 2010 @ 9:08

Realmente expressões regulares são uma “mão na roda”.
Veja o site http://rubular.com/, nele é possível testar as expressões online


Deixe um comentário