URL 使用正则表达式时被截断

URL truncated when using regex

我正在尝试从 HTTP GET 响应中提取 URL,因此必须提取类似“http://xxxxxxxxx.com”的内容。

(https?):\/\/(www\.)?[a-z0-9\.:].*?(?=\s)

但是当我得到它时,使用比方说...

$var = "http://www.google.co.uk"
print $var =~ m/(https?):\/\/(www\.)?[a-z0-9\.:].*?(?=\s)/ig; 

显示的字符串被截断,例如:“http://www.google.com”,没有别的。

为什么会这样?

使用 REGEXR 时,文本不会被剪切。

这应该有效:

my $var = "http://www.google.co.uk";
if ($var =~ m!((https?)://(www\.)?[a-z0-9.:]*)!ig)
{
    print "\n";
}

您需要删除正先行断言。

my $var = "http://www.google.co.uk";
print $var =~ m/https?:\/\/(?:www\.)?[a-z0-9\.:]\S+/ig;