Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Зіставлення рядків

Оператор розумного зіставлення

Оператором, який застосовує регекс до рядка, є розумне зіставлення ~~:

say 'the cat sat' ~~ /cat/; # 「cat」

Шаблон, записаний між скісними рисками, є найпоширенішою формою, але є ще дві, що означають те саме й іноді зрозуміліші:

say 'the cat sat' ~~ m/cat/;  # 「cat」
say 'the cat sat' ~~ rx/cat/; # 「cat」

Форма m/.../ підкреслює, що ви зіставляєте, і стає в пригоді, коли до зіставлення хочеться додати параметри (з цими параметрами, які називають наріччями, ви познайомитеся згодом). Форма rx/.../ створює значення-регекс, ще не зіставляючи його.

Дуже часто вам важливо лише, чи рядок збігся, а не що саме знайдено. Оскільки успішний збіг є істинним значенням, а невдалий — хибним, результат можна використовувати просто в булевому контексті. Найчистіший спосіб отримати звичайні True чи False — функція so:

say so 'the cat sat' ~~ /cat/; # True
say so 'the cat sat' ~~ /dog/; # False

Це робить регекс природною умовою для if:

if 'the cat sat' ~~ /cat/ {
    say 'found it';   # found it
}

Практика

Виконайте 1 тест за змістом цієї теми.

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

Зіставлення рядків   |   Тест — Розумне зіставлення


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