Beispiel: Bindestriche tilgen

Ein Text wurde mit harten Trennstrichen in einer Datei gespeichert. Diese harten Trennstriche sind nun zu eliminieren.

Wie erreiche ich, dass der Divis aus "Massen-speicher" entfernt wird, nicht aber aus "CD-ROM-Server" oder "Turing-Test"?

Wichtigster Hinweis sind die Kleinbuchstaben, mit denen der Teil vor dem Strich endet und der nächste beginnt. Auch wie beim vorherigen Beispiel gilt aber: Eindeutigkeit gibt es nicht in der natürlichen Sprache: "Nordrhein-westfälische" soll nicht "korrigiert" werden. Daher gib jede Ersetzung zusätzlich nach STDERR aus, so dass sie händisch rückgängig gemacht werden kann.

Ein Lösungsansatz in Perl:

#!/usr/bin/perl -w

while (<>) {
    if ($_ =~ s/(\w?\w+)-(\w+)/$1$2/g) {
	print STDERR $1, "-", $2, "\n";
    }
    print $_;
}
Es hätte gereicht, nur jeweils einen Kleinbuchstaben vor und nach dem Divis zu suchen und ersetzen. Dann wäre die Meldung der Ersetzungen wesentlich schwerer lesbar.
Zurück Weiter
Johannes Hüsing