Регулярные выражения

Помощь пользователям в работе с программой E-Trade PriceList Importer
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Изучаю. Пока читаю Джеффри филда, Регулярные выражения. Третье издание.
Вот только изучение данное, мне ни сколько не поможет понять принцип работы системы замены наименования, с учетом использования регулярных выражений, т.к. тут все не от регулярных выражений зависит, а от того, как это в данной программе реализовано. В этих регулярных выражениях в общем и целом сложного ничего нет. Все сложности обычно связаны с тем как работа с регулярными выражениями реализована в той или иной программе. А на эту тему в документации по PLI информация стремиться к нулю :-)
Вы мне напишите хоть пару примеров, использования регулярных выражений в поле "Заменить на", с кратким комментарием, того от куда информация выбирается, а дальше я сам попробую разобраться.

Кстати, на этой http://msdn.microsoft.com/ru-ru/library/43k3181w.aspx странице, написано, как то, о чем я писал постом ранее, используется в JScript.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Я все таки нашел, в чем проблема, но не смог понят с чем это связано.
Вероятно проблема в том, что я чего то недопонимаю, просьба помочь с этим разобраться.
Из основной базы, я сделал экспорт в формате "Выгрузка на сайт в формате E-Trade Series (внеш. модуль)"
Для выгрузки выбрал категорию мониторы.
Создал новую базу.
Импортировал в нее получившийся при экспорте файл.
В новой базе получилась одна категория со всеми имеющимися в ней на данный момент мониторами.
Затем настроил импорт прайса.
Сопоставление везде установил только такое: "Поиск соответствия товаров: с использованием регулярных выражений для категорий товара"
Для категории товара "Мониторы" прописал следующее регулярное выражение: (\b[a-z]{1,2}[0-9]{4}\b) в программе выглядит так:
1.jpg
1.jpg (19.72 КБ) 18868 просмотров
Смысл его я понимаю так:
В начале слова должны присутствовать от одной до двух букв латинского алфавита от "a" до "z". Сразу за ними четыре любые цифры. Эти четыре цифры должны быть расположены в конце слова.
Затем я протестировал работу регулярного выражения. Результат получился таким:
2.jpg
2.jpg (98.49 КБ) 18868 просмотров
Затем выполнил принудительное сопоставление товаров СТУС и СТИПП, результат которого виден на следующей картинке:
3.jpg
3.jpg (129.74 КБ) 18868 просмотров
В итоге получилось, что во время теста результат выражения для товара "Монитор BENQ TFT 21.5" GL2240 LED Black 1920 x 1080(16:9),250 кд/м2,1000:1,VGA,DVI,Senseye 3"
получился такой:
GL2240
а для товара "Монитор BENQ TFT 21.5" GL2240M LED Black 1920 x 1080(16:9),250 кд/м2,1000:1,VGA,DVI,M/M", поле в котором должен отображаться результат пустое! Так в общем то и должно быть. А вот при сравнении товары сопоставляются неверно.
Уважаемые разработчики, огромная к Вам просьба помочь мне понять, почему так происходит.

Возможно все дело в метасимволе "\b", который исходя из описания синтаксиса регулярных выражений на этой странице http://msdn.microsoft.com/ru-ru/library/ae5bf541.aspx - обозначает границу слова. Возможно скобок где то каких то не хватает, и/или последовательность метасимволов неверная. Всю голову себе уже сломал. Помогите пожалуйста разобраться, на конкретном примере. Допустим есть регулярное выражение ([a-z]{1,2}[0-9]{3,4}) каким образом мне нужно его модифицировать, чтобы программа понимала его следующим образом:
1. [a-z]{1,2} - это расположено в начале слова, т.е. спереди стоит пробел или ничего.
2. [0-9]{3,4} - это располагается сразу за указанным, в пункте первом, и за этим стоит либо пробел, либо ничего(т.е. конец строки)

Архив тестовой базу прикрепил к данному сообщению, прайс в стандартной папке, импорт настроен, регулярное выражение прописано, результат можно наблюдать сразу.

Кстати, результат тестирования верный.
4.jpg
4.jpg (55.69 КБ) 18868 просмотров
Вложения
PLI_TEST1_26_02_2012.rar
(997.38 КБ) 335 скачиваний
Аватара пользователя
support
Сообщения: 10563
Зарегистрирован: 09 ноя 2008 21:37

Здравствуйте. Для второго товара GL2240M регулярное выражение не срабатывает:

Изображение

У Вас не прописано условие для данного товара, так как у Вас еще есть одна буква в конце, которая должна участвовать в результате рег. выражения.

Изображение

Используемое рег. выражение (\b[a-z]{1,2}[0-9]{4}[a-z]{1,2}\b)

Изображение
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Отлично!
Теперь вопрос следующий.
Если прописать всего одно регулярное выражение (\b[a-z]{1,2}[0-9]{4}\b)
Почему в этом случае сопоставление происходит неверно?

Под это регулярное выражение товар с буквой М на конце никаким образом не подпадает.
И если бы подпадал, тогда в результатах тестирования, это было бы явно видно.

Просьба объяснить почему так происходит.
Мне нужно понимать как это работает.

