【发布时间】:2009-06-27 18:07:51
【问题描述】:
如何使用 Perl 正则表达式从纯文本中提取具有特定扩展名的特定域(可能带有可变子域)的所有 URL?我试过了:
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";
}
它严重失败并给了我:
http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif
http://shomepage.com/woot.gif
我认为这不会发生,因为我使用的是.*?,它应该是非贪婪的并且给我最小的匹配。谁能告诉我我做错了什么? (我不想要一些超级复杂的罐装正则表达式来验证 URL;我想知道我做错了什么,以便从中吸取教训。)
【问题讨论】: