Volver a la página principal
miércoles 31 julio 2024
32

Trabajando con Expresiones Regulares en Ruby

Conceptos Básicos

En Ruby, una expresión regular se define utilizando barras inclinadas (/). Aquí tienes un ejemplo sencillo:

pattern = /ruby/

Este patrón busca la cadena "ruby". Puedes utilizar métodos como match, =~, y scan para trabajar con estas expresiones regulares.

Coincidencia Básica

Para verificar si una cadena coincide con un patrón, puedes usar el método match:

pattern = /ruby/
text = "Aprendiendo ruby es divertido"
match_data = pattern.match(text)

puts match_data # => #<MatchData "ruby">

El método =~ devuelve la posición de la primera coincidencia, o nil si no se encuentra ninguna coincidencia:

text = "Aprendiendo ruby es divertido"
puts text =~ /ruby/ # => 11
puts text =~ /python/ # => nil

Modificadores

Las expresiones regulares en Ruby pueden tener modificadores para cambiar su comportamiento. Algunos de los más comunes son:

  • i: Ignora mayúsculas y minúsculas.
  • m: Permite que el . coincida con nuevas líneas.
  • x: Ignora espacios en blanco y permite comentarios dentro de la expresión regular.

Ejemplo:

pattern = /ruby/i
text = "Aprendiendo Ruby es divertido"
puts pattern.match(text) # => #<MatchData "Ruby">

Grupos y Capturas

Puedes agrupar partes de una expresión regular y capturarlas para su posterior uso:

pattern = /(ruby|python)/
text = "Estoy aprendiendo ruby y python"
matches = text.scan(pattern)

puts matches # => [["ruby"], ["python"]]

Las capturas se pueden acceder a través de variables especiales como $1, $2, etc.:

pattern = /(ruby|python)/
text = "Estoy aprendiendo ruby y python"

if pattern =~ text
  puts "Primer lenguaje: #{$1}" # => Primer lenguaje: ruby
end

Sustituciones

El método sub reemplaza la primera coincidencia, mientras que gsub reemplaza todas las coincidencias:

text = "Estoy aprendiendo ruby y ruby es divertido"
puts text.sub(/ruby/, 'Python') # => Estoy aprendiendo Python y ruby es divertido
puts text.gsub(/ruby/, 'Python') # => Estoy aprendiendo Python y Python es divertido

Uso Avanzado

Las expresiones regulares pueden volverse muy complejas y permiten el uso de cuantificadores, anclas y clases de caracteres. Algunos ejemplos:

  • Cuantificadores (*, +, ?, {n,m}):
pattern = /ru*y/
  puts pattern.match("ruy") # => #<MatchData "ruy">
  puts pattern.match("ruuuuy") # => #<MatchData "ruuuuy">
  • Anclas (^, $):
pattern = /^ruby$/
  puts pattern.match("ruby") # => #<MatchData "ruby">
  puts pattern.match(" ruby ") # => nil
  • Clases de caracteres (\d, \w, \s, [^abc]):
pattern = /\d{3}-\d{3}-\d{4}/
  text = "Mi número es 123-456-7890"
  puts pattern.match(text) # => #<MatchData "123-456-7890">

Herramientas y Buenas Prácticas

  • Uso de Rubular: Rubular (rubular.com) es una herramienta en línea excelente para probar expresiones regulares en Ruby.
  • Legibilidad: Mantén tus expresiones regulares legibles y bien documentadas, especialmente las complejas. Usa modificadores y comentarios (x) cuando sea necesario.
  • Validaciones: Utiliza expresiones regulares para validar entradas de usuarios, pero complementa con otras técnicas de validación para mayor seguridad.

Conclusión

Las expresiones regulares en Ruby son una herramienta versátil y poderosa para trabajar con texto. Desde tareas simples como la búsqueda de patrones hasta operaciones complejas de validación y sustitución, las expresiones regulares pueden facilitar significativamente la manipulación de datos. Practicar y experimentar con diferentes patrones te ayudará a dominar su uso y aplicar estas técnicas de manera efectiva en tus proyectos de Ruby.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer