reguläre Ausdrücke: Insert-Befehl splitten

verena4

Grünschnabel
Hallo,
ich lese mehrere Inserts aus einer Datei und möchte die einzelnen Werte darin auslesen.
Bis jetzt splitte ich die Werte anhand von dem Komma.
Code:
"(?![\\d']|NULL),(?=[\\d']|NULL)"

So wird nicht in einem Wert getrennt, wenn ein Leerzeichen hinter einem Komma steht.
wie hier beim 2. Element z.B.:
Code:
['Redaktion', 'admin, asdf', 'kein', 'nein']

und es werden auch mehrere durch Komma getrennte Zahlen gesplittet, so wie hier der dritte und vierte Wert:
Code:
INSERT INTO `kunden` VALUES (0,'',3,10,'redaktion','RED',NULL)

Darin besteht jetzt auch mein Problem. Es werden auch Zahlen innerhalb zweier Hochkommas gesplittet wenn ein Komma und kein Leerzeichen dazwischen steht.
so:
Code:
,'654,321',

und es wird des letzte Hochkomma als Wert angesehen, wenn es so aussieht:
Code:
'Redaktion,Verkauf,Disposition,Produktion,'

Jetzt meine Frage, ist es möglich mit einem regulären Ausdruck nur an den Kommas zu trennen, denen
  1. kein Leerzeichen folgt also in einem Satz stehen (1. Beispiel),
  2. die zwischen Zahlen stehn die nicht zwischen Hochkommas sind (2. und 3. Beispiel) und
  3. die nicht hinter Buchstaben stehn, was in einem Insert ja nicht sein kann (4. Beispiel), außer hinter und vor NULL

Ich hätte mir jetz sowas überlegt, ist aber nur ein Entwurf:

Code:
"(?!',\\w?|NULL),(?=\\w?,'|NULL)"

so, das wars erstmal. Ich hoffe es versteht jemand, was ich meine :rolleyes: aber ich wollte es so verständlich wie möglich erklären.

Wäre nett wenn mir jemand helfen könnte.

lg

Verena
 
Zurück