Thread RegExp aus Hash bauen mit Named Matches
(2 answers)
Opened by zilpzalp at 2013-09-22 00:43
Hallo Forum,
ich möchte in einem Text automatisierte Textersetzungen mit regulären Ausdrücken machen. Dabei möchte ich die Definitionen für die Patterns in einem Hash(Ref) definieren. Außerdem benötige ich Named Matches, um innerhalb der gefundenen Textfragmente auf Teilinformationen zugreifen zu können. Ich habe mal ein exemplarisches Beispiel erstellt, wie ich mir das derzeit vorstelle: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #!/usr/bin/perl use strict; use warnings; my $text; while(<DATA>) { $text=$text.$_; } my $repl={ foo_bar => { is => "foo", by => "bar" }, MS => { is => "rock", by => "suck" }, id => { is => "\{id\}(?<id>[^\{]+)\{\/id\}", by => "ID: $+{id}" }, }; foreach my $p (keys $repl) { $text =~ s/$repl->{$p}->{'is'}/$repl->{$p}->{'by'}/g; } print $text, "\n"; __DATA__ My name is foo, yes foo. {id}1234{/id} Microsoft rocks! Problem: Leider funktioniert das mit den Named Matches ($+{id}) nicht. Die Ausgabe ist: Habt Ihr da eine Idee? Vielen Dank und viele Grüße, ziplzalp Last edited: 2013-09-22 00:47:20 +0200 (CEST) |