Christian Kruse: Perl Funktion schreiben aber wie??

Beitrag lesen

Hoi,

"Sehr [SIE]geehrte Frau Meier[\SIE][ER]geehrter Herr Müller[\ER] wir laden Sie..." usw.
Diesen String will ich will ich nun in zwei Variablen speichern,
in Variable eins stände dann nur
"Sehr geehrte Frau Meier wir laden Sie..."

und in Variable zwei stände dann
"Sehr geehrter Herr Müller wir laden Sie..."

habt ihr ne Ahnung wie ich das bewerkstelligen kann.???

Moechtest du eine generelle Loesung? Oder eine auf dieses
Beispiel zugeschnittene?

Letzteres kann ich recht einfach liefern:

$txt =~ m!(.*)[SIE](.*)[\SIE][ER](.*)[\ER](.*)!s;

my $frau = $1.$2.$4;
my $mann = $1.$3.$4;

Naehere Infos zu dem RegEx findest du unter perldoc perlre.

Eine allgemeinere Loesung ist etwas komplexer. Generell sollte
es so laufen, dass du den String durchlaeufst und bei [ stoppst
und pruefst, ob es sich um einen Tag handelt. Wenn ja, musst du
das dazwischen auslesen und an einen String anhaengen. Wenn nein,
ignoriere es.
Das musst du allerdings in einem Binaeren Baum realisieren; du
erhaelst naemlich bei mehr als 2 Tags n^2 Moeglichkeiten.

Gruesse,
 CK