Schrift
[thread]8546[/thread]

/String+/ ersetzen mit String2 für alle /String+/ (Seite 2)

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
topeg
 2006-12-04 19:11
#72225 #72225
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Du mußt dem Regulären Ausdruck mitteilen, das auch "\n" ausgewertet werden sollen. Ansonsten bricht die regexp an einem "\n" ab. Allso muss der gesammte String als "single line" bearbeitet werden. Das ist die Option "s" allso hat man schonmal
Code: (dl )
$content =~ s!...!...!egs

Weiterhin wäre es gut, wenn du das matching ausschließt. Für "(...)" ist das "(?:...)" besser. Allso:
Code: (dl )
$content =~ s!(?:\$r->vor;\n){2,}!"vor(". @{[split(/;\n/, $&)]} .");\n"!egs

Dann kannst du auch das Matching ohne Probleme machen:
Code: (dl )
$content =~ s!((?:\$r->vor;\n){2,})!"vor(". @{[split(/;\n/, $1)]} .");\n"!egs

Zudem Frage ich mich warum das unveränderliche ";\n" matchst und hinten wieder einfügst, das ist völlig Sinnlos und kostet nur Zeit.

Dann leibt nur noch die Frage, warum du an einem funktionierenden Code was änderst und dich dann wunderst, daß es nicht mehr funktioniert. Ein wenig informieren über Reguläre Ausdrücke, solltest du dich schon. :-)
PerlProfi
 2006-12-04 19:14
#72226 #72226
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ok, jetzt ist mir alles klar, deine zweiten Klammern waren nicht in $2...

Danke nochmal.

MfG PerlProfi
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-12-03 19:54.