Курс по Raku / Регулярни изрази и граматики / Регулярни изрази / Твърдения за оглед / Exercises / Между скоби
Решение: Между скоби
Ето едно възможно решение на задачата.
Код
say '$50' ~~ / <?after '$'> \d+ >> <!before '.'> /;🦋 Намерете програмата във файла whole-dollar.raku.
Изход
「50」Коментари
<?after '$'>е положителен поглед назад — той изисква$непосредствено преди числото, — а<!before '.'>е отрицателен поглед напред: той изисква след него да не следва.. Нито$, нито околността стават част от съвпадението, така че резултатът е само50.>>е граница на дума, отбелязваща края на числото. Без нея лакомият\d+би могъл да се върне назад: при$39.99той би отстъпил9и би съпоставил3(след което.не следва).>>принуждава да се вземе цялото число, така че$3.99и$39.99правилно не дават съвпадение.Това е случаят, в който погледът напред си заслужава хляба: „след което не следва десетична точка“ е невъзможно да се изрази с обикновена група за прихващане, защото там няма какво да се прихване — има само условие за проверка.
Навигация в курса
← Между скоби | Наречия →