2012-03-15 13 views
0

すべて、難読化されたJSファイルからURLを抽出します。

難読化されたJSファイルに記載されているすべてのURLを抽出しようとしています。これまでのところ、スクリプトはURLを1つだけ抽出します。すべてのURLは、難読化のために1行に含まれています。ここ は、私が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); 
} 

は、どのように私は、コードのこの部分を改善することができますか?このコードは、通常のJSファイルとうまく機能します。

答えて

1

これを試してください。正規表現の末尾にある/gは、連続した呼び出しで一致から一致にジャンプし、それが進むにつれて文字列内の位置を追跡します。 Perl RegExptチュートリアルの "perldoc perlretut"の "Global matching"を参照してください。

括弧を付け加えて($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); 
      } 
} 
+0

作品!ありがとう@ケビン – smokinguns

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); 
    } 
} 
関連する問題