Уч. Во-первых, есть модификатор x
, который допустит незначительные пробелы в вашем выражении, чтобы вы могли сделать его более читабельным:
my $pattern = qr{
^\s*
constant\s*
#etc
}x;
(Обратите внимание на модификатор x
после конечной фигурной скобки.) Далее, как уже продемонстрировано в предыдущем примере, вы можете выбрать символ-разделитель для шаблона, чтобы вам не пришлось избегать косых черт в выражении :
my $pattern1 = qr/delimited by slashes/;
my $pattern2 = qr{delimited by curly braces};
И если вы хотите просто сгруппировать выражение, не вводя его в $1
, $2
и т. Д., Вы можете использовать конструкцию (?:…)
:
if ('foo bar' =~ /(?:foo)\s*(bar)/) {
say $1; # bar
}
Или, начиная с Perl 5.10, вы можете использовать именованные захваты:
if ('foo bar' =~ /(?<name>foo)\s*bar/) {
say $+{name}; # foo
}
Все это должно сделать ваше регулярное выражение более читабельным. На главный вопрос вашего вопроса уже должны были ответить другие:)