我有一个变量,其中包含大约100行。我需要打印有网址的行。
$string = "this is just a test line 1
this is a test line 2
http://somelink1
this is line 4
http://link2
...
...
我只需要打印网址链接。
如何从$ string打印匹配模式的所有行。试过下面的代码。
my $resu =~ /(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ;,./?%&=]*)?/, $string;
print $resu;
答案 0 :(得分:1)
您需要使用/g
Modifier来匹配多行:
use strict;
use warnings;
my $string = <<'END_STR';
this is just a test line 1
this is a test line 2
http://somelink1
this is line 4
http://link2
...
...
END_STR
while ($string =~ m{(.*http://.*)}g) {
print "$1\n";
}
输出:
http://somelink1
http://link2
但是,如果你从文件中提取这些数据,你最好只是逐行阅读文件:
while (<$fh>) {
print if m{(.*http://.*)}g;
}