2016-03-23 12 views
-2

Ich habe ein komma-getrenntes Log-Array von gemischten Feldern, aus denen ich das 9. Feld ("-") herausnehmen möchte, vielleicht die doppelten Anführungszeichen (also nur - dann):RegEx nth unbekanntes Feld

Home_TE,-2.8,1,"-",-,-,-,1,"-",-,-,-,"-",1,-,"-","-",-,-,MIL_TT 

Hat jemand eine reine Regex-Lösung dafür?

+0

Welcher Regex-Motor? Was hast du bisher versucht und in welche Schwierigkeiten bist du geraten? Müssen wir die Möglichkeit berücksichtigen, dass (die ersten neun) in Anführungszeichen gesetzten Feldwerte selbst Kommas und/oder entkommete Anführungszeichen enthalten können? –

+0

Pure RegEx. Die 9. wäre höchstwahrscheinlich eine Zahl und die vorherigen wären entweder eine Zeichenkette oder eine Zahl, aber nicht sicher, ob zum Beispiel eine Zeichenkette im 4. oder 5. Feld erwartet wird. Seit Logeintrag glaube ich nicht, dass ein Komma Teil eines erwarteten Wertes wäre. – MimmoFu

+0

Das habe ich ausprobiert ([^,] *,) {9}, aber dafür kann ich "-" bekommen, – MimmoFu

Antwort

0

In seiner einfachsten Form:

^(?:(?:[^,]*,){8})"?([^,"]*) 

Die Erfassung Unter-Pattern, ([^,"]*), fängt das neunte Feld von doppelten Anführungszeichen abgestreift.

Wenn Sie versuchen, mehrere Zeilen auf einmal zu verbinden, benötigen Sie die Modifikatoren m (mehrzeilig) und g (global).

Fehlschlagen, wenn Kommas in einem der ersten 9 Felder eingebettet sind.

Demo: https://regex101.com/r/gM8mO5/1

Verwandte Themen