匹配Perl中不同行上的模式

时间:2017-09-25 22:10:12

标签: regex perl

我正在尝试使用此

匹配不同行上的模式
my $line = <>;

if($line =~ /hello\nthere/m){
    say "matched";
}
else{
    say "no match";
}

但是,当我使用包含此文本的文件运行程序时,它并不匹配。

hello
there

我也尝试过使用点运算符(。)和/ s修饰符。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:4)

<>只读取一行输入,除非您清除$/变量。

my $all_lines = do { local $/; <> };

然后,你可以匹配

$all_lines =~ /hello\nthere/;

不需要/m,因为它会更改^$的含义,正则表达式中没有这些含义。