Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von August

SELFHTML Forumsarchiv
regulärer ausdruck link ergänzen

Informationsseite
  1. Seite (PERL) regulärer ausdruck link ergänzen von Tim, 31. 08. 2005, 12:12
nach unten

regulärer ausdruck link ergänzen

Die folgende Nachricht zum Thema stammt von: Tim, 31. 08. 2005, 12:12

hab da ein problem, möchte gerne in einem string alle inks mit "&my=24" ergänzen, mit meinem ausdruck wir aber nur der letzte ergänzt, irgendwie übersieht er das erste vorkommen von ">

$t = '<A href="http://www.test.de/cgi-bin/script/anfang.pl?ID=3">Link</A>Bla Bla<A href="http://www.test.de/cgi-bin/script/anfang.pl?ID=5">Link2</A>';

$t =~ s/(<a[ ,\n]+href=")(.*)(">)/$1$2&my=24$3/i;

print $t;
print "\n1: $1 ";
print "\n2: $2 ";

ergebnis:
<A href="http://www.test.de/cgi-bin/script/anfang.pl?ID=3">Link</A>Bla Bla<A href="http://www.test.de/cgi-bin/script/anfang.pl?ID=5&my=24">Link2</A>
1: <A href="
2: http://www.test.de/cgi-bin/script/anfang.pl?ID=3">Link</A>Bla Bla<A href="http://www.test.de/cgi-bin/script/anfang.pl?ID=5

was läuft da schief?
vielen dank.

nach obennach unten

regulärer ausdruck link ergänzen

Die folgende Nachricht zum Thema stammt von: Tim, 31. 08. 2005, 12:15

hatte das g vergessen für global, hatte ich nur für testzwecke rausgenommen, das ist NICHT der fehler...

$t =~ s/(<a[ ,\n]+href=")(.*)(">)/$1$2&my=24$3/gi;

nach obennach unten

regulärer ausdruck link ergänzen

Die folgende Nachricht zum Thema stammt von: beza1e1, 31. 08. 2005, 12:20

Perl ist standardmäßig greedy, versucht also möglichst große Blöcke für dein (.*) zu finden.
http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#Greedy

Ich kann eigentlich kein Perl, aber nach dem Link da zu urteilen musst du (.*?) statt (.*) schreiben

nach obennach unten

regulärer ausdruck link ergänzen

Die folgende Nachricht zum Thema stammt von: Tim, 31. 08. 2005, 13:02

jo, das wars vielen dank, hatte aber noch einen fehler, man solle nur bis zum " suchen und nicht bis "> kann ja sein das href noch optionen hat.

$t =~ s/(<a[ ,\n]+href=")(.*?)(")/$1$2&my=24$3/gi;

so funzt es prima.

vielen dank nochmal.


nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von August

© 1998-2006 Seite Impressum, Software: Classic Forum