Curso de Raku / Expresiones regulares y gramáticas / Expresiones regulares / Aserciones de contexto / Exercises / Entre corchetes
Solución: Entre corchetes
Aquí tienes una posible solución para la tarea.
Código
say '$50' ~~ / <?after '$'> \d+ >> <!before '.'> /;🦋 Puedes encontrar el código fuente en el archivo whole-dollar.raku.
Salida
「50」Comentarios
<?after '$'>es un lookbehind positivo — exige un$justo antes del número — y<!before '.'>es un lookahead negativo — exige que no siga un.. Ni el$ni el entorno pasan a formar parte de la coincidencia, así que el resultado es solo50.El
>>es un límite de palabra que marca el final del número. Sin él, el voraz\d+podría retroceder: en$39.99cedería el9y emparejaría3(al que no le sigue.).>>obliga a tomar el número entero, así que$3.99y$39.99no emparejan nada, como debe ser.Este es un caso donde un lookahead se gana el sueldo: no puedes expresar «no seguido por un punto decimal» con un grupo de captura ordinario, porque ahí no hay nada que capturar, solo una condición que comprobar.
Navegación del curso
← Entre corchetes | Adverbios →