Регулярные выражения — 4. Именованные правила
В механизме обработки регулярных выражений в Perl 6 появилось новое понятие — именованные правила (rules). Правило определяют аналогично функции (с использованием ключевого слова rule), однако тело правила содержит не
\d+
}
Круглые скобки в этом примере выполняют обычную функцию сохранения результата в переменных типа $1.
Как и функции, правила могут принимать аргументы. От функций правила унаследовали и синтаксис объявления и способ использования переменных:
Второй пример печатает две строки: 1234 и 5678. При первом сопоставлении правило starts_with выбирает последовательность цифр, начинающихся с единицы, во втором случае — с 5.
Формальные параметры правила допустимо не указывать. В этом случае для доступа к переданным аргументам придется использовать массив @_. Например, предыдущий пример останется работоспособным, если правило объявить иначе:
rule starts_with {
@_[0] \d+
}
rule starts_with ($first){
$first \d+
}sub main()
{
my $string = "1234 5678 9012";
$string =~ /(<starts_with (1)>)/;
print "$1\n";
$string =~ /(<starts_with (5)>)/;
print "$1\n";
}
25 февраля 2004sub main()
{
my $string = "February 2004";
$string =~ /(<match_number>)/;
print $1;
}