Get Regexp :: Common URI работает - PullRequest
       3

Get Regexp :: Common URI работает

1 голос
/ 08 сентября 2011

я использую pQuery для получения всех ячеек TD из таблицы, проверяя, содержит ли она действительный URL.pQuery работает нормально, давая мне содержимое всех ячеек TD.Но моя проверка Regexp :: Common, которая у меня есть от stackoverflow, не работает.

Вот мой код:

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 ]

2 голосов
/ 08 сентября 2011

Ваш контент не является HTTP URI, поэтому использование $RE{URI}{HTTP} не будет совпадать, похоже, вы пытаетесь сопоставить доменные имена, для которого вы хотите использовать use Regexp::Common qw/net/; и $RE{net}{domain}{-nospace}.

1 голос
/ 08 сентября 2011

Похоже, что RE требует http:// на передней панели.Вы можете выдумать это в своем тесте:

  if( "http://$domain" =~ /$RE{URI}{HTTP}/) {
0 голосов
/ 08 сентября 2011

"hell-world.com", а остальные не начинаются с "http://",", чего и ожидает регулярное выражение
проверьте документацию на Regexp :: Common (и связанные с ней модули) или посмотрите на само регулярное выражение:

print $RE{URI}{HTTP};

Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...