2016-06-30 17 views
2

Ich werde eine TXT-Datei reparieren, die etwa 200.000 Datensatz speichern Jeder Datensatz sollte aus 8 Spalten durch Kommata getrennt bestehen.Platzhalter ersetzen mit Notepad ++

Einige Daten sind jedoch beschädigt, was zu einem zusätzlichen Komma führt. Ich muss das zusätzliche Komma loswerden, das wahrscheinlich in der 3. Spalte passiert.

5180,1103131373, Guten Tag, ABC, 12,34,75484,7/1/2014 12:00:00, < --- Korrektes Format 5180,1103131373, Gut, Tag, ABC, 12,34,75484,7/1/2014 12:00:00 Uhr, < - Falsch

dh in diesem Beispiel sollte Good Day sein Speichern Sie in einer Spalte statt in zwei.

ich kann sie durch regulären Ausdruck finden (.*,.*,.*),(.*,.*,.*,.*,.*,.*,) aber wenn ich versuche, das zusätzliche Komma \1\2 zu ersetzen, werden einige Datensätze

Jeder Eingang fehlt, ist willkommen. Danke im Voraus.

+1

Ersetzen Sie '. *' Durch '[^, \ r \ n] *' und fügen Sie beim Start des Patterns ein '^' hinzu. –

+0

BTW, wird es nicht besser sein, Inhalt der 3. Spalte in Anführungszeichen zu kapseln, anstatt das Komma zu entfernen? 'Gut, Tag' → '" Gut, Tag "' – miroxlav

+0

Danke Wiktor Stribiżew. Das Problem mit der Regex gelöst: (^ [^, \ r \ n] *, [^, \ r \ n] *, [^, \ r \ n] *), (^ [^, \ r \ n] *, [^, \ r \ n] *, [^, \ r \ n] *, [^, \ r \ n] *, [^, \ r \ n] *, [^, \ r \ n] *,) ersetzt durch \ 1 \ 2 – JnJ

Antwort

0

Sie sollten .* durch [^,\r\n]* ersetzen und einen ^ zum Start des Musters hinzufügen.

Verwenden

^([^,\r\n]*,[^,\r\n]*,[^,\r\n]*),([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r‌​\n]*,[^,\r\n]*,) 

und durch \1\2 ersetzt.

Die negierte Zeichenklasse [^,\r\n] entspricht einem beliebigen Zeichen außer ,, CR und LF Symbolen. \1 ist eine Rückreferenz auf den Wert in Gruppe 1 (([^,\r\n]*,[^,\r\n]*,[^,\r\n]*)) und \2 ist eine Rückreferenz auf den Wert in Gruppe 2 (([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r‌​\n]*,[^,\r\n]*,)).