Справка Regex - Справочник с URL - PullRequest
0 голосов
/ 15 июня 2011

У меня есть URL-адреса, подобные следующим.

<a href="http://cdn1.xyz.com/testone/2010/a.jpg">
<a href="http://cdn2.xyz.com/testtwo/2010/a.jpg">

Я хочу извлечь первую часть URL-адреса.Например: http://cdn1.xyz.com/testone или http://cdn2.xyz.com/testtwo. Какое регулярное выражение соответствует этому формату.

Спасибо.

Ответы [ 4 ]

6 голосов
/ 15 июня 2011

Если вам нужно извлечь ссылки из HTML, используйте что-то вроде HTML :: SimpleLinkExtor , чтобы обработать эту часть.

URL-адреса - это сложные вещи, которые становятся все сложнее.Используемое вами регулярное выражение неизбежно будет неверным.Вы можете использовать модуль URI, чтобы проанализировать URL-адрес и затем изменить его.

use URI;
my $uri = URI->new($url_string);

Теперь, когда у нас есть $ uri в качестве объекта, мы можем получить только часть пути и изменить ее, чтобы отрезать все, что нам нужноне хочу.

# Get the path already split into pieces
my @path = $uri->path_segments;

# Put just the first bit back, also clear the query 
$uri->path_query($path[0]);

# clear any "#foo" it might have
$uri->fragment(undef);

А теперь $ uri - это то, что вы хотите.Его строка перегружена, поэтому вы можете просто использовать $ uri в качестве строки.

2 голосов
/ 15 июня 2011
if ($string =~ m{([^:]+://[^/]+/[^/]+)}) {
  print $1;
} else {
  print 'no match';
}

Можно также попробовать это.

1 голос
/ 15 июня 2011

Не слишком хорошо, но хорошо работает

$url='<a href="http://cdn1.xyz.com/testone/2010/a.jpg">';
$url =~ m|(\w+)://([^/:]+)(:\d+)?/(.*)|;
$aa=$4;
($aa)=split('\/',$aa);
$wanted=$1.'://'.$2.'/'.$aa;
print $wanted;

Пинты http://cdn1.xyz.com/testone

1 голос
/ 15 июня 2011

Попробуйте:

$url =~ m{([^:]*://.*?\.[a-z]*?/[^/]*)/.*};

Я мог бы предложить поискать модули регулярных выражений, которые соответствуют URL-адресам. Это достаточно распространенная и иногда трудная задача, с которой некоторые пакеты, вероятно, справляются очень хорошо. Если ваши потребности действительно просты, и вы можете гарантировать простоту URL, хотя я бы не стал беспокоиться.

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