[Vienna-pm] Re: [Vienna-pm] Muster Überprüfen
Marcel Grünauer
marcel at noug.at
Tue Mar 25 03:49:51 CST 2003
Hi,
> Ich habe einen Text, in dem bestimmte Muster durch ein anderes Muster
> ersetzt werden müssen. Die möglichen Muster habe auf einem Skalar
> abgespeichert:
Ich würde mit Hilfe der hash keys eine Regex aufbauen und sie
mit \b verankern, damit nicht Teilworte ersetzt werden (also
"blau" schon, aber nicht "blaues"):
my %replace = (
gelb => 'rot',
gruen => 'lila',
blau => 'schwarz');
local $" = '|';
my @orig = join '|' => keys %replace;
while (<DATA>) {
s/\b(@orig)\b/$replace{$1}/g;
print;
}
__DATA__
der wald ist gruen, ein blaues wunder
Gelb ist die Sonne, nicht blau.
Ein anderer, recht interessanter, Ansatz ist
while (<DATA>) {
s/ gelb (?{'rot'})
| gruen (?{'lila'})
| blau (?{'schwarz'})
/$^R/gx;
print;
}
__DATA__
der wald ist gruen, ein blaues wunder
Gelb ist die Sonne, nicht blau.
Mehr explizit, da die zusammengehörigen Teile auch nahe
beieinander stehen. Siehe 'perldoc perlre' für Details.
Marcel
More information about the Vienna-pm
mailing list