2016-07-20 9 views
-2

Ich erhalte derzeit Daten mit. NET-Version von Regex (mit Expresso), und ich habe einige Code, der für viele Spalten funktioniert, aber nicht in einigen. Ich glaube, das Problem ist, dass eine der Anfang Spalten in einigen Fällen leer:Wie kann ich eine bestimmte Datenspalte mit .Net Regex erfassen, wenn einige Spalten leer sind?

A B C D E F G H I J K L M N O P Q R S T 
USER 1 USER 2 USER 3 USER 4 USER 5 General General General General M.O.L.E.(r) M.O.L.E.(r) Oven Oven Oven AMB Oven AMB Oven AMB 
one 14 Zone 14 Zone 14 Zone 14 Zone 14 Zone 14 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 15 Zone 16 Zone 16 Zone 16 Zone 16 Zone 16 Zone 16 
All All All All All All All All All All All All All All 
Pass (Overnrider) NJH 12/7/2015     SMG20-27527 (OvenRider) 12/07/2015 07:59:16 OR_FCT_ENTRY_000561 34.0 4.863 15 101.17 24.4 23.9 
Pass (Rework) NJH 11/25/2015     SMG20-27641 (Rework) 11/25/2015 11:46:43 OR_FCT_ENTRY_000560 31.0 4.863 15 100.60 21.7 21.1 
Passed (Rework Mole) RH 11/17/2015     SMG20-27641 (Rework) 11/17/2015 18:35:48 OR_FCT_ENTRY_000558 33.0 4.893 15 100.60 23.3 
Pass (Overnrider) NJH 12/7/2015     SMG20-27527 (OvenRider) 12/07/2015 07:59:16 OR_FCT_ENTRY_000561 34.0 4.863 15 101.17 24.4 23.9 
Pass (Rework) NJH 11/25/2015     SMG20-27641 (Rework) 11/25/2015 11:46:43 OR_FCT_ENTRY_000560 31.0 4.863 15 100.60 21.7 21.1 
Passed (Rework Mole) RH 11/17/2015     SMG20-27641 (Rework) 11/17/2015 18:35:48 OR_FCT_ENTRY_000558 33.0 4.893 15 100.60 23.3 

die Regex ich derzeit benutze ist:

^(?:([^\s\n]+)\s+){13} 

und das Ergebnis ist:

101.17 
100.6 
15 
100.6 
4.893 

Wie kann ich sicherstellen, dass die Daten, die ich aufnehme, immer in der Zeile 100.XX sind, wie unten (Zeile H)?

101.17 
100.6 
101.7 
100.6 
100.6 

FYI dies aus Excel in einem Notizblock doc gezogen wird ...

+0

Sie sollten wenn möglich direkt aus der Excel-Datei lesen. Wenn nicht, wird Ihr Leben viel einfacher, wenn Sie das Excel-Blatt als CSV-Datei speichern oder exportieren. Wenn dies nicht gelingt, versuchen Sie, einen Texteditor wie Notepad ++ (oder was auch immer) zu verwenden, um Kommas einzufügen (ersetzen Sie "Tab" -Zeichen durch "Tab",), oder fügen Sie einfach ein Trennzeichen (',', ';', '|') an , was auch immer) zu jeder Spalte vor dem Kopieren. – brichins

+0

Es scheint, dass Sie Tab-getrennte Werte haben. Wie wäre es mit dem Aufteilen auf Registerkarten und dem Abrufen der gewünschten Spalte? – Mariano

+0

@Mariano sie sind Tab getrennt, aber wenn ein paar Zeilen Daten in Spalte "A" haben, und einige nicht, würde das nicht meine Aufnahme versauen? – Gerald1

Antwort

0

Es ist nicht, dass es leere Spalten, ist es, dass einige der Spalten Leerzeichen enthalten kann. Insbesondere soll (Rework Mole) ein Feld sein, aber Ihr Regex behandelt es als zwei. Sie müssen nach einem von zwei Dingen suchen: einem Feld in Klammern oder einer Folge von Leerzeichen. Diese Regex liefert die gewünschten Ergebnisse:

^(?:(\([^()]+\)|\S+) +){13} 

Beachten Sie, dass \s Matches alle Arten von Leerzeichen, einschließlich Zeilenumbrüchen. Die Trennzeichen sind nur Leerzeichen. Es ist daher am besten, nur diese Trennzeichen zu verwenden.

Verwandte Themen