2011-02-16 10 views
2

私はURLが入っている文字列がたくさんあるので、URLを削除して別のものに置き換える必要があります。私はそれを行うに考えることができる唯一の方法は、splitである:URLを文字列に置き換える - Perl

($start, $url, $end) = split(/:/); 

しかし、URLが文字列の先頭や末尾にある場合ので、私は、これはそれについて移動する正しい方法だとは思いません正しく動作しません。

任意のアイデアは大歓迎:)

+4

は、あなたがしたいものの例のカップルを供給できますストリングとは? – Tim

答えて

1

URI::URLはあなたの友達です。

#!/usr/bin/perl 
use strict; 
use URI::Split qw(uri_split uri_join); 
my ($scheme, $auth, $path, $query, $frag) = uri_split($uri); 
my $uri = uri_join($scheme, $auth, $path, $query, $frag); 
+0

URI :: SplitはURLをコンポーネントの部分に分割するためのものであり、他のテキストも含む文字列のURLを見つけるためのものではありません。 – cjm

+0

OPは他のテキストの中にURLを見つけようとしていません。元の質問には、「URLが入った文字列がたくさんある」ということだけが記載されています。与えられた例でさえ '分割'を使用しています。さて、私は問題が実際には2つの問題であることに同意します。 –

2

すでに提案されているURI::Findは良い賭けに見えます。

あるいは、Regexp::Commonは、例えば、URLを一致させるために適切なURLを提供することができる:

use Regexp::Common qw(URI); 
my $string = "Some text, http://www.google.com/search?q=foo and http://www.twitter.com/"; 
$string =~ s{$RE{URI}}{http://stackoverflow.com/}g; 

上記の例としてhttp://stackoverflow.com/と両方のURLを置き換えることになります。

0

あなたはまた、複数の入力ファイルがある、と一貫してすべての入力ファイル内の文字列を変更する必要がある場合、このスクリプトは便利になることができます。

http://unixgods.org/~tilo/replace_string/

関連する問題