AlexBausW: RegExp für "finde das" und "das nicht!"

Beitrag lesen

Hallo speedy,

[...]

s/##CMS:UNI:CGI:(\w+)##/$cgidata{$1}/go;
                    ^^^^^^
Wenn in dem geklammerten Bereich eben bestimmte Strings vorkommen, soll die Substitution nicht ausgeführt werden.

[...]

Ich war leider zu faul, mir eine komplexe Lösung für die RegEx auszudenken ;-), habe aber eine einfache Version anzubieten *bg*
Verlager doch Dein Problem der Überprüfung ob ersetzt werden soll oder nicht von der linken Seite auf die rechte Seite.

untested:

s/blablabla(\w+)bla/&checkword($1,$&,%cgidata)/ge;

sub checkword {
   my($word, $match, $cgidata) = @_;
   return (($word eq "unwort1" $word eq "unwort2") ? $match : %{$cgidata{$word}});
}

Oder versuchs doch mit Deiner ursprünglichen Variante ;-)
untested:
s/##CMS:UNI:CGI:(wort1wort2wort3wort4)##/$cgidata{$1}/go;

Das könnte auch funktionieren, wobei ich allerdings die erste Version präferieren würde *g*

Gruß AlexBausW