Я не понимаю, почему, если прописано регулярное выражение \b[a-z]{1,2}[0-9]{4}\b
и имеются товары в СТИПП
Монитор BENQ TFT 21.5" GL2240 LED Black 1920 x 1080(16:9),250 кд/м2,1000:1,VGA,DVI,Senseye 3
Монитор BENQ TFT 21.5" GL2240M LED Black 1920 x 1080(16:9),250 кд/м2,1000:1,VGA,DVI,M/M
и в СТУС
Монитор BenQ GL2240M черный
Монитор BenQ GL2240

при автоматическом сопоставлении товару из СТУС:
Монитор BenQ GL2240M черный
сопоставляется следующий товар из СТИПП:
Монитор BENQ TFT 21.5" GL2240 LED Black 1920 x 1080(16:9),250 кд/м2,1000:1,VGA,DVI,Senseye 3

определяются то они верно с помощью регулярного выражения
1.jpg
1.jpg (46.48 КБ) 18862 просмотра
а сопоставляются неверно
Вы мне можете объяснить с чем это связано?

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

На следующей картинке, видно и прописанное регулярное выражение, и результат
2.jpg
2.jpg (77.66 КБ) 18862 просмотра
серым цветом - не сопоставленные товары
черным - сопоставленные
если нажать правой кнопкой мыши, то видим следующее
3.jpg
3.jpg (112.96 КБ) 18862 просмотра
Из чего получается, что товар "Монитор BenQ GL2240M черный" из СТУС найден на основании регулярного выражения \b[a-z]{1,2}[0-9]{4}\b
Как такое может быть, если этот товар, не подпадает под это регулярное выражение?
Аватара пользователя
support
Сообщения: 10563
Зарегистрирован: 09 ноя 2008 21:37

прикрепите прайс-лист пожалуйста.
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Прайс в архиве с базой данных, которая прикреплена к позапрошлому посту.
относительно корня получается SupplyPrices\айтион_1
на всякий случай прикрепил копию прайса к этому посту
Вложения
прайс Айтион мониторы.rar
(9.92 КБ) 277 скачиваний
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

Скорей всего проблема в том, что при сопоставлении товаров с использованием регулярных выражений, в наименовании товара ищется по "вхождению" (текст содержит) результат регулярного выражения, в данном примере ищется текст "GL2240" и "GL2240M" в товарах СТУС
regexp_test_resuls_for_GL2240_and_GL2240M.png
regexp_test_resuls_for_GL2240_and_GL2240M.png (29.51 КБ) 18861 просмотр
С уважением, поддержка ElbuzGroup.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

В новой версии программы добавим новый параметр настройки "При сопоставлении товаров на основании регулярных выражений поиск вести по словам (более точный поиск)", который будет по умолчанию включён.
С уважением, поддержка ElbuzGroup.
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

Понял, Вас! Спасибо за разъяснение.
Я думал, что регулярное выражение применяется, как к товару из СТИПП, так и к товару из СТУС, а затем происходит поиск по точному совпадению.
Получается, ошибочно думал.

В таком случае, у меня к Вам просьба помочь разобраться, почему привязка происходит неверно, даже если прописать регулярные выражения таким образом:
1.jpg
1.jpg (24.28 КБ) 18860 просмотров
Тестировал все на той же базе, архив которой прикреплен к позапрошлому посту.

Ранее я писал, что у меня все получилось, при сопоставлении с помощью такой последовательности регулярных выражений. Но пробовал я на другой базе в которой было всего 2 товара созданные вручную, на основании другого товара из СТИПП с последующей модификацией наименования. Меня терзают смутные сомненья, что получилось у меня тогда сопоставить, только потому, что в том случае товары в СТУС шли в другой последовательности, но я могу и ошибаться. В любом случае, даже при использовании вышеуказанных регулярных выражений товар сопоставляется неверно.

Товару "Монитор BenQ GL2240M черный" из СТУС
Сопоставляются оба товара "GL2240" и "GL2240M" из СТИПП
3.jpg
3.jpg (78.66 КБ) 18860 просмотров
Мне нужно добиться, чтобы в данном случае с помощью регулярных выражений вышеупомянутые товары сопоставились верно. Причем, чтобы это произошло именно в той тестовой базе. Все это мне нужно для того, чтобы использовать данный опыт в основной базе, в которой более 40 тыс. наименований и у многих товаров есть схожие ситуации.

В связи с этим прошу указать какие нужно использовать регулярные выражения и в какой последовательности, для получения верного результата.
Т.е. другими словами чтобы товар "GL2240" из СТУС сопоставился с товаром "GL2240" из СТИПП, и соответственно товар "GL2240M" из СТУС сопоставился с товаром "GL2240M" из СТИПП

С уважением и надеждой на понимание и помощь в решении этой задачи.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

Вам необходимо, чтобы производился поиск по "словам" в наименовании товара, тогда товары будут правильно сопоставляться, а сейчас поиск ведётся по вхождению слова "GL2240", это слово есть в наименовании "Монитор BenQ GL2240M черный" из СТУС, поэтому с ним происходит сопоставление товара "BenQ GL2240 Black" из СТИПП.
Я думал, что регулярное выражение применяется, как к товару из СТИПП, так и к товару из СТУС, а затем происходит поиск по точному совпадению.
Получается, ошибочно думал.
На основании СТИПП рассчитываются регулярные выражения, затем на основании этих данных ведётся поиск товаров в СТУС (на данный момент по вхождению слова).
С уважением, поддержка ElbuzGroup.
Ответить

Вернуться в «Техническая поддержка программы E-Trade PriceList Importer»