Sven Rautenberg: regulärer Ausdruck "invertiert"

Beitrag lesen

Nochmal Moin!

Ich habe das jetzt so gemacht
$daten =~ s/.*\D(\d*°C)\D.*/$1/g;

Klar, aber das Sternchen steht für "Null oder mehr" Zeichen, also auch für garkeine Zahlen. Plus (+) wäre die richtige Wahl für "eine oder mehrere" Zahlen.

Damit ich auch mehrstellige Zahlen bekomme, allerdings weiß ich nicht, warum das nicht mit negativen Zahlen geht, wenn ich das so mache
$daten =~ s/.*\D(-?\d*°C)\D.*/$1/g;
Das sollte doch eigentlich so gehen oder?

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.

An deiner Stelle würde ich schauen, ob du den Ausdruck nicht noch etwas präziser formulieren kannst. Beispielsweise könnte es ja sein, daß immer Leerzeichen um die Gradzahl herum sind, dann nimm statt "\D" einfach " " als Trenner.

- Sven Rautenberg