hi!
$daten =~ s/.*\D(-?\d*°C)\D.*/$1/g;
Falsche Falle: "-" ist ein Nicht-Zahlen-Zeichen, paßt also auch
auf "\D". Und da du explizit auch null Minuszeichen erlaubst,
vorher aber explizit mindestens ein Nicht-Zahl-Zeichen forderst,
wird halt das Minuszeichen beim \D gefunden, und für "-?" bleibt
dann nur noch "" übrig.
Nein, das ist so nicht richtig. Das Problem liegt vielmehr an dem
gierigen *-Quantifier am Anfang des regulären Ausdrucks, also noch
vor dem \D. Macht man diesen Quantifier nämlich nicht-gierig, indem
man ein ? dahinter setzt, funktioniert es.
Das hängt damit zusammen, dass eben der ".*"-Teilausdruck gierig ist,
der "-?"-Teilausdruck aber nicht. Daher schnappt sich der erste Teil-
ausdruck soviel wie er kann, ohne dass es dem zweiten was ausmacht.
Aber so ganz 100%-ig korrekt ist der obige Ausdruck auch nicht. Der
kann durchaus manchmal fehlerhaft arbeiten. Besser sowas in der Art
verwenden: s/.*?(-?\d+°C).*/$1/g;
bye, Frank!