Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Літерали та класи символів
Зіставлення літерального тексту
Найпростіший шаблон — це послідовність літер і цифр. Такий шаблон збігається саме з цими символами, в такому порядку, будь-де в рядку:
say 'the cat sat' ~~ /cat/; # 「cat」
say 'Hello' ~~ /ell/; # 「ell」Збіг не мусить починатися з початку рядка — механізм регексів шукає шаблон на кожній позиції, доки не знайде його.
Успішний збіг дає об’єкт Match. Оте 「cat」 у
першому прикладі — це те, як такий об’єкт виглядає, коли його виводять:
say показує Match як текст, з яким той збігся,
узятий у кутові дужки 「 」. Якщо шаблону немає, збіг
натомість зазнає невдачі: розумне зіставлення дає Nil —
невизначене значення, яке в булевій перевірці рахується як хибне:
say ('the cat sat' ~~ /dog/); # Nil
say ('the cat sat' ~~ /dog/).Bool; # FalseУсередині регекса пробіли за замовчуванням не
значущі — вони існують лише для того, щоб зробити шаблон читнішим. Тож
/ ell / збігається точно з тим, з чим збігся б
/ell/; навколишні пробіли просто ігноруються:
say 'Hello' ~~ / ell /; # 「ell」Оскільки пробіл у шаблоні ігнорується, зіставлення зі справжнім пробілом потребує лапок: усе, що ви берете в лапки, зіставляється буквально. Те саме взяття в лапки є способом зіставитися з розділовим знаком, який інакше мав би в регексі особливе значення:
say 'a b' ~~ / 'a b' /; # 「a b」
say 'price: $5' ~~ / '$' /; # 「$」(Для пробільних символів можна також скористатися класом
\s, з яким ви незабаром познайомитеся.)
Навігація курсом
← Літерали та класи символів | Класи символів →
💪 Або перейдіть одразу до вправ цього розділу.