Las expresiones regulares (regex) son una herramienta poderosa para la manipulación y validación de cadenas de texto. En Ruby, las expresiones regulares se utilizan ampliamente para buscar, reemplazar y validar patrones en cadenas. Este tema cubrirá los conceptos básicos de las expresiones regulares, su sintaxis en Ruby, y proporcionará ejemplos prácticos y ejercicios para reforzar el aprendizaje.
Conceptos Básicos de Expresiones Regulares
¿Qué es una Expresión Regular?
Una expresión regular es una secuencia de caracteres que define un patrón de búsqueda. Este patrón puede ser utilizado para realizar operaciones de búsqueda y manipulación en cadenas de texto.
Sintaxis Básica
En Ruby, las expresiones regulares se definen entre barras inclinadas (/
). Por ejemplo:
Caracteres Especiales
Las expresiones regulares utilizan caracteres especiales para definir patrones complejos. Algunos de los más comunes son:
.
: Coincide con cualquier carácter excepto una nueva línea.*
: Coincide con cero o más repeticiones del carácter anterior.+
: Coincide con una o más repeticiones del carácter anterior.?
: Coincide con cero o una repetición del carácter anterior.\d
: Coincide con cualquier dígito.\w
: Coincide con cualquier carácter de palabra (letras, dígitos y guiones bajos).\s
: Coincide con cualquier espacio en blanco (espacios, tabulaciones, etc.).
Ejemplo Básico
# Coincide con cualquier cadena que contenga "ruby" regex = /ruby/ puts "I love ruby programming".match?(regex) # => true puts "I love python programming".match?(regex) # => false
Métodos de Expresiones Regulares en Ruby
match
El método match
devuelve un objeto MatchData
si encuentra una coincidencia, o nil
si no la encuentra.
scan
El método scan
devuelve todas las coincidencias en una cadena como un array.
regex = /\d+/ result = "My phone number is 123-456-7890".scan(regex) puts result # => ["123", "456", "7890"]
sub
y gsub
El método sub
reemplaza la primera coincidencia, mientras que gsub
reemplaza todas las coincidencias.
regex = /\d+/ text = "My phone number is 123-456-7890" puts text.sub(regex, 'XXX') # => "My phone number is XXX-456-7890" puts text.gsub(regex, 'XXX') # => "My phone number is XXX-XXX-XXXX"
Ejemplos Prácticos
Validación de Email
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i email = "[email protected]" puts email.match?(email_regex) # => true
Extracción de Números de Teléfono
phone_regex = /\d{3}-\d{3}-\d{4}/ text = "Contact me at 123-456-7890 or 987-654-3210" phones = text.scan(phone_regex) puts phones # => ["123-456-7890", "987-654-3210"]
Ejercicios Prácticos
Ejercicio 1: Validación de Códigos Postales
Escribe una expresión regular que valide códigos postales de 5 dígitos.
postal_code_regex = /^\d{5}$/ puts "12345".match?(postal_code_regex) # => true puts "1234a".match?(postal_code_regex) # => false
Ejercicio 2: Reemplazo de Palabras
Reemplaza todas las ocurrencias de la palabra "foo" con "bar" en una cadena.
text = "foo is a placeholder, foo should be replaced" puts text.gsub(/foo/, 'bar') # => "bar is a placeholder, bar should be replaced"
Ejercicio 3: Extracción de Fechas
Extrae todas las fechas en formato dd-mm-yyyy
de una cadena.
date_regex = /\b\d{2}-\d{2}-\d{4}\b/ text = "Important dates are 12-05-2021 and 23-11-2020" dates = text.scan(date_regex) puts dates # => ["12-05-2021", "23-11-2020"]
Retroalimentación y Consejos
Errores Comunes
- Olvidar los delimitadores: Asegúrate de encerrar tus expresiones regulares entre barras inclinadas (
/
). - No escapar caracteres especiales: Algunos caracteres tienen significados especiales en regex y deben ser escapados con una barra invertida (
\
).
Consejos Adicionales
- Usa herramientas de prueba de regex: Existen muchas herramientas en línea que te permiten probar y depurar tus expresiones regulares.
- Lee la documentación: La documentación oficial de Ruby y las guías de regex son recursos valiosos para aprender más sobre expresiones regulares.
Conclusión
En esta sección, hemos cubierto los conceptos básicos de las expresiones regulares en Ruby, incluyendo su sintaxis, métodos comunes y ejemplos prácticos. Las expresiones regulares son una herramienta poderosa para la manipulación de texto y, con práctica, pueden ser una adición valiosa a tu conjunto de habilidades de programación. En el próximo módulo, exploraremos conceptos avanzados de Ruby, como bloques, procs y lambdas.
Curso de Programación en Ruby
Módulo 1: Introducción a Ruby
Módulo 2: Conceptos Básicos de Ruby
Módulo 3: Trabajando con Colecciones
Módulo 4: Programación Orientada a Objetos en Ruby
- Clases y Objetos
- Variables y Métodos de Instancia
- Variables y Métodos de Clase
- Herencia
- Módulos y Mixins
Módulo 5: Conceptos Avanzados de Ruby
- Bloques, Procs y Lambdas
- Metaprogramación
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Expresiones Regulares
Módulo 6: Introducción a Ruby on Rails
- ¿Qué es Ruby on Rails?
- Configuración del Entorno Rails
- Creando una Aplicación Simple en Rails
- Arquitectura MVC
- Enrutamiento
Módulo 7: Pruebas en Ruby
- Introducción a las Pruebas
- Pruebas Unitarias con Minitest
- Desarrollo Guiado por Comportamiento con RSpec
- Mocking y Stubbing
Módulo 8: Mejores Prácticas en Ruby
- Estilo de Código y Convenciones
- Refactorización
- Optimización del Rendimiento
- Mejores Prácticas de Seguridad