Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Tokens y reglas / Exercises / Regex frente a token
Solución: Regex frente a token
Aquí tienes una posible solución para la tarea.
Código
my regex r { \d+ '5' }
my token t { \d+ '5' }
say so '12345' ~~ / <r> /;
say so '12345' ~~ / <t> /;🦋 Puedes encontrar el código fuente en el archivo token-instead.raku.
Salida
True
FalseComentarios
En el
regex,\d+agarra primero todo12345y después retrocede, devolviendo el5final para que el5literal pueda coincidir. Así que el regex funciona.El
tokense niega a devolver nada:\d+se queda con todo12345, el5literal no encuentra nada libre y el token falla. Ese comportamiento sin retroceso es exactamente el motivo por el quetokenes la opción adecuada por omisión dentro de las gramáticas.