Ответ 1
Да, см. /x modifier
на странице man perlre.
Мне просто интересно, могу ли я разбить длинное регулярное выражение, которое у меня есть в моем коде Perl, чтобы оно было написано на нескольких строках? Я просто хочу, чтобы читаемость и компактность были неповрежденными для всех, кто мог бы просмотреть мой код после его завершения. Я ищу что-то похожее на то, как строки разбиваются на несколько строк в Perl. Например:
print "This is a string that is ". #1st line
"very long, so it is on 2 lines!"; #2nd line
# prints = "This is a string that is very long, so it is on 2 lines!"
Я не уверен, как это сделать с регулярным выражением, поскольку он не использует кавычки. Если я нажимаю кнопку ввода, я предполагаю, что он поместит новый символ строки в мое регулярное выражение, сделав его ошибочным. Я хотел бы сделать что-то вроде:
if($variable_1 = /abcde_abcde_abdcae_adafdf_ #1st regex line
abscd_casdf_asdfd_....asdfaf/){ #regex continued
# do something
} # regex looking for pattern = abcde_abcde_abdcae_adafdf_abscd_casdf_asdfd_....asdfaf
Да, см. /x modifier
на странице man perlre.
На странице руководства perlre (1) говорится:
Модификатору "/x" нужно немного больше объяснений. Он сообщает анализатор регулярных выражений, чтобы игнорировать большинство пробелов, которые не являются назад или в классе символов. Вы можете использовать это, чтобы разбить ваше регулярное выражение в (слегка) более читаемые части.
Вы можете использовать это для создания многострочных выражений. Например:
/
abcde_abcde_abdcae_adafdf_ # Have some comments, too.
abscd_casdf_asdfd_....asdfaf # Here your second line.
/x
Если ваше совпадение будет содержать пробелы, вы должны сделать их явными в своем регулярном выражении при использовании модификатора /x. Например, /foo bar baz quux/x
не будет соответствовать строке, разделенной пробелом, как вы могли бы ожидать. Вместо этого вам нужно что-то вроде следующего:
print "true\n" if
/
foo
\s+ # You need explicit spaces...
bar
\s+ # because the modifier will...
baz
\s+ # otherwise ignore literal spaces.
quux
/x;
Используйте символ +
. Вот пример:
push @steps, $steps[-1] +
$radial_velocity * $elapsed_time +
$orbital_velocity * ($phase + $phase_shift) -
$DRAG_COEFF * $altitude;