Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Marķieri un likumi / Exercises / regex pret token
Risinājums: regex pret token
Šeit ir iespējams risinājums uzdevumam.
Kods
my regex r { \d+ '5' }
my token t { \d+ '5' }
say so '12345' ~~ / <r> /;
say so '12345' ~~ / <t> /;🦋 Atrodiet programmu failā token-instead.raku.
Izvade
True
FalseKomentāri
regexiekšienē\d+vispirms sagrābj visu12345, un tad atkāpjas — atdod pēdējo5, lai burtiskais5varētu sakrist. Tāpēc regulārā izteiksme izdodas.tokenatsakās kaut ko atdot:\d+patur visu12345, burtiskais5neatrod nekā palikuša, un marķieris neizdodas. Tieši šī neatkāpšanās uzvedība ir iemesls, kāpēctokenir pareizais noklusējums gramatiku iekšienē.