Hallo Kai, Roger und Liste, wieder vielen Dank für Deine Mail, Kai. [...]
Sie müssen lauten:
replace(german, " 1\\.", "erster") replace(german, " 2\\.", "zweiter")
funktioniert bei mir nur so: replace(german, "1\\.", "erster") Um mich nicht zu wiederholen, verweise ich auf meine heutige Mail an Roger, Dich und Liste, die parallell zu dieser abgeschickt wird.
replace() erwartet auch bei einem Suchstring in Anführungszeichen einen regulären Ausdruck.
Roger hat recht. Die Manpage, welche die Posix regulären Ausdrücke beschreibt, ist mittelmäßig unverständlich.
Grundsätzlich bessere Quellen hierfür sind z. B. die Dokumentation zu grep, die sed FAQ und jedes halbwegs vernünftige Perl Tutorial, wobei in der grep Doku diejenigen regulären Ausdrücke beschrieben werden, welche mit replace() funktionieren.
Für den Einstieg in die Benutzung von replace() mit regulären Ausdrücken ist für den Anfang nur wichtig, dass wenn du keine solchen Ausdrücke verwenden willst, du alle zeichen außer den Groß- und Kleinbuchstaben, dem Unterstrich und den Ziffern von 0 bis 9 einen Backslash voranstellst. :-) NB: wenn du den regulären Ausdruck in Anführungszeichen einschließt, musst du zwei Backslashes statt einem \ pro zu maskierendes Zeichen verwenden. Nimm am besten /.../ für die Suchausdrücke.
Mir als einfachem User würden da praktische Beispiele, mit denen ich experimentiern kann, hilfreicher sein.
Die Unterscheidung von Suchausdrücken in einfache Strings und reguläre Ausdrücke mit "" und // in replace() steht auf meiner Todo Liste, im Moment fehlt es nur an Zeit.
Was ist ein Todo Liste? Wo finde ich die oder hast Du Dir die selbst erstellt?
replace(german, /1[0-9]/, {0, " ter"})
Bein Eingabe dieses Befehls spricht brass nicht mehr.
Hast du die Quellen installiert, welche ich dir geschikt habe? Bei mir funktioniert es.
Ja, habe ich.
Unabhängig davon, dass diese Ersetzung Brass nicht vom sprechen abhalten sollte, ist sie trotzdem ungenügend - ich glaube, ich hatte gestern Fieber ... :-)
Kann ich verstehen, so geht es mir schon seit Tagen.... :-)
Richtiger ist:
replace(german, /(^|[^0-9])(1[0-9])\./, {2, " ter"})
Auch hier verschlägt es Brass die Sprache.... Da gibt es sicher auch eine Lösung, verweise nochmal auf meine andere Mail.... Da fällt mir zum Schluß noch etwas ein: Gibt es eine Möglichkeit die inzwischen sehr umfangreichen replace-Anweisungen in einer gesonderten Datei unterzubringen? Mein Linux-Freund hatte die Idee einer "include-Anweisung". Mit freundlichen Grüßen Jürgen