Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Expresiones Regulares en Ruby: Explicadas Claramente

Este tutorial te guiará por los fundamentos de las expresiones regulares en Ruby, desde la sintaxis básica hasta técnicas avanzadas.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

Las expresiones regulares, a menudo abreviadas como regex o regexp, son herramientas poderosas para trabajar con patrones de texto en Ruby. Te permiten buscar, encontrar coincidencias, extraer y manipular cadenas basadas en patrones específicos. Ya sea que estés validando la entrada del usuario, analizando datos o realizando un procesamiento de texto complejo, las expresiones regulares de Ruby proporcionan una solución concisa y flexible.

Este tutorial te guiará a través de los fundamentos de las expresiones regulares en Ruby, desde la sintaxis básica hasta las técnicas avanzadas.


Los desarrolladores de Ruby que buscan optimizar su flujo de trabajo de pruebas de API deberían considerar Apidog, una alternativa poderosa que supera a Postman en varios aspectos clave.

Apidog combina documentación de API, depuración, pruebas automatizadas y simulación en una plataforma cohesiva, ofreciendo una experiencia más integrada que el enfoque fragmentado de Postman.

Con su interfaz intuitiva, validación de esquema incorporada y funciones integrales de colaboración en equipo, Apidog facilita significativamente la gestión de proyectos de API complejos.

Los desarrolladores de Ruby apreciarán el sólido soporte de Apidog para la automatización a través de su interfaz de línea de comandos, la integración perfecta de Git para el control de versiones y la compatibilidad superior con OpenAPI/Swagger, esencial para mantener una documentación precisa junto con sus aplicaciones Ruby.

Ya sea que estés construyendo servicios RESTful con Rails o creando microservicios con Sinatra, el conjunto de herramientas todo en uno de Apidog elimina el cambio de contexto que afecta a los usuarios de Postman, lo que te permite concentrarte en lo que más importa: escribir un excelente código Ruby.

button

Creación de Expresiones Regulares en Ruby

En Ruby, hay varias formas de crear expresiones regulares:

Método 1: Usando Barras en Expresiones Regulares de Ruby

La forma más común de crear una expresión regular en Ruby es encerrando el patrón entre barras inclinadas:

/Ruby/  # Crea una expresión regular que coincide con "Ruby"

Método 2: Usando Notación de Porcentaje para Expresiones Regulares de Ruby

También puedes usar la notación de porcentaje con el indicador %r:

%r(Ruby)  # Igual que /Ruby/

Esto es particularmente útil cuando tu patrón contiene muchas barras inclinadas, ya que ayuda a evitar el escape excesivo.

Método 3: Usando la Clase Regexp para Expresiones Regulares de Ruby

Otro enfoque es usar el constructor Regexp.new:

Regexp.new("Ruby")  # Igual que /Ruby/

Todos estos métodos crean instancias de la clase Regexp.

Símbolos Básicos de Expresiones Regulares de Ruby

Las expresiones regulares de Ruby usan símbolos especiales para representar diferentes patrones. Aquí están los fundamentales:

Símbolo Descripción Ejemplo Coincidencias
. Coincide con cualquier carácter individual /a.b/ "axb", "a2b", "a b"
* Coincide con 0 o más del elemento precedente /ab*c/ "ac", "abc", "abbc"
+ Coincide con 1 o más del elemento precedente /ab+c/ "abc", "abbc", "abbbc"
? Coincide con 0 o 1 del elemento precedente /ab?c/ "ac", "abc"
\| Alternancia (OR) /cat\|dog/ "cat", "dog"
[] Clase de carácter - coincide con cualquier carácter listado /[aeiou]/ "a", "e", "i", "o", "u"
() Crea un grupo de captura /(abc)+/ "abc", "abcabc"
^ Coincide con el inicio de una cadena /^start/ "start of string"
$ Coincide con el final de una cadena /end$/ "the end"
\\\\ Escapa un carácter especial /\\\\\\\\/ "\"

Caracteres Especiales en Expresiones Regulares de Ruby

Las expresiones regulares de Ruby incluyen clases de caracteres predefinidas que hacen que la coincidencia de patrones sea más conveniente:

