Thread Array mit allen verfügbaren Regex-Treffern
(2 answers)
Opened by deanosaurier at 2010-11-01 18:55
Tag, bin ganz neu hier, erste Bitte um Hilfe, nachdem ich mich zuletzt gegen Python und für Perl entschieden hab :D. Da hab ich auch gleich schonmal die erste Supportfrage.
Ich hatte jetzt zuletzt versucht, mir mit WWW::Mechanize ein Tool zu bauen, mit dem ich mir die Bilder einer meiner Meinung nach genialen Website auf die eigene Festplatte speichern kann. Dabei ist während des Testens jedoch ein Problem mit den regulären Ausdrücken aufgetreten, das sich auch nach Lesen von perlre oder perlretut nicht gelöst hat. Zuerst einmal das Skript Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; open(DESC, ">> desc"); my $mech = WWW::Mechanize->new(); $mech->stack_depth(0); $mech->get( 'http://epicute.icanhascheezburger.com/', ':content-file' => 'epicute.html' ); open(FILE, '< epicute.html'); my $document = ''; while (<FILE>) { $document .= $_; } foreach my $match ($document =~ m!<textarea[^>]+><a href="([^"]+)"><img src='([^']+)' title="cute food photos - (.+?)".+?</textarea>!g) { print DESC $1 . "\t" . $2 . "\t" . $3 ."\n"; } close(FILE); close(DESC); Der Inhalt von "desc" war nach Laufen dieses Skriptes (kurz gefasst) die folgende Zeile Code: (dl
)
http://epicute.icanhascheezburger.com/2010/10/28/cute-food-photos-mini-candy-apple-donuts/ http://epicute.files.wordpress.com/2010/10/aa160626-34e8-4d31-b4ce-2b0d10f6c875.jpg Mini Candy &quot;Apple&quot; Donuts geschätzte 10-mal oder so. Jetzt würde ich gerne wissen, wieso es da immer wieder nur das erste Auftreten dieser Regexp findet und nicht alle in dem Dokument vorhandenen. Falls das in dem Fall wegen HTML und so nicht so klar ist, hier vielleicht ein einfachere Frage: Code (perl): (dl
)
1 2 3 4 my $text = "Peter Pan geht sehr gerne in den Park"; foreach ($text =~ /(P\w+)/) { print "$1\n"; } Dieses Skript sollte entsprechend den folgenden Output geben: Peter Pan Park Wo liegt hierbei der Fehler? Hab ich irgendeine $-Sondervariable übersehen oder bin ich vollkommen auf dem Holzweg? Ich wäre sehr dankbar über eine Antwort, wobei es wahrlich nicht eilt, also nicht hetzen lassen ;-) Last edited: 2010-11-02 11:07:30 +0100 (CET) |