Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Qué es una gramática
Expresiones regulares con nombre
Hasta ahora has escrito patrones directamente dentro de
/ … /. También puedes darle un nombre a un
patrón y reutilizarlo, igual que a una subrutina. Se declara con
my regex (o con my token, que conocerás bien
enseguida):
my regex number { \d+ }Para usar un regex con nombre dentro de otro patrón, escribe su
nombre entre corchetes angulares, <number>:
my regex number { \d+ }
if '42 cats' ~~ / <number> / {
say $<number>; # 「42」
}Llamar a <number> empareja el patrón
y lo captura bajo ese nombre, así que el texto
coincidente está disponible como $<number>: una
captura con nombre que te sale gratis.
Un regex con nombre puede usarse varias veces en un mismo patrón. Cuando aparece más de una vez, las capturas forman una lista a la que se llega por índice:
my regex num { \d+ }
if '3-4' ~~ / <num> '-' <num> / {
say $<num>[0]; # 「3」
say $<num>[1]; # 「4」
}Los regex con nombre mantienen legibles los patrones y te permiten construir otros mayores a partir de piezas más pequeñas y bien nombradas. Eso es exactamente lo que hace una gramática a mayor escala.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Qué es una gramática | Quiz — Expresiones regulares con nombre →
💪 O ve directamente a los ejercicios de esta
sección.