获取Regexp :: Common URI

时间:2011-09-08 16:03:52

标签: regex perl url

我使用pQuery从表中获取所有TD单元格,检查它是否包含有效的URL。 pQuery工作正常,给我所有TD单元格的内容。 但是我从Stackoverflow获得的Regexp :: Common检查无效。

继承我的代码:

use Regexp::Common qw/URI/;
use pQuery;

pQuery( $url)
->find( "table")
->find( "tr")
->find( "td")
->each( sub {
  my $domain = pQuery( $_)->text;
  if( $domain =~ /$RE{URI}{HTTP}/) {
    print "OK\n";
  }
});

变量$ domain包含TD单元格的内容,其中一些包含域名。 它们看起来都像“hello-world.com”或“www.test.net”。 文本“确定”不会打印出来。这里有什么不对? 是因为域名采用上述格式吗?没有HTTP,没有WWW。我想简单检查文本是否是有效的URL。

3 个答案:

答案 0 :(得分:2)

您的内容不是HTTP URI,因此使用$RE{URI}{HTTP}将无法匹配,看起来您尝试匹配域名,因为您要使用use Regexp::Common qw/net/;$RE{net}{domain}{-nospace}

答案 1 :(得分:1)

看起来RE需要前面的http://。你可以在测试中捏造它:

  if( "http://$domain" =~ /$RE{URI}{HTTP}/) {

答案 2 :(得分:0)

“hell-world.com”,其余部分不以“http://”开头,这正是正则表达式所期望的 检查Regexp :: Common(及其相关模块)的文档,或查看正则表达式本身:

print $RE{URI}{HTTP};