Многострочный поиск

Классические регулярные выражения использовались для поиска совпадений в пределах одной строки текста. Но поскольку Perl может работать со строками произвольной длины, шаблоны Perl так же легко совпадают в строках, разбитых на несколько логических строк. Например, следующая строка состоит из четырех логических строк:

$_ = "I'm much better\nthan Barney is\nat bowling,\nWilma.\n";


Якоря ^ и $ обычно привязываются к началу и концу всей строки. Но флаг /m также позволяет им совпадать в позициях внутренних новых строк. Таким образом, они превращаются в якоря логических, а не физических строк. В приведенном примере совпадение будет найдено:

print "Found 'wilma' at start of line\n" if /^wilma\b/im;


Многострочная замена выполняется аналогично. В следующем примере весь файл читается в одну переменную2, после чего имя файла выводится в начале каждой строки:

open FILE, $filename
or die "Can't open '$filename': $!";
my $lines = join '', <FILE>;
$lines =~ s/^/$filename: /gm;

Теги:
регулярные выражения
Добавлено: 20 Июля 2018 19:41:05 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...