Verwenden von Regex zum Extrahieren von URLs aus einfachem Text mit Perl

Wie kann ich mit Perl regexps alle URLs einer bestimmten Domain (mit möglicherweise variablen Subdomains) mit einer bestimmten Erweiterung aus Klartext extrahieren? Ich habe versucht:

<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>

Es fällt fürchterlich aus und gibt mir:

<code>http://fail-o-tron.com/bleh omg omg omg omg omg http://homepage.com/woot.gif
http://shomepage.com/woot.gif
</code>

Ich dachte, das würde nicht passieren, weil ich benutze.*?, das sollte nicht gierig sein und mir die kleinste Übereinstimmung geben. Kann mir jemand sagen, was ich falsch mache? (Ich möchte nicht, dass URLs durch überkomplexe reguläre Ausdrücke überprüft werden. Ich möchte wissen, was ich falsch mache, damit ich daraus lernen kann.)

Antworten auf die Frage(7)

Ihre Antwort auf die Frage