Весовой ШК и регулярные выражения
ШК весового товара именю вид:
2303112004187
2311936357907
2303112004187
где:
23 - префикс
[6 символов] - код товара
[4 символа] - вес товара
[1 символ] - контрольная сумма
23{Barcode:@[0-9]{6}}{Quantity:@[0-9]{1}.[0-9]{4}}{OneC:1}
написал в шаблонах вот такое регулярное выражение для распознавания товара. Но, вес товара распознается не верно!
Например:
23 031120 0418 7
Вес будет распознан как 4.187, хотя на самом деле 0,418
Сервис поддержки клиентов работает на платформе UserEcho
Для обработки таких весовых штрихкодов не нужно использовать регулярные выражения, это избыточно. Здесь достаточно добавить шаблон следующего вида:
23{Barcode:6}{Quantity:1.3}{OneC:1}
Шаблон 23{Barcode:@[0-9]{6}}{Quantity:@[0-9]{1}.[0-9]{4}}{OneC:1} для штрихкода 2303112004187 не отработает, т.к. в шаблоне ожидается строка 14 символов - 2 символа префикс + 6 код товара + 5 вес + 1 контрольная = 14.
Неправильно распознаётся вес скорее всего из-за разбора сканируемого ШК каким-то другим шаблоном, в котором Quantity захватывает 4187 вместо 0418.
Тогда мне прийдется на 5-4-3 значные Barcode добавлять тоже шаблоны и будет выглядеть это так:
23{Barcode:6}{Quantity:1.3}{OneC:1}
230{Barcode:5}{Quantity:1.3}{OneC:1}
2300{Barcode:4}{Quantity:1.3}{OneC:1}
23000{Barcode:3}{Quantity:1.3}{OneC:1}
Как показала практика это приводит к очень долгому поиску весового товара, да и выглядит откровенно костыльно.
Я немного ошибся в шаблоне с регулярным выражением, когда его печатал в вопросе:
23{Barcode:@[0-9]{6}}{Quantity:@[0-9]{1}.[0-9]{3}}{OneC:1}
Естественно, там цифра 3, забираем 3 знака.
И нет, это единственный шаблон, никакой другой шаблон не может подхватить этот ШК и вес определяется неправильно. И, к слову. в вес почему-то попадает Контрольная сумма, хотя должна отметаться.
Можно при выгрузке дополнить до 6 символов лидирующими нулями все коды короче 6 символов.
В этом виде шаблон также не работает.
Вот эта часть: {Quantity:@[0-9]{1}.[0-9]{3}} не разбирается. Можно сделать шаблон работоспособным заменив эту часть на {Quantity:1.3} - количество символов в этой части неизменно. Рабочий шаблон будет выглядеть так:23{Barcode:@[0-9]{6}}{Quantity:1.3}{OneC:1}
Но даже если он будет работать, как регулярное выражение избавит от необходимости добавлять нули в код товара? После срабатывания этот шаблон также вернёт 6 цифр, следующие после 23, в качестве Barcode.