Использование регулярных выражений в шаблонах штрихкодов

Теги: шаблоны
Последние изменения: 06.10.2021

В шаблонах штрихкодов (номенклатуры, ячеек, палет) можно использовать регулярные выражения. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций.

В регулярных выражениях можно использовать как цифры, так и буквенные символы латинского алфавита (в верхнем и нижнем регистре).

Шаблоны штрихкода с регулярными выражениями задаются примерно такого вида:

{Позиция:@[A-D]}{Barcode:@[0-9]+}


Позиция, Barcode — в какую колонку будут сохраняться данные, найденные по этому шаблону (названия в шаблоне должны соответствовать названиям колонок, если в колонках не найдено такое название, то данные по этому названию никуда не записываются).

  • @ — означает, что после этого символа будет идти регулярное выражение;

  • [A-D] — означает буквенные символы латинского алфавита в верхнем регистре от A до D;

  • [0-9]+ — означает одна или несколько десятичных цифр (если нет знака "+" [0-9] — означает одна десятичная цифра).

Регулярное выражение используется для проверки соответствия строки шаблона 

Символ регулярного выражения

Значение выражения

Фактическая отработка в шаблонах

[\w]* 

набор символов, а не на конкретный символ

отрабатывается как +, т.е. указывается на один или несколько символов из набора

[A-D]*

[\W]*

один или более буквенных символов латинского алфавита  или десятичных цифр

поддерживается

[0-9]+

одна или несколько десятичных цифр

поддерживается

[0]/[N]

явно указанное число/буква

поддерживается

[\w]+

один или более буквенных символов латинского алфавита или десятичных цифр

поддерживается

[\W]+

любой символ, не являющийся буквой или цифрой

поддерживается

[A-Da-d]

означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D

поддерживается


Отладить и протестировать шаблоны с регулярными выражениями можно здесь http://regexstorm.net/tester.


Пример 1 | Шаблон номенклатуры с регулярными выражениями

Выгруженные данные:

Шаблон имени

Шаблон штрихкода

45{tmp:@[0]*}

{Barcode:@[\w]+}

{tmp:@[0]*}

[0]* указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр.

{Barcode:@[\w]+}

[\w]+ означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр


Сканируемые (вводимые) данные:

Штрихкоды: «04Z67», «451799067», «23GH67», «450004Е87»

Разбор по шаблону:

«04Z67» не подходит к шаблону, нет префикса 45.

 «451799067» подходит к шаблону.

 «23GH67» не подходит к шаблону, нет префикса 45.

 «450004Е87» подходит к шаблону.



Пример 2 | Шаблон номенклатуры с регулярными выражениями

Выгруженные шаблоны:

45{tmp:@[0-9]+}{Barcode:@[\w]+}

45{tmp:@[0]*}{Barcode:@[\W]+}

45{tmp:@[0]*}{Barcode:@[\w]+}

{Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+}


Где

45{tmp:@[0-9]+}{Barcode:@[\w]+}

  • [0-9]+ — означает одна или несколько десятичных цифр;

  • [\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;

45{tmp:@[0]*}{Barcode:@[\W]+}

  • [0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;

  • [\W]+ — означает любой символ, не являющийся буквой или цифрой;

45{tmp:@[0]*}{Barcode:@[\w]+}

  • [0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;

  • [\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;

{Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+}

  • [\d]{2} — означает две любые десятичные цифры;

  • [0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;

  • [\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр.

Сканируемые (вводимые) данные:   Штрихкод: «4500000023GH67»

Разбор по шаблону:

При вводе штрихкода «4500000023GH67», будет производиться поиск подходящего шаблона.

45{tmp:@[0-9]+}{Barcode:@[\w]+} - шаблон не подходит, Barcode не будет найден.


45{tmp:@[0]*}{Barcode:@[\W]+} - шаблон не подходит, Barcode не будет найден.


45{tmp:@[0]*}{Barcode:@[\w]+} - шаблон подходит



{Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+} — шаблон подходит, но он слишком общий и к нему подойдут штрихкоды с другими префиксами, состоящие из 2 цифр.


Пример 3 | Шаблон палет с регулярными выражениями

Выгруженные шаблоны:

{Позиция:@[A-D]}{Номер:@[0-9]+}

{Палета:@[A-Da-d]}{Номер:@[0-9]}

{Позиция:@[A-Da-d]}{Номер:@[0-9]+}

{Бочка:@[A-Da-d]}{Номер:3}


Где

{Позиция:@[A-D]}{Номер:@[0-9]+}

  • [A-D] — означает буквенные символы латинского алфавита в верхнем регистре от A до D, [0-9]+ - означает одна или несколько десятичных цифр;

{Палета:@[A-Da-d]}{Номер:@[0-9]}

  • [A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, [0-9] - означает одна десятичная цифра;

{Позиция:@[A-Da-d]}{Номер:@[0-9]+}

  • [A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, [0-9]+ - означает одна или несколько десятичных цифр;

{Бочка:@[A-Da-d]}{Номер:3}

  • [A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, {Номер:3} - цифры после «:» означают количество символов в параметрах.

Сканируемые (вводимые) данные:  

Штрихкод: «b123»

Разбор по шаблону:

При вводе штрихкода контейнера «b123», будет производиться поиск подходящего шаблона.

{Позиция:@[A-D]}{Номер:@[0-9]+} - шаблон не подходит, не совпадает регистр буквенного символа

{Палета:@[A-Da-d]}{Номер:@[0-9]} - шаблон не подходит, не хватает цифровых символов


{Позиция:@[A-Da-d]}{Номер:@[0-9]+} - шаблон подходит

{Бочка:@[A-Da-d]}{Номер:3} - шаблон подходит

Результат:

В данном примере подходят 2 шаблона {Позиция:@[A-Da-d]}{Номер:@[0-9]+} и {Бочка:@[A-Da-d]}{Номер:3} у них подходят как буквенные части так и цифровые.


Пример 4 | Шаблон ячеек с регулярными выражениями

Выгруженные данные:

Шаблон имени

Шаблон штрихкода

99{Стеллаж:@[A-Za-z]{3}}{Позиция:@[0-9]+}

{Стеллаж:@[A-Za-z]{3}}

[A-Za-z] означает буквенные символы латинского алфавита в верхнем и нижнем регистре

{3} означает число буквенных символов штрихкода

{Позиция:@[0-9]+}

[0-9]+ означает одна или несколько десятичных цифр



Сканируемые (вводимые) данные

Штрихкоды: «99SDF8», «99fgh786», «99WJG6R3», «99ФБУ63», «99WG6», «99WGH»

Разбор по шаблону

Ячейка «99SDF8» подходит к шаблону.

Ячейка «99fgh786» подходит к шаблону.

Ячейка «99WJG6R3» не подходит к шаблону, лишние символы.

Ячейка «99ФБУ63» не подходит к шаблону, не совпадает буквенная часть (русские буквы) в «Стеллаж».


Ячейка «99WG6» не подходит к шаблону, не хватает буквенных символов в «Стеллаж».

Ячейка «99WGH» не подходит к шаблону, нет символов «Позиция».



Результат:

В данном примере к шаблону подходят ячейки «99SDF8», «99fgh786».


Пример 5 | Шаблон ячеек с регулярными выражениями

Выгруженные данные:

Шаблон имени

Шаблон штрихкода

{Ряд:@[A-F]}{Позиция:@(0[1-9]|[1-2][0-9]|3[0-5])}{Этаж:@[1-3]

{Ряд:@[A-F]}

[A-F] означает буквенные символы латинского алфавита в верхнем регистре от A до F

{Позиция:@(0[1-9]|[1-2][0-9]|3[0-5])}

(0[1-9]|[1-2][0-9]|3[0-5]) означает число из десятичных цифр от 01 до 35

{Этаж:@[1-3]}

[1-3] означает одна из цифр от 1 до 3


Сканируемые (вводимые) данные: штрихкоды: «A93», «F352», «R213», «A362», «B154», «b282»

Разбор по шаблону

Ячейка «F352» подходит к шаблону.

Ячейка «A093» подходит к шаблону.

Ячейка «A93» не подходит к шаблону, неверно указана «Позиция», не может быть 9, необходимо вводить 09.

Ячейка «R213» не подходит к шаблону, неверно указан «Ряд».

Ячейка «A362» не подходит к шаблону, неверно указана «Позиция», превышает число 35.

Ячейка «A02» не подходит к шаблону, неверно указана «Позиция», не может быть 0.

Ячейка «B154» не подходит к шаблону, не верно указан «Этаж», не может превышать 3.

Ячейка «b282» подходит к шаблону.


Результат:

В данном примере к шаблону подходят ячейки «A093», «F352».

Обратите внимание. Какой регистр в регулярных выражениях заявлен в ШК, такой и придет обратно. Если же при сканировании используется классы CellSelectAction и функция ProcessBarcodeInt то, в действиях выбора ячейки будет убрано приведение к верхнему регистру.

Статьи по теме:

Была ли статья полезна?
Спасибо за ваш отзыв!
Отзыв
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
0/500