Не определяется число по шаблону регулярного выражения

Был создан шаблон регулярного выражения, который определял сумму. В одном из документов почему то выбиралось другое число. Решил сократить объем выборки. Если раньше было чисел 20, стало 3. И все равно не находило нужное мне число. Тогда я решил просто удалить первые два числа, так как мне нужно только последнее. И все равно программа не определяет. Ниже исходный текст. Шаблон такой: \b\d*\s\d*\s\d*,\d\d. Мне нужна сумма 7 275 718, 01, а программа выводит 16 337 221,98. Далее я удалил предыдущие числа.

	"учетом НДС undefined undefined 7 275 718,01 \r\n ------- \r\n \r\n \r\n \r\n "

Screenshot_12

1 Симпатия

@Swatlprus, сделайте, пожалуйста, набор тестовых данных, где-то 3-4 штуки. Можете сделать даже что-то вроде таблицы: “вход” - “регулярка” - “результат”.
И, конечно, скриншот программы пришлите, где Вы задаете регулярное выражение.

Первый (корректно)

Исходные данные: "учетом НДС 6 499 630,57 6 499 630,57 6 499 630,57 \r\n \r\n \r\n \r\n Госуд а рствен н ы й за казч и к ду * \r\n "
Регулярка: \b\d*\s\d*\s\d*,\d\d\b
Результат: 6 499 630,57

Второй (корректно)

Исходные данные: "учетом НДС 9 061 503,97 9 061 503,97 2 561 873,40 \r\n \r\n а ’1 с л \r\n уЧРЕ* \r\n \r\n Государственный заказчик: гроителыству и реконструкции \r\n \r\n "
Регулярка: \b\d*\s\d*\s\d*,\d\d\b
Результат: 2 561 873,40

Третий (некорректно)

Исходные данные: "учетом НДС 16 337 221,98 16 337 221,98 7 275 718,01 \r\n ------- \r\n \r\n \r\n \r\n Государственный заказчик \r\n "
Регулярка: \b\d*\s\d*\s\d*,\d\d\b
Результат: 16 337 221,98
Должно быть: 7 275 718,01

Спасибо, поизучаем, ответим, как будут результаты.

Здравствуйте, Ринат!
Воспроизвёл ситуацию с вашими исходными данными у себя. Получилось определить необходимое число. Проверьте у себя, пожалуйста. Если проблема останется актуальной - пришлите видео на котором отражена работа алгоритма.

Решил проблему другим образом, из исходного файла удалил 2 числа и осталось одно. Но все равно не определялось. Пришлось упростить шаблон поиска и только после этого нашлось число.

Сделал также, как вы на скриншоте, тоже все работает. Предполагаю, что Abbyy как то корявенько выдает исходный текст и поэтому не определяет.

В продолжении темы. После использования функции match и перевода массива в строку с помощью функции join, получается строка (Или нет?). Решил поискать пробелы используя indexOf и lastIndexOf, выдает результат -1. Значит пробелов нет. Если же просто задать переменной какой либо текст, то пробелы находятся. Значит программа в первом случае выдает мне результат либо в другой кодировке, либо в каком-то непонятном типе данных.

Пытались заменить через цикл и потом еще через replace все пробелы и ничего.

var ocr = [{"language":"ru","location":{"height":25,"width":27,"x":46,"y":7},"text":"16"},{"language":"ru","location":{"height":25,"width":39,"x":84,"y":7},"text":"337"},{"language":"ru","location":{"height":25,"width":75,"x":134,"y":8},"text":"221,98"},{"language":"ru","location":{"height":23,"width":29,"x":245,"y":10},"text":"16"},{"language":"ru","location":{"height":23,"width":38,"x":285,"y":10},"text":"337"},{"language":"ru","location":{"height":23,"width":73,"x":335,"y":10},"text":"221,98"},{"language":"ru","location":{"height":24,"width":16,"x":521,"y":9},"text":"7"},{"language":"ru","location":{"height":24,"width":36,"x":548,"y":9},"text":"275"},{"language":"ru","location":{"height":24,"width":75,"x":595,"y":8},"text":"718,01"}]

var text = ocr.reduce((acc, el) => {
    return acc += el.text + ' '
}, "")


var m = text.match(/((\d+\s))+(\d+,\d+)/g)

result = m[2]

console.log(result)

/// end

Вот ваша регулярка и результат
в переменной ocr результат работы Яндекс ОЦР (с вашей картинки)

Спасибо, но мысль, которую я хотел донести, что если использовать просто JS, без Electroneek, то все отлично работает. Все находит, все пробелы меняются и.т.д. Проблема именно в взаимодействии JS и Electroneek.

Ничего не меняется. Вас смутило console.log?

Просто добавьте необходимые проверки

if(m) {
и всё такое…

Ну хорошо, для наглядности:

А почему тогда не находит пробелы через indexOf и lastIndexOf?

находит. Только зачем?

Я имел в виду, в моем алгоритме

Потому что неправильно
gc_summ есть массив строк и, как я вижу, в этом массиве нет ни одной строки ’ ’ (пробел)

Неудивительно, что gc_summ.indexOf(’ ') выдаст -1

gc_summ.indexOf(‘29 715 687,39’) законно выдаст индекс 0

e.g. [‘1 23’, ’ ‘, ‘4 5 6’].indexOf(’ ') выдаст 1

Вы, наверное, подразумевали ‘29 715 687,39’,indexOf(’ ')
тогда индекс = 2

Понял. Перевел в строку, меняю через replace, таким образом str.replace(’ ', ‘’) Должен найти первый пробел и заменить, ничего не меняет. Пробую через регулярку str.replace(/ /, ‘’). Ничего не меняет. Пробую по-другому str.replace(/ /g, ‘’)/. Меняет все пробелы

наверняка где-то ошибка или опечатка. Внимательнее надо.
Что в str?

‘a s d’.replace(’ ', ‘’) => ‘as d’ без вариантов

В строке число " 232 214 123,03"

Ведущие пробелы убираются проще: str.trim()
Хотя replace тоже работает