Símbolo Descripción Ejemplo Coincidencias
\\\\d Coincide con cualquier dígito (0-9) /\\\\d+/ "123", "9"
\\\\D Coincide con cualquier no dígito /\\\\D+/ "abc", "!@#"
\\\\w Coincide con cualquier carácter de palabra (alfanumérico + guion bajo) /\\\\w+/ "ruby123", "user_name"
\\\\W Coincide con cualquier carácter que no sea de palabra /\\\\W+/ "!@#", " "
\\\\s Coincide con cualquier carácter de espacio en blanco /\\\\s+/ " ", "\t", "\n"
\\\\S Coincide con cualquier carácter que no sea de espacio en blanco /\\\\S+/ "hello", "123"
\\\\A Coincide con el principio de una cadena /\\\\AHello/ "Hello world"
\\\\z Coincide con el final de una cadena /world\\\\z/ "Hello world"
\\\\Z Coincide con el final de una cadena o antes de la nueva línea final /world\\\\Z/ "Hello world\n"

Cuantificadores en Expresiones Regulares de Ruby

Los cuantificadores te permiten especificar cuántas veces debe coincidir un patrón:

Cuantificador Descripción Ejemplo Coincidencias
* 0 o más repeticiones /ab*c/ "ac", "abc", "abbc"
+ 1 o más repeticiones /ab+c/ "abc", "abbc"
? 0 o 1 repetición /colou?r/ "color", "colour"
{n} Exactamente n repeticiones /a{3}/ "aaa"
{n,} Al menos n repeticiones /a{2,}/ "aa", "aaa", "aaaa"
{n,m} Entre n y m repeticiones /a{2,4}/ "aa", "aaa", "aaaa"

Por ejemplo, para coincidir con un formato de número de teléfono como "123-456-7890", podrías usar:

/\\\\d{3}-\\\\d{3}-\\\\d{4}/

Coincidencia de Patrones con Expresiones Regulares de Ruby

Usando el Operador de Coincidencia en Expresiones Regulares de Ruby

La forma más básica de verificar si un patrón coincide con una cadena es usar el operador =~:

text = "The quick brown fox"
if /quick/ =~ text
  puts "Coincidencia encontrada en el índice #{$~.begin(0)}"
else
  puts "No se encontró ninguna coincidencia"
end

El operador =~ devuelve el índice de la primera coincidencia o nil si no se encuentra ninguna coincidencia. Después de una coincidencia exitosa, puedes usar Regexp.last_match o la variable global $~ para acceder a la información sobre la coincidencia.

Captura de Grupos en Expresiones Regulares de Ruby

Puedes usar paréntesis para crear grupos de captura y extraer partes específicas de una coincidencia:

text = "Name: John, Age: 30"
if match_data = /Name: (\\\\w+), Age: (\\\\d+)/.match(text)
  name = match_data[1]  # Primer grupo de captura
  age = match_data[2]   # Segundo grupo de captura
  puts "Name: #{name}, Age: #{age}"
end

Extracción de Contenido Coincidente en Expresiones Regulares de Ruby

Para extraer todas las ocurrencias de un patrón, usa el método scan:

text = "Contact us at support@example.com or info@example.org"
emails = text.scan(/\\\\w+@\\\\w+\\\\.\\\\w+/)
puts emails.inspect  # ["support@example.com", "info@example.org"]

Trabajando con Expresiones Regulares de Ruby en la Práctica

Reemplazo de Cadenas con Expresiones Regulares de Ruby

El método gsub te permite reemplazar todas las ocurrencias de un patrón con una cadena especificada:

text = "apple banana apple"
new_text = text.gsub(/apple/, "orange")
puts new_text  # "orange banana orange"

También puedes usar un bloque para reemplazos más complejos:

text = "The price is $10"
new_text = text.gsub(/\\\\$(\\\\d+)/) do |match|
  "$#{$1.to_i * 1.1}"  # Aumentar el precio en un 10%
end
puts new_text  # "The price is $11"

Alternancia en Expresiones Regulares de Ruby

El símbolo de barra vertical (|) te permite coincidir con un patrón u otro:

/cat|dog/.match("I have a cat")  # Coincide con "cat"
/cat|dog/.match("I have a dog")  # Coincide con "dog"

Puedes usar paréntesis para agrupar alternativas:

/(apple|banana) pie/.match("I love apple pie")  # Coincide con "apple pie"

Clases de Caracteres en Expresiones Regulares de Ruby

Las clases de caracteres te permiten coincidir con cualquier carácter individual de un conjunto:

/[aeiou]/.match("hello")  # Coincide con "e"
/[0-9]/.match("agent007")  # Coincide con "0"

También puedes negar una clase de caracteres:

/[^0-9]/.match("agent007")  # Coincide con "a"

Operaciones de Cadena con Expresiones Regulares de Ruby

Coincidencias de Inicio y Fin en Expresiones Regulares de Ruby

Ruby proporciona métodos convenientes para verificar si una cadena comienza o termina con un patrón específico:

"Hello, World!".start_with?("Hello")  # true
"Hello, World!".end_with?("World!")   # true

Si bien estos métodos no se basan en regex, a menudo se usan junto con expresiones regulares para tareas de manipulación de cadenas.

Variables Globales en Expresiones Regulares de Ruby

Después de una coincidencia exitosa, Ruby establece varias variables globales:

  • $& - El texto coincidente completo
  • `$`` - La porción de la cadena antes de la coincidencia
  • $' - La porción de la cadena después de la coincidencia
/bb/ =~ "aabbcc"
puts $`   # "aa"
puts $&   # "bb"
puts $'   # "cc"

Modificadores para Expresiones Regulares de Ruby

Las expresiones regulares de Ruby admiten varios modificadores que cambian la forma en que se interpretan los patrones:

Modificador Descripción Ejemplo
i Coincidencia sin distinción entre mayúsculas y minúsculas /ruby/i coincide con "Ruby", "RUBY", "rUbY"
m Modo multilínea (el punto coincide con la nueva línea) /./m coincide con cualquier carácter, incluida la nueva línea
x Modo extendido (permite comentarios y espacios en blanco) /pattern # comment/x
o Realiza interpolaciones #{} solo una vez /#{pattern}/o
u Codificación UTF-8 /\\\\u{1F600}/u coincide con el emoji 😀

Ejemplos:

/ruby/ =~ "RUBY"    # nil (sin coincidencia)
/ruby/i =~ "RUBY"   # 0 (coincidencia al principio)

# Sin el modificador 'm', el punto no coincide con las nuevas líneas
/a.b/ =~ "a\\\\nb"     # nil
# Con el modificador 'm', el punto también coincide con las nuevas líneas
/a.b/m =~ "a\\\\nb"    # 0

Técnicas Avanzadas de Expresiones Regulares de Ruby

Grupos Sin Captura en Expresiones Regulares de Ruby

A veces necesitas agrupar sin capturar el texto coincidente:

/(?:ab)+c/.match("ababc")  # Coincide con "ababc" sin capturar "ab"

Lookahead y Lookbehind en Expresiones Regulares de Ruby

Las aserciones de lookahead te permiten coincidir con un patrón solo si está seguido por otro patrón:

# Coincide con 'apple' solo si está seguido por 'pie'
/apple(?= pie)/.match("apple pie")  # Coincide con "apple"
/apple(?= pie)/.match("apple tart") # Sin coincidencia

# Coincide con 'apple' solo si NO está seguido por 'pie'
/apple(?! pie)/.match("apple tart") # Coincide con "apple"

Las aserciones de lookbehind funcionan de manera similar, pero verifican lo que viene antes:

# Coincide con 'pie' solo si está precedido por 'apple'
/(?<=apple )pie/.match("apple pie")  # Coincide con "pie"
/(?<=apple )pie/.match("cherry pie") # Sin coincidencia

Consejos de Rendimiento para Expresiones Regulares de Ruby

  1. Sé específico: Los patrones más específicos funcionan mejor que los generales
  2. Evita el retroceso excesivo: Los patrones complejos con muchos cuantificadores pueden provocar problemas de rendimiento
  3. Usa anclajes: Cuando sea apropiado, usa \\\\A, \\\\z, ^ y $ para limitar dónde pueden ocurrir las coincidencias
  4. Considera alternativas: A veces, los métodos de cadena simples como include? o start_with? son más rápidos que regex para casos simples

Conclusión sobre las Expresiones Regulares de Ruby

Las expresiones regulares de Ruby son una herramienta poderosa en tu conjunto de herramientas de programación. Te permiten realizar un procesamiento de texto complejo con una sintaxis concisa. Si bien la sintaxis puede parecer intimidante al principio, dominar las expresiones regulares aumentará significativamente tu productividad al trabajar con texto en Ruby.

La práctica es clave para ser competente con las expresiones regulares. Comienza con patrones simples e incorpora gradualmente características más complejas a medida que te sientas cómodo con los conceptos básicos. Muchas herramientas en línea como Rubular (https://rubular.com/) pueden ayudarte a probar y depurar tus expresiones regulares de forma interactiva.

Al comprender los conceptos cubiertos en este tutorial, estarás bien equipado para abordar una amplia gama de desafíos de manipulación de cadenas en tus proyectos de Ruby.

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con OllamaPunto de vista

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

Mikael Svenson

April 28, 2025

¿Dónde Descargar Swagger UI en Español Gratis?Punto de vista

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

Oliver Kingsley

April 23, 2025

¿Dónde Descargar Postman en Español Gratis?Punto de vista

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

Oliver Kingsley

April 22, 2025