我有一堆字符串,其中包含URL,我需要删除该URL并将其替换为另一个。我能想到的唯一方法就是使用split
:
($start, $url, $end) = split(/:/);
但我不认为这是正确的方法,因为如果网址位于字符串的开头或结尾,则无法正常工作。
非常感谢任何想法:)
答案 0 :(得分:6)
尝试使用URI::Find。
答案 1 :(得分:2)
已经建议的URI::Find看起来是一个不错的选择。
或者,Regexp::Common可以提供匹配网址的合适网址,例如:
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/
为例替换这两个网址。
答案 2 :(得分: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);
答案 3 :(得分:0)
如果您还有多个输入文件,并且需要在所有输入文件中一致地更改字符串,则此脚本可以派上用场: