我正在执行以下操作以将URL的相关部分保存到Perl变量:
($url) = $url =~ m! (.+?\w) (?: /|\z) !x;
($url) = $url =~ /\/\/(.*)/;
我正在尝试在“http(s |)://”和下一个“/”之间保存所有内容。有没有更好的方法在一行上做到这一点?
答案 0 :(得分:4)
使用URI
use URI;
my $uri = URI->new('http://www.stackoverflow.com/questions');
say $uri->host;
say $uri->host_port;
输出:
www.stackoverflow.com
www.stackoverflow.com:80
答案 1 :(得分:1)
使用此正则表达式::\/\/([^\/]+)\/
示例:
#!/usr/bin/perl
$url = 'http://stackoverflow.com/questions/';
$url =~ /:\/\/([^\/]+)\//;
print $1."\n";
答案 2 :(得分:1)
URI.pm很好,但你并不总是需要开销。
my ($host_port) = $uri =~ m{ ^ https? :// ([^/]*) }xi;
或者如果您只是想要主持人,
my ($host) = $uri =~ m{ ^ https? :// ([^/:]*) }xi;