在Perl中,正则表达式默认是单行的。要处理多行文本,你需要使用修饰符m(多行模式)和s(单行模式)。
要在多行模式下使用正则表达式,需要在正则表达式的开头添加m修饰符。这样,.将匹配包括换行符在内的任意字符。例如:
#!/usr/bin/perl
use strict;
use warnings;
my $text = "Line 1\nLine 2\nLine 3";
if ($text =~ /^(\w+)\s+(\w+)/m) {
print "Match found: $1 $2\n";
} else {
print "No match found\n";
}
在这个例子中,我们使用了m修饰符来匹配多行文本。^和$分别匹配每行的开头和结尾,\w+匹配一个或多个单词字符。
如果你想在多行模式下使用s修饰符(将.匹配包括换行符在内的任意字符),只需在正则表达式的开头添加m修饰符即可。例如:
#!/usr/bin/perl
use strict;
use warnings;
my $text = "Line 1\nLine 2\nLine 3";
$text =~ s/foo/bar/g;
print $text;
在这个例子中,我们使用了s/foo/bar/g来替换所有出现的"foo"为"bar"。由于我们添加了m修饰符,.将匹配包括换行符在内的任意字符。