如何使用Perl regexp从纯文本中提取具有特定扩展名的特定域(可能具有可变子域)的所有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;我想知道我做错了什么,所以我可以从中学习.)