regulärer Ausdruck will nicht so recht
$xNeTworKx
- perl
Hi,
Ich habe folgendes regulären Ausdruck :
$input =~ s/$1/$1\n$neuer_reply/ if $input =~ /(<posting=$postingid>.+?</posting>)/s;
Ich will also an diesen Teil <posting=$postingid>.+?</posting> noch einen Teil dranhängen, was ich dadurch versucht habe s/$1/$1\n$neuer_reply/. Das Problem ist, dass er mir den gefundenen Teil durch den neuen Teil ersetzt, und nicht dranhängt, aber warum ist das so?
Zur Info: Ein $alterteil .= $neuerteil käme nicht in Frage, da manchmal der neue Teil meistens mitten in der Skalarvariable irgendwo eingefügt werden soll, also ein splice in einem Skalar sozusagen.
$xNeTworKx.
use Mosche;
Ich habe folgendes regulären Ausdruck :
$input =~ s/$1/$1\n$neuer_reply/ if $input =~ /(<posting=$postingid>.+?</posting>)/s;Ich will also an diesen Teil <posting=$postingid>.+?</posting> noch einen Teil dranhängen, was ich dadurch versucht habe s/$1/$1\n$neuer_reply/. Das Problem ist, dass er mir den gefundenen Teil durch den neuen Teil ersetzt, und nicht dranhängt, aber warum ist das so?
Ich bin mir nicht sicher, ob das $1 auch so von rechts nach links übertragen wird. Diese Fehlerquelle wird durch folgenden Code ausgemerzt.
if ($input =~ /(<posting=$postingid>.+?</posting>)/s) {
$input =~ s/$1/$1\n$neuer_reply/;
}
Wenn das immer noch nicht geht, probier nicht mit $1 zu arbeiten, weil du nicht weisst, wann das vom zweiten Regex überschrieben wird, sondern arbeite mit eigenen Variablen
if (($blah) = $input =~ /(...)/) {
$input =~ /$blah/$blah ../;
}
use Tschoe qw(Matti);
Hallo,
Du hast Recht, es funktioniert wirklich erst wenn ich es so mache :
if ($input =~ /(<posting=$postingid>.+?</posting>)/s) {
$altes_tag = $1;
$input =~ s/$altes_tag/$altes_tag\n$neues_tag/;
}
danke,
$xNeTworKx.
Hi,
$input =~ s/$1/$1\n$neuer_reply/ if $input =~ /(<posting=$postingid>.+?</posting>)/s;
$1 im Ersetzungsausdruck steht für die erste Klammer im Suchausdruck.
Dort ist keine Klammer, also ist $1 im Ersetzungsausdruck leer.
cu,
Andreas