Как мне оценить только цифры после десятичной точки в числе?

Я использую ExamDiff для сравнения двух *.csv файлов, которые не имеют пробелов после запятых. Числа в файлах содержат от 2 до 8 знаков после запятой, но я хочу оценить только первые 3 цифры после запятой - все, что находится за тысячным знаком, незначительно.
ExamDiff позволяет использовать Regex, чтобы игнорировать определенные части строк, поэтому я использую: (\d{1,4}\.) идентифицировать числовую строку (но также игнорировать ее, что в этих случаях нормально).
Вот пример строки из CSV:

VQ000009, В2, В3, В.В., 12.0000,0.23,1.0000,1.0000000000,1357.421

И вот сопоставимая строка в новом CSV:

VQ000009, В2, В3, В.В., 12.0000,0.27,1.0009,1.0000000000,1357.431

Таким образом, в этом примере 0.23 и 0.27 отметят 1,0000, а отметка 1.0009 не помечает, а 1357.421 и 1357.431 отметит

1 ответ

Решение

На веб-сайте неясно, какая часть библиотеки Boost поддерживается, но если поддерживается полный PCRE, вы можете использовать это, чтобы игнорировать:

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

Это говорит о совпадении любых цифр, которым предшествует . и 3 цифры. Note that if you have something like VQ.123456 456 will match and be ignored. бездомный . will cause issues.

Другие вопросы по тегам