Jörk Behrends: String splitten

Beitrag lesen

Hallo auch!

leider können aber auch Leerzeichen, Zahlen und sonst alles vorkommen, man müsste von hinten z.B. 345,00 DM absplitten, also DM-Leerstelle-Zahlenbetrag bis zur ersten Leerstelle. Aber wie formuliere ich da die verdammten regulären Ausdrücke ?

Das folgende tut zumindest mal:

#! perl

$String = "Bezeichnung aus 2 Zahlen und 123 Buchstaben zu 1234,34 DM";
$String =~ /(.*)( \d*,\d\d DM)/;
$Bezeichnung = $1;
$Preis = $2;
print "Bezeichnung = $Bezeichnung\nPreis = $Preis";

Voraussetzung dabei ist, dass der Preis immer am Ende steht und immer mit DM endet (kann man evtl. noch etwas verfeinern, in dem man fuer DM auch Wildcards einsetzt, dann aber muss ein § ans Ende, damit klar ist, dass die letzten Zeichen des Strings gemeint sind)

Das mit der Voraussetzung stimmt so nicht! Wenn dieses Script auf einen String wie
"Bezeichnung aus 2 Zahlen und 123 Buchstaben zu 1234,34 DM und so weiter"
angesetzt wird, dann bekommen wir auch als Preis: "1234,34 DM". Ein enfaches "$" am Ende
der regular-expression würde dies dann ausschalten. Man könnte sich jetzt höchstens noch Gedanken machen, ob die Zahlwerte auch anders aussehen können ... ach ja, der Txt " DM" sollte ja weg fallen.

$String = "Bezeichnung aus 2 Zahlen und 123 Buchstaben zu 1.234,34 DM";
($Bezeichnung, $Preis) = ($String =~ /(.*)\s([\d.]+(?:,\d\d?)?) DM/);
print "Bezeichnung = $Bezeichnung\nPreis = $Preis";

Schade eigentlich, daß sowas immer zum Wochenende hin hier auftacht :(

ciao,
   Jörk