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.capturesDesestructurar capturas
Como captures devuelve una matriz, puede desestructurar directamente el resultado en variables.
user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts hostCoincidencia anterior y posterior
MatchData ofrece métodos auxiliares para acceder al texto que rodea la coincidencia:
pre_match: la parte anteriorpost_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 numsscan 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 pairsGestionar 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'
endVariables 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
endExtraer 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:
matchdevuelve MatchData o nil- El índice 0 contiene la coincidencia completa; los índices 1 y superiores, los grupos
capturesdevuelve todos los grupos en una matrizscanencuentra 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
- Literales de expresiones regulares
- Coincidencias y capturas
- Sustitución
- Grupos con nombre y anclas