Uwe: Punkt gegen Komma tauschen mit Nebenbedingungen

Beitrag lesen

Hallo seth

Vielen Dank für die Antworten.

mir ist noch was eingefallen: "\G" wird hier gar nicht mehr benoetigt, weil vermoege "?!" ja mit _zero_-_length_ gematcht wird.

Aha. Ich habe mir die Funktion von "\G" angeschaut und mich gefragt, wofür das in diesem konkreten Fall notwendig ist. Aber jetzt weiß ich, wie ich die Suche an einer Stelle fortsetzen kann.

also:
$test=~s/((?:^|[ +-])\d+)\.(\d+)(?!\d|\.\d)/$1,$2/g;
oder
$test=~s/(?<![^ +-])(\d+)\.(\d+)(?!\d|\.\d)/$1,$2/g;

Ich habe mir meine Datenstruktur noch einmal genau angeschaut und festgestellt, dass vor und nach der Zahlen/Punk(e)-Folgen niemals ein Punkt oder Komma steht. Daher habe ich deine Lösung etwas abgewandelt und benutze jetzt folgendes:
$test=~ s/((?:[^\d,.])\d+)\.(\d+)(?!\d|\.\d)/$1,$2/g;
Funktioniert einwandfrei und macht genau dass, was es soll. Mit anderen Worten: Problem gelöst :-)

Viele Grüße

Uwe