Jörk Behrends: regexp Problemchen/Frage

Beitrag lesen

Hallo Günter!

---- snip ----

while($_ =~ /<(?:.*?\s+)(?:alttitle)="(.*?)"(?:.*>>)/igo) { $stringa .= "$1 " if($1); }

---- snip ---

Ich hätte da folgendes Anzubieten:
while($_ =~ /<[^>]+?\s+)(?:alttitle)="(.*?)"[^>]*>/igo) { $stringa .= "$1 " if($1); }

Hauptsächlich sollte wohl die letzte Klammer bei Dir der Übeltäter sein. Der verwendete * ist ja bekanntlich "greedy" - also äußerst gefräßig! So schnappt er sich also erstmal den Gesamten Text und gibt ihn dann Zeichen für Zeichen wieder frei, bis eine Stelle gefunden ist, an der ein > folgt ...

Probier es doch einfach mal aus. Schnellschuß bei Dir wäre dann ein ? einzubauen (?:.*?>>)

Gruß,
   Jörk