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
False

Komentāri

  1. regex iekšienē \d+ vispirms sagrābj visu 12345, un tad atkāpjas — atdod pēdējo 5, lai burtiskais 5 varētu sakrist. Tāpēc regulārā izteiksme izdodas.

  2. token atsakās kaut ko atdot: \d+ patur visu 12345, burtiskais 5 neatrod nekā palikuša, un marķieris neizdodas. Tieši šī neatkāpšanās uzvedība ir iemesls, kāpēc token ir pareizais noklusējums gramatiku iekšienē.

Kursa navigācija

regex pret token   |   Likums ar atstarpēm