Thread Nur einen Buchstaben in Buchstabenkombination ersetzen (15 answers)
Opened by Gast at 2012-11-17 17:22

Gast Gast
 2012-11-17 17:22
#163349 #163349
Hallo Leute,

ich hoffe, hier kann mir jemand helfen.

Es geht um das Folgende:
Ich habe ein Wort (nehmen wir hier einfach mal 'atan') und die Bedingung "t/d/a_a" (beides vom Benutzer angegeben). Bedeutet, dass ein im Wort vorhandenes "t" zu "d" wird, wenn es zwischen zwei "a"s steht (der Unterstrich in dem Stück nach dem zweiten Slash ist also der Buchstabe vor dem ersten Slash). Ich erstelle also eine Bedingung für einen regulären Ausdruck, die den Unterstrich durch das erste Zeichen ersetzt (also "a_a" --> "ata"). Der einzusetzende String ist dasselbe, diesmal nur mit dem Zeichen zwischen den beiden Slashes (also "ada").
Jetzt setze ich beides in einen regulären Ausdruck ($wort =~ s/ata/ada/). Soweit ist es eigentlich nicht problematisch.

Wenn ich jetzt aber das ganze so formuliere "t/d/[aeiou]_[aeiou]/" (d.h. "t" wird zu "d" zwischen Vokalen), dann krieg ich ein Problem. Nehmen wir ein anderes Wort wie z.B. 'etis'. Der im Wort zu suchende String ist also "[aeiou]t[aeiou]". Jetzt möchte ich aber, dass der ersetzende String genau dieselben Vokale beinhaltet wie der zu ersetzende. Hier würde in dem Wort also "eti" gefunden werden, aber wie mach ich es nun, dass der ersetzende String "edi" lautet, also im Prinzip nur den einen Buchstaben austauscht. Ich kann ja nicht schreiben "$wort =~ s/[aeiou]t[aeiou]/[aeiou]d[aeiou]/".

Ich hoffe, das war einigermaßen verständlich. Danke schon mal für die Hilfe.

PS: Bin übrigens noch nicht lange dabei mit Perl :P
Last edited: 2012-11-17 17:49:54 +0100 (CET)

View full thread Nur einen Buchstaben in Buchstabenkombination ersetzen