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

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

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

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

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

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

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

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

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

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


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

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

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

Шаблон имени

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

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

{tmp:@[0]*}

[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]* – означает, что цифра "0" повторяется ноль (может вообще не быть) или несколько раз

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

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

[0]* – означает, что цифра "0" повторяется ноль (может вообще не быть) или несколько раз

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

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

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

[0]* – означает, что цифра "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».

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