全部,
我正在尝试提取混淆的JS文件中提到的所有URL。到目前为止,脚本只提取一个URL。由于混淆,所有URL都包含在一行中。 这是我用于URL提取的一段代码:
while( my $line = <$info>) {
chomp ($line); #removing the unwanted new line character
my ($uri)= $line =~ /$RE{URI}{HTTP}{-scheme=>'https?'}{-keep}/ ;
$uri=~s/[,\']//g;
print "$uri\n" if ($uri);
}
如何改进这段代码以便正确提取所有URL?这段代码可以很好地处理普通的JS文件。
答案 0 :(得分:1)
试试这个。正则表达式末尾的/g
允许它在连续的调用中从匹配跳转到匹配,跟踪它在字符串中的位置。请参阅Perl RegExpt教程“perldoc perlretut”中的“全局匹配”。
我在($re)
附近添加的括号会捕获匹配结果并将其分配给$1
。请参阅“perldoc perlretut”中的“提取匹配项”;
while( my $line = <DATA>) {
chomp ($line); #removing the unwanted new line character
my $re = $RE{URI}{HTTP}{-scheme=>'https?'}{-keep};
while ( $line =~ /($re)/g ){
my $uri = $1;
$uri=~s/[,\']//g;
print "$uri\n" if ($uri);
}
}
答案 1 :(得分:0)
while( my $line = <$info>) {
chomp ($line); #removing the unwanted new line character
my @uris = $line =~ /($RE{URI}{HTTP}{-scheme=>'https?'}{-keep})/g;
foreach my $uri (@uris) {
$uri=~s/[,\']//g;
print "$uri\n" if ($uri);
}
}