2017-09-18 1 views
0

Ich verwende ExamDiff, um zwei * .csv-Dateien zu vergleichen, die keine Leerzeichen nach Kommas haben. Zahlen in den Dateien enthalten zwischen 2 und 8 Dezimalstellen, aber ich möchte nur die ersten 3 Stellen nach der Dezimalzahl auswerten - alles über den tausendsten Platz hinaus ist unbedeutend.
ExamDiff können Sie Regex zu Ignorieren bestimmte Teile von Zeilen, damit ich verwende: (\d{1,4}\.), um die Nummer Zeichenfolge zu identifizieren (aber auch ignorieren, die in diesen Fällen OK ist).
Hier ist eine Beispielzeile aus der csv:Wie werte ich nur die Nachkommastellen einer Zahl aus?

VQ000009, B2, B3, VV, 12.0000,0.23,1.0000,1.0000000000,1357.421

Und hier ist die vergleichbare Linie in der neuen CSV:

VQ000009, B2, B3, VV, 12.0000,0.27,1.0009,1.0000000000,1357.431

Also, in diesem EXA mple die 0,23 und 0,27 moniert die 1,0000 und 1,0009 würde nicht Flagge und die 1357,421 und 1357,431 moniert

+0

Können Sie weitere Beispiele nennen? Nicht klar, was Sie erreichen wollen. Welche 2-3 Ziffern möchten Sie ignorieren? –

+0

@RajeevRanjan mit einem anderen Beispiel bearbeitet. – Sam

+0

'\ d {1,4} \. \ D {3}' - dieses Muster sollte helfen. Es würde nur 3 Nachkommastellen erfassen, wobei keine Nichtübereinstimmung erlaubt ist. –

Antwort

1

Die Website ist nicht klar, wie viel von der Boost-Bibliothek unterstützt wird, aber wenn die volle PCRE unterstützt wird, können Sie dies ignorieren verwenden:

(?<=\.\d{3})\d+ 

Dies sagt alle Ziffern entsprechen, die von einem . und 3 Ziffern vorangestellt sind. Beachten Sie, dass bei VQ.123456 die 456 übereinstimmen und ignoriert werden. Streu . wird Probleme verursachen.

+0

Vielen Dank; das hat perfekt funktioniert. – Sam

Verwandte Themen