Ruby:
Usando expresiones regulares
Cómo hacerlo:
Coincidencia Básica
Para hacer coincidir una cadena con un patrón simple, puedes usar el método match
. A continuación, estamos verificando si la palabra “Ruby” existe en una cadena dada.
if /Ruby/.match("¡Hola, Ruby!")
puts "¡Coincidencia encontrada!"
end
# Salida: ¡Coincidencia encontrada!
Coincidencia de Patrones con Variables
Puedes interpolar variables en tu regex utilizando la sintaxis #{}
, haciendo que tus patrones sean dinámicos.
language = "Ruby"
if /#{language}/.match("Programar en Ruby es divertido.")
puts "¡Hablando sobre Ruby!"
end
# Salida: ¡Hablando sobre Ruby!
Usando Regex para Sustitución
El método gsub
te permite reemplazar cada ocurrencia de un patrón con una cadena de reemplazo especificada.
puts "foobarfoo".gsub(/foo/, "bar")
# Salida: barbarbar
Capturando
Los paréntesis en un regex se utilizan para capturar partes de una coincidencia. El método match
devuelve un objeto MatchData
, que puedes utilizar para acceder a las capturas.
match_data = /(\w+): (\d+)/.match("Edad: 30")
puts match_data[1] # Etiqueta capturada
puts match_data[2] # Valor capturado
# Salida:
# Edad
# 30
Usando Bibliotecas de Terceros
Aunque la biblioteca estándar de Ruby es poderosa, a veces podrías necesitar funcionalidades más especializadas. Una gema popular para trabajar con regex es Oniguruma
, que proporciona características de regex adicionales más allá del motor de regex integrado de Ruby.
Instálalo usando:
gem install oniguruma
Un ejemplo de uso podría verse así (asumiendo que has requerido oniguruma
después de instalarlo):
# Este es un ejemplo más avanzado y podría requerir configuración adicional
require 'oniguruma'
pattern = Oniguruma::ORegexp.new('(\d+)')
match_data = pattern.match("El número es 42.")
puts match_data[1]
# Salida: 42
Recuerda, aunque son poderosas, las expresiones regulares pueden volverse complejas y difíciles de manejar para patrones más complicados. Apunta a la legibilidad y considera métodos alternativos si tu regex se vuelve demasiado enredado.