Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Прислівники
Область дії прислівника
Прислівник :i можна записати у двох місцях, і різниця
полягає в тому, де він діє. На операторі,
m:i/…/, він робить нечутливим до регістру
весь шаблон. Записаний усередині регексу,
:i є позиційним — він діє лише від того місця, де
з’явився, і далі. Це дозволяє послабити правило регістру лише для
частини шаблону:
say 'RAKU' ~~ /R :i aku/; # 「RAKU」
say 'raku' ~~ /R :i aku/; # NilТут початкове R усе ще зіставляється з урахуванням
регістру — тож raku з малої літери не підходить, — тоді як
:i робить нечутливим до регістру лише aku, що
йде після нього. Натомість із m:i/Raku/ кожна літера
нечутлива до регістру, тож підходять і RAKU, і
raku.
Обмеження групою
Дія внутрішнього прислівника обмежена також групою, що його охоплює.
У /[:i abc]def/ регістр ігнорує лише abc;
def після групи зіставляється строго:
say 'ABCdef' ~~ /[:i abc]def/; # 「ABCdef」
say 'ABCDEF' ~~ /[:i abc]def/; # NilВимкнення прислівника
Щоб вимкнути прислівник назад посеред шаблону, заперечте його за
допомогою !. Тож :!i відновлює чутливість до
регістру від цього місця й далі:
say 'ABCdef' ~~ / :i abc :!i def /; # 「ABCdef」
say 'ABCDEF' ~~ / :i abc :!i def /; # Nil:i послаблює правило регістру для abc, а
потім :!i повертає його на місце, тож def має
збігтися точно. Групування та :!i — це два способи досягти
однієї мети: обмежити прислівник саме тією частиною шаблону, якій він
потрібен. Такий самий перемикач «увімк./вимк.» працює й для інших
прислівників усередині шаблону.
Навігація курсом
← Тест — Ігнорування регістру | Глобальне зіставлення →
💪 Або перейдіть одразу до вправ цього розділу.