Thread Array mit allen verfügbaren Regex-Treffern
(2 answers)
Opened by deanosaurier at 2010-11-01 18:55
zum zweiten beispiel:
Code (perl): (dl
)
1 2 3 4 my $text = "Peter Pan geht sehr gerne in den Park"; while ($text =~ /(P\w+)/g) { print "$1\n"; } das /g für global muss da sein, und entweder nimmst du "while" und beziehst dich dann auf $1, oder du nimmst "foreach", dann musst du aber in der schleife $_ benutzen. bei foreach wird die regex gleich alle möglichkeiten matchen und über die so erhaltene liste iterieren, wobei jedes element in $_ landet. bei while wird immer nur einmal gematcht, der match landet in $1, und in der nächsten iteration ist der nächste match dran. da du in deinem beispiel mit dem HTML foreach verwendest, hast du in den $1, $2 variablen nicht mehr das drin, was du haben willst. nimm stattdessen einfach while, dann sollte das gehn. edit: alternativ kann ich HTML::Treebuilder empfehlen, dann musst du dich mit den HTML-feinheiten gar nicht mehr rumschlagen. für das modul gibts auch einen XPath-wrapper. Last edited: 2010-11-01 19:44:03 +0100 (CET) Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |