Hallo Roland M. Kruggel, hallo auch an alle anderen Dienstag, 20. Juni 2006 15:58 - Roland M. Kruggel wrote: > > > Gemeinsamkeiten der Decimalfelder: > > > * nur zahlen > > > * beliebige Vorkomma-Stellen > > > * eine oder zwei Nachkommastellen > > > * am ende immer ein '|' > > > * immer ein Punkt als Dezimalzeichen > > > > vim: > > :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g > > Megagei..... :) > Ich frage jetzt nicht nach dem Wie. Hut ab, Michael. > Danke.
Vorsicht! Nicht ungetestet übernehmen. 1. Viele RegExp-Dialekte interpretieren \( bzw \) als das jeweilige Klammerzeichen. Die Klammer zum Gruppieren darf dann nicht hinter einem Backslash stehen. 2. Zur Erklärung (muss man sich mal mit befassen, ist gar nicht soo schwer): s bedeutet: Tausche das, was nach dem nächsten Delimiter (hier: "/") steht, gegen das, was nach dem 2. Delimiter steht. Das g hinter dem 3. Delimiter heißt, dass das ganze global erfolgen soll. Im ersten Bereich steht eine Klammer zur Gruppierung und in der Klammer das \d für ein Digit (Ziffer 0..9) und das + danach für mind. 1 Mal. Danach folgt ein Punkt (mit einem vorangestellten Backslash, sonst steht er für ein beliebiges Zeichen). Danach folgt eine zweite Klammergruppierung, in der ein Digit oder (dargestellt durch "|") zwei Digits stehen können, gefolgt von dem "|" als dein Datenbankdelimiter. Jede Zeichenfolge, auf die diese Beschreibung zutrifft (mind. 1 Ziffer, dann ein Punkt, dann 1 oder 2 Ziffern und das "|"), wird nun durch das Folgende ersetzt (steht nach dem zweiten /): \1 schreibt alles, auf das die erste Klammergruppierung passte. Danach kommt das Komma und dann mit \2 alles, auf das die 2. Klammergruppierung zutraf. Ich hoffe, du findest mit dieser kleinen Beschreibung Gefallen an der Mächtigkeit Regulärer Ausdrücke ;-) Eine Alternative (aber auch ohne Gewähr, bitte vorher testen) findest du in meiner anderen Mail. -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.