Курс 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, з яким ви незабаром познайомитеся.)

Навігація курсом

Літерали та класи символів   |   Класи символів


💪 Або перейдіть одразу до вправ цього розділу.