0Pricing
Ruby Academy · Lección

Grupos con nombre y anclas

Expresiones regulares avanzadas

Grupos con nombre y anclas es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 4 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.

¿Por qué usar grupos con nombre?

Las capturas numeradas, como m[1], resultan difíciles de leer cuando el patrón crece. Los grupos con nombre asignan una etiqueta significativa a cada captura.

Sintaxis: (?<name>pattern).

m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])

Acceder a capturas con nombre

Acceda a las capturas con nombre mediante una clave Symbol o String: m[:name]. El método named_captures las devuelve todas en un Hash.

m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_captures

Grupos con nombre y =~

Cuando aparece un literal de expresión regular con grupos con nombre a la izquierda de =~, Ruby crea automáticamente variables locales para cada nombre.

if /(?<word>\w+)/ =~ 'hello'
  puts word
end

Anclajes: inicio y final

Los anclajes coinciden con posiciones, no con caracteres:

  • ^: inicio de una línea
  • $: final de una línea

Son fundamentales para validar que coincida toda la entrada.

puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))

Anclajes de cadena \A y \z

^ y $ coinciden con los límites de línea, algo importante en cadenas multilínea. Para la cadena completa, es preferible usar \A (inicio) y \z (final absoluto).

text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))

Validar toda la entrada

Para comprobar que una cadena completa coincide con un formato, ancle ambos extremos. Así se rechazan las cadenas que contienen caracteres adicionales.

zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))

Límites de palabra

\b es un límite de palabra: la posición entre un carácter de palabra y un carácter que no lo es. Permite coincidir con palabras completas sin consumir caracteres.

puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)

Aserción anticipada

Una aserción anticipada positiva (?=...) comprueba qué aparece a continuación sin incluirlo en la coincidencia. La aserción anticipada negativa es (?!...).

puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))

Aserción retrospectiva

Una aserción retrospectiva (?<=...) comprueba qué precede a la coincidencia. La aserción retrospectiva negativa es (?<!...).

m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])

Grupos sin captura

A veces necesita agrupar elementos para usar alternancias o cuantificadores, pero no quiere crear una captura. Use (?:...) para crear un grupo sin captura.

m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.captures

Combinarlo todo

Un validador realista combina anclajes, grupos con nombre y cuantificadores.

re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])

Comprobación rápida

¿Qué anclajes debe usar para asegurarse de que coincide la cadena completa, sin tener en cuenta los saltos de línea?

Repaso: grupos con nombre y anclajes

Ha aprendido a usar herramientas avanzadas de expresiones regulares:

  • Grupos con nombre (?<name>...) y named_captures
  • Anclajes ^ $ \A \z \b
  • Aserciones anticipadas (?=) / (?!) y retrospectivas (?<=) / (?<!)
  • Grupos sin captura (?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])

Preguntas frecuentes

¿La lección «Grupos con nombre y anclas» es gratis?

Sí — el texto completo de «Grupos con nombre y anclas» 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 «Grupos con nombre y anclas»?

Expresiones regulares avanzadas 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 4 de 4.

¿Cuánto tiempo toma la lección «Grupos con nombre y anclas»?

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