0Pricing
Ruby Academy · Lección

Coincidencias y capturas

match y captures

Coincidencias y capturas es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

Objetos MatchData

Cuando llama a regex.match(string), Ruby devuelve un objeto MatchData si hay una coincidencia o nil si no la hay.

MatchData contiene el texto coincidente y los grupos capturados.

m = /world/.match('hello world')
puts m.class
puts(m[0])

La coincidencia completa: índice 0

El índice 0 de un objeto MatchData siempre contiene la subcadena coincidente completa, independientemente de los grupos que haya.

m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)

Grupos de captura

Los paréntesis ( ) crean grupos de captura. Puede acceder a cada grupo mediante un número que comienza en 1.

m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])

El método captures

captures devuelve una matriz con todos los grupos capturados, sin incluir la coincidencia completa del índice 0.

m = /(\w+)@(\w+)/.match('alice@example')
p m.captures

Desestructurar capturas

Como captures devuelve una matriz, puede desestructurar directamente el resultado en variables.

user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts host

Coincidencia anterior y posterior

MatchData ofrece métodos auxiliares para acceder al texto que rodea la coincidencia:

  • pre_match: la parte anterior
  • post_match: la parte posterior
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)

scan para encontrar todas las coincidencias

String#scan devuelve una matriz con todas las coincidencias de la cadena, no solo la primera.

nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p nums

scan con grupos

Si el patrón contiene grupos, scan devuelve una matriz de matrices, una por cada coincidencia; cada una contiene las capturas de esa coincidencia.

pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairs

Gestionar nil de forma segura

Recuerde siempre que match devuelve nil cuando no hay ninguna coincidencia. Compruebe este caso antes de usar el resultado.

m = /(\d+)/.match('no digits here')
if m
  puts m[1]
else
  puts 'no match found'
end

Variables especiales

Después de una coincidencia correcta, Ruby establece variables globales: $~ contiene el MatchData y $1, $2 contienen las capturas numeradas.

Son prácticas en scripts breves, pero en código real resulta más claro usar MatchData de forma explícita.

if 'name: Alice' =~ /name: (\w+)/
  puts $1
end

Extraer una fecha

Combine grupos y capturas para extraer datos estructurados de una cadena en un solo paso.

year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"

Comprobación rápida

Dado 'a=1 b=2'.scan(/(\w)=(\d)/), ¿qué estructura tiene el resultado?

Repaso: coincidencias y capturas

Ahora puede extraer datos de las coincidencias:

  • match devuelve MatchData o nil
  • El índice 0 contiene la coincidencia completa; los índices 1 y superiores, los grupos
  • captures devuelve todos los grupos en una matriz
  • scan encuentra todas las coincidencias de la cadena
  • Compruebe siempre si el resultado es nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)

Preguntas frecuentes

¿La lección «Coincidencias y capturas» es gratis?

Sí — el texto completo de «Coincidencias y capturas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Coincidencias y capturas»?

match y captures Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Coincidencias y capturas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Literales de expresiones regulares
  2. Coincidencias y capturas
  3. Sustitución
  4. Grupos con nombre y anclas
← Volver a Ruby Academy