Использование регулярных выражений для извлечения URL-адресов из простого текста с помощью Perl
Как я могу использовать регулярные выражения Perl для извлечения всех URL-адресов определенного домена (возможно с переменными поддоменами) с определенным расширением из простого текста? Я пытался:
<code>my $stuff = 'omg http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif dfgdfg http://shomepage.com/woot.gif aaa'; while($stuff =~ m/(http\:\/\/.*?homepage.com\/.*?\.gif)/gmsi) { print $1."\n"; } </code>
Это ужасно терпит неудачу и дает мне:
<code>http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif http://shomepage.com/woot.gif </code>
Я думал, что этого не произойдет, потому что я использую.*?
, который должен быть не жадным и дать мне наименьшее совпадение. Может кто-нибудь сказать мне, что я делаю не так? (Я не хочу, чтобы какое-то сверхсложное, регулярное выражение проверяло URL; я хочу знать, что я делаю неправильно, чтобы я мог извлечь из этого уроки.)