我使用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。
答案 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};
保