Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Наречия

Значимые пробелы

Внутри регулярного выражения пробелы обычно игнорируются — они нужны лишь для удобочитаемости шаблона. Поэтому /foo bar/ совпадает с foobar. Но иногда пробел в шаблоне действительно должен означать «здесь есть пробельный символ». Ровно это и делает наречие :s (сокращение от :sigspace, «значимый пробел»):

say so 'foo    bar' ~~ /:s foo bar/; # True
say so 'foobar'     ~~ /:s foo bar/; # False

С :s пробел между foo и bar в шаблоне требует пробельного символа между этими словами в строке. Годятся один или несколько пробелов (или табуляций), поэтому вереница пробелов в 'foo bar' подходит.

Значимые пробелы становятся особенно важны в грамматиках, где они позволяют писать шаблоны, читающиеся как тот язык, который вы разбираете. Вы встретите их снова как различие между token и rule.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Глобальное сопоставление   |   Тест — Наречия


💪 Или перейдите сразу к упражнениям этого раздела.