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

Здесь хранятся старые темы.
Flagman
Сообщения: 41
Зарегистрирован: 13 авг 2009 20:37

21 авг 2009 12:55

Хочется иметь настройку алгоритма обработки строк в списке регулярных выражений. логическое ИЛИ не всегда применимо. мне лично нужно чтобы все строки обрабатывались как логическое И. В пять столбцов вписать их не всегда удается. Бывает что нужно не только серийник выдернуть, но и тип порта (USB,COM,FireWire,BlueTooth) тип упаковки (OEM, BOX, RETAIL) и еще несколько вещей которые рознят товары при одинаковом серийнике.
я изначально об этом просил, когда только завел тему о внедрении регулярных выражений.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

21 авг 2009 13:43

Приведите пожалуйста пример названия товаров, где необходимо использовать более пяти регулярных выражений для идентификации товара.
С уважением, поддержка ElbuzGroup.
Flagman
Сообщения: 41
Зарегистрирован: 13 авг 2009 20:37

21 авг 2009 14:27

легко. все дело в любви поставщиков писать модели в разных форматах. кто то через дефис пишет, кто то через пробел, кто то без разделителей вовсе.
а в некоторых категориях (например блоки питания для компьютеров) встречаются серийники вида ххх.хххх.ххх на ряду с моделью вида ххх-ххх
все это разнообразие в пять столбцов не уложить.
Блок питания Antec Basiq [BP500U] 500W ATX (24+4+6пин) (065009)
Блок питания Antec [NeoPower 650 Blue] 650W ATX (24+8+4+6/8+6пин) Cable Management (056502)
Блок питания Antec EarthWatts [EA-430] 430W ATX (24+4+6пин) (046435)
Блок питания Zalman ZM-500HP [Black] 500W ATX (24+2x4+2x6пин) Cable Management
Блок питания IKONIK Vulcan [IP-IK00A-AAAA] 1000W ATX Black (24+2х4+8+6x8/6пин) Cable Management
Блок питания Cooler Master RS-620-ASAA-A1 620W ATX(24+8+4+2x6пин)
Блок питания Chieftec [CFT.750.14CS Black/Blue 750W ATX (24+8+4+2x8/6+2x6пин) Cable Management


во вторых дело в удобстве. мне лично удобнее отдельно описывать выражения для серийников, отдельно для портов и пр. а получается что находится совпадение по порту и товар радостно сопоставляется с соседом только потому, что оба USB ))))

p.s. только не надо делать шесть столбцов.. сделайте по человечески, а?
я бы вообще предпочел бы в самой верхней категории сделать список всех возможных видов выражений по всем вариациям серийников и моделей, затем размножить их по подкатегориям и забыть как страшный сон прописывание выражений по каждой категории.
RadLast
Сообщения: 7
Зарегистрирован: 04 авг 2009 19:01

21 авг 2009 16:01

Мне непонятно зачем все это пихать в рег выражения? К тому же приведен не совсем удачный пример, надо было привести похожие товары, например
Блок питания IKONIK Vulcan [IP-IK00A-AAAA] 1000W ATX Black (24+2х4+8+6x8/6пин) Cable Management
Блок питания IKONIK Vulcan [IP-IK00A-AAAA] 1000W ATX Blue (24+2х4+8+6x8/6пин) Cable Management
тогда будет видно о чем речь. Честно говоря я впервые слышу о том чтобы к одинаковому серийнику было стоко различий, достаточно добавить OEM, BOX, RETAIL и все. А USB,COM,FireWire,BlueTooth это уже идет как разный товар и пишется с разными серийниками. Но все равно все случаи не предусмотришь, рано или поздно поменяют в прайсе так, что ничего работать не будет.
Flagman
Сообщения: 41
Зарегистрирован: 13 авг 2009 20:37

25 авг 2009 00:06

Разные форматы записи серийников в одном разделе товаров. Что тут непонятного?
Вопрос актуален.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

25 авг 2009 10:14

Опишите алгоритм работы для поиска соответствия товаров. Например есть 1 товар в уч. системе и 1 товар из прайс-листа поставщика, а также список рег. выражений для идентификации этого товара, как это будет работать ?

Например названия товаров в прайсах поставщиков:
1. APC BACK-UPS 650VA 230
2. Back-UPS CS 650VA/400W 230V, DSL, fax, or modem protection Port DB-9 RS-232, USB
Название в учётной системе:
1. Источник бесперебойного питания APC Back-UPS CS 650VA 230V (DSL)

или приведите свой пример наименований товаров.

Какие рег. выражения вы напишите, какой результат их ваполнения будет, по каким критериям будет искаться товар, какие логические условия вы примените между рег. выражениями ? Опишите пожалуйста более подробно предлагаемый вами алгоритм поиска соответствия товаров.
С уважением, поддержка ElbuzGroup.
Flagman
Сообщения: 41
Зарегистрирован: 13 авг 2009 20:37

25 авг 2009 18:03

напрмер, товары:
ASUS F6A [90NMEA-Q395I1-2AMC506Y CM575(2.0)/ 2048/ 250(5400)/ DVD-RW/ WiFi/ BT/ cam/ VistaHB/ 13.3"/ 2.15
ASUS Eee PC S101H[90OA14-B52111-937E10AQ Brown Atom N280(1.66)/ 1024/ 160/ WiFi/ BT/ cam/ WinXP/ 10.2"/
Ноутбук ASUS K40IJ 14" HD/Intel Celeron T3000(1.8GHz)/2Gb/250Gb/DVD±RW SM/WiFi/Web-cam/VHB
Asus Z37SP (N-SMLBH192DBAAMC0Y) C2D T5900 (2,2) 3072 250 13,3" WXGA (1280x800) NVIDIA 8400M G 256MB DVD-SM

тут серийники описываются в три выражения.
([a-z0-9]+)-([a-z0-9]+)-([a-z0-9]+) для серийника вида 90NMEA-Q395I1-2AMC506Y
([a-z][0-9][a-z0-9]+) для серийника вида S101H, K40IJ и т.п.
([a-z])-([a-z0-9]+) для серийника вида N-SMLBH192DBAAMC0Y

по серийнику 90NMEA-Q395I1-2AMC506Y по второму выражению мы получим вхождение Q395I1 которое нужно игнорировать, поскольку оно полностью содержится во вхождении по первому выражению и соотв. ничтожно.
по второму товару мы так же получим вхождение не только серийника, но и модели процессора - T3000. выкидывать его мы не будем, поскольку это вхождение не содержится в других результатах.
Для правильного сопоставления нам нужны все вхождения выражений по всем строкам, в т.ч. отсутствие вхождения - учитывать это как результат или нет - должно настраиваться под выражение. действительно, возможно просто не указано поставщиком что товар с интерфейсом usb и есть только серийник. таким образом, если не учитывается отсутствие результата выражения - это не помешает правильному сопоставлению, но если результат строки выражений есть, то должен учитываться. Например если в строке с выражениями есть следующая запись:
(usb) ИЛИ (serial) ИЛИ (bluetooth) ИЛИ (radio)
то будем иметь следующее:
товар Genius Navigator R820BT Rechargeable Bluetooth Optical Mouse (RTL) 3btn+Roll(без приёмн)
он же: Genius Navigator R820BT Rechargeable Bt. Opt. Mouse
и не он: товар Genius Navigator R820BT Rechargeable Radio Optical Mouse
второй будет сопоставлен по серийнику с первым несмотря на отличие во вхождении по bluetooth но третий товар не будет сопоставлен с предыдущими, поскольку выдаст вхождение по Radio.

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

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

26 авг 2009 19:03

Flagman писал(а):напрмер, товары:
ASUS F6A [90NMEA-Q395I1-2AMC506Y CM575(2.0)/ 2048/ 250(5400)/ DVD-RW/ WiFi/ BT/ cam/ VistaHB/ 13.3"/ 2.15
ASUS Eee PC S101H[90OA14-B52111-937E10AQ Brown Atom N280(1.66)/ 1024/ 160/ WiFi/ BT/ cam/ WinXP/ 10.2"/
Ноутбук ASUS K40IJ 14" HD/Intel Celeron T3000(1.8GHz)/2Gb/250Gb/DVD±RW SM/WiFi/Web-cam/VHB
Asus Z37SP (N-SMLBH192DBAAMC0Y) C2D T5900 (2,2) 3072 250 13,3" WXGA (1280x800) NVIDIA 8400M G 256MB DVD-SM

тут серийники описываются в три выражения.
([a-z0-9]+)-([a-z0-9]+)-([a-z0-9]+) для серийника вида 90NMEA-Q395I1-2AMC506Y
([a-z][0-9][a-z0-9]+) для серийника вида S101H, K40IJ и т.п.
([a-z])-([a-z0-9]+) для серийника вида N-SMLBH192DBAAMC0Y

по серийнику 90NMEA-Q395I1-2AMC506Y по второму выражению мы получим вхождение Q395I1 которое нужно игнорировать, поскольку оно полностью содержится во вхождении по первому выражению и соотв. ничтожно.
по второму товару мы так же получим вхождение не только серийника, но и модели процессора - T3000. выкидывать его мы не будем, поскольку это вхождение не содержится в других результатах.


У вас не правильные выражения для товаров. Вот выражения при выполнении которых не возникает перекрытия других товаров:
Asus Z37SP (N-SMLBH192DBAAMC0Y) C2D T5900 (2,2) 3072 250 13,3" WXGA (1280x800) NVIDIA 8400M G 256MB DVD-SM
([a-z][-][a-z0-9]{10,18})

ASUS F6A [90NMEA-Q395I1-2AMC506Y CM575(2.0)/ 2048/ 250(5400)/ DVD-RW/ WiFi/ BT/ cam/ VistaHB/ 13.3"/ 2.15
ASUS Eee PC S101H[90OA14-B52111-937E10AQ Brown Atom N280(1.66)/ 1024/ 160/ WiFi/ BT/ cam/ WinXP/ 10.2"/

([a-z0-9]{4,6}[-][a-z0-9]{4,6}[-][a-z0-9]{4,10})

у товара:
Ноутбук ASUS K40IJ 14" HD/Intel Celeron T3000(1.8GHz)/2Gb/250Gb/DVD±RW SM/WiFi/Web-cam/VHB
нет артикула (серийного номера), "K40IJ" это модель товара, такие товары необходимо идентифицировать по техн. характеристикам.
С уважением, поддержка ElbuzGroup.
RadLast
Сообщения: 7
Зарегистрирован: 04 авг 2009 19:01

27 авг 2009 15:30

([a-z][-][a-z0-9]{10,18}) выражение в фигурных скобках {10,18} означает, что в квадратных скобках [a-z0-9] находится минимум 10 символов, максимум 18. Все остальное будет игнорироваться. Если же например написать ([a-z][-][a-z0-9]{18}) тогда выражение [a-z0-9] будет ограничиваться 18 символами.
Для товаров которые не имеют артиклей, при желании можно поискать в поисковике - Ноутбук ASUS K40IJ 14" HD/Intel Celeron T3000(1.8GHz)/2Gb/250Gb/DVD±RW SM/WiFi/Web-cam/VHB яндекс показывает 90NVJA3191933AMC106Y серийный номер. Но это не для всех товаров приемлемо. Сопоставление товаров по характеристикам не всегда будет давать правильно сопоставлять. Поставщики, в своих прайсах, не обязаны писать все характеристики товаров полностью. Для нотбуков часто забывают написать - цвет, wifi, blue tooth, IrDa, Web-cam, видеокарту, размер аккумулятора. Поэтому надо проверять, что было сопоставлено по наименованию при использовании регулярных выражений.
Flagman
Сообщения: 41
Зарегистрирован: 13 авг 2009 20:37

27 авг 2009 23:36

Пришло по почте обновление какое то... но там нет реализации того что я просил...

пытливым умам: задачка на работу с выражениями

список товаров:
Аккумулятор SVEN SV12-12/SV12120 (12V,12Ah) для UPS
Аккумулятор SVEN SV1250 (12V, 5Ah) для UPS
Аккумулятор SVEN SV17-12/SV12170 (12V,17Ah) для UPS
Аккумулятор SVEN SV645 (6V, 4.5Ah) для UPS
Кабель монитор - компьютер (UPS - устройство) 220V < 3м >>
Кабель монитор - компьютер (UPS - устройство) 220V < 5м >>
Orient <PUPS1001 Mini USB Paper Shredder (A5, 2 листа, питание4x"AA"/USB)
APC <SURTRK2 Крепёж для установки Smart-UPS RT в стойку 19''
APC <SURTRK APC Smart-UPS RT 19" Rail Kit (набор для крепления UPS в 19" стойку)
UPS 1000 VA Ippon Smart Power Pro 1000 +ComPort+RJ11
UPS 1000 VA PowerMAN Black Star 1000 Plus +ComPort+RJ11/45
UPS 1000 VA PowerMAN Real Smart 1000 +ComPort+RJ11
UPS 1000 VA Ippon Smart Winner 1000 +ComPort+RJ11/45+USB
UPS 1000 VA CyberPower Value <1000E-GP Black защита телефонной линии, USB
UPS 1000 VA PowerCom <BNT 1000AP>+ComPort+RJ11
UPS 1000 VA Smart APC <SC1000I защита телефонной линии, USB
UPS 1000 VA Smart APC <SUA1000I USB
UPS 1000 VA Smart APC <SUA1000RMI1U Rack Mount 1U
UPS 1000 VA Smart APC <SUA1000RMI2U Rack Mount 2U, USB
UPS 1000 VA Smart APC <SUA1000XLI USB
UPS 1000 VA SVEN Power <Smart 1000 VA +ComPort+RJ45
UPS 1000 VA SVEN Power <Smart L 1000 +ComPort+RJ45
UPS 1000 VA PowerCom Warrior <WAR-1000A>+RJ45
UPS 1000 VA PowerCom <WAR-1000AP +USB
UPS 1000 VA PowerCom <WOW 1000U +USB+RJ11/45
UPS 1025VA PowerCom <IMD-1025AP +USB+RJ11/45
UPS 1200 VA CyberPower Value <1200E Black LCD, защита телефонной линии, USB
UPS 1200 VA PowerCom <BNT 1200AP>+ComPort+RJ11
UPS 1200 VA Back RS APC <BR1200 LCDI защита телефонной линии, USB
UPS 1400 VA Ippon Smart Power Pro 1400 +ComPort+RJ11
UPS 1400 VA PowerMAN Back PRO (N) 1400 Plus +ComPort+RJ11/45
UPS 1400 VA Smart APC <SU1400RMXLIB3U Black (подкл-е доп. батарей) Rack Mount 3U
UPS 1500 VA PowerMAN Black Star 1500 Plus +ComPort+RJ11/45
UPS 1500 VA PowerMAN Real Smart 1500 +ComPort+RJ11
UPS 1500 VA Ippon Smart Winner 1500 +ComPort+RJ11/45+USB
UPS 1500 VA CyberPower Value <1500E Black LCD, защита телефонной линии, USB
UPS 1500 VA PowerCom <BNT 1500AP>+ComPort+RJ11
UPS 1500 VA Back RS APC <BR1500I USB
UPS 1500 VA PowerCom <IMD-1500AP +USB+RJ11/45
UPS 1500 VA SVEN Power <Pro+1500 USB +USB+RJ45
UPS 1500 VA Smart APC <SC1500I защита телефонной линии, USB
UPS 1500 VA Smart APC <SUA1500I USB
UPS 1500 VA SVEN Power <Smart 1500 USB+ComPort+RJ45
UPS 2000 VA Ippon Smart Power Pro 2000 +ComPort+RJ11
UPS 2000 VA PowerMAN Back PRO 2000 Plus +ComPort+RJ11/45
UPS 2000 VA PowerMAN Real Smart 2000 +ComPort+RJ11
UPS 2000 VA Ippon Smart Winner 2000 +ComPort+RJ11/45+USB
UPS 2000 VA SVEN Power <Smart 2000 USB+ComPort+RJ45
UPS 2000 VA SVEN Power <Smart L 2000 +ComPort+RJ45
UPS 2200 VA CyberPower Value <2200E Black LCD, защита телефонной линии, USB
UPS 2200 VA Smart APC <SUA2200RMXLI3U (подкл-е доп. батарей) Rack Mount 3U, USB
UPS 300 VA PowerCom <WOW 300>
UPS 300 VA PowerCom <WOW 300U +USB+RJ11/45
UPS 3000 VA Ippon Smart Winner 3000 +ComPort+RJ11/45+USB
UPS 3000 VA Smart APC <SUА3000RMXLI3U (подкл-е доп. батарей) Rack Mount USB
UPS 3000 VA Smart APC <SUA3000I>
UPS 3000 VA Smart APC <SUA3000RMI2U Rack Mount 2U USB
UPS 3000 VA Smart APC <SUA3000XLI (подкл-е доп. батарей)
UPS 3000 VA Smart On-Line APC <SURTD3000XLI (подкл-е доп. батарей)
UPS 3000 VA SVEN Power <Smart L 3000 +ComPort+RJ45
UPS 350 VA Back CS APC <BK350EI защита телефонной линии, USB
UPS 400 VA Ippon Back Office 400 +RJ11
UPS 400 VA Ippon Back Power Pro 400 +ComPort+RJ11
UPS 400 VA PowerMAN Black Star 400
UPS 400 VA PowerMAN Black Star 400 Plus +ComPort+RJ11/45
UPS 400 VA PowerMAN Compact 400 Plus +ComPort+RJ11/45
UPS 400 VA Ippon Back Verso 400 +ComPort+USB+RJ11
UPS 400 VA CyberPower Value <400E Black защита телефонной линии
UPS 400 VA CyberPower Value <400E White защита телефонной линии
UPS 400 VA Back ES APC <BE400-RS защита телефонной линии
UPS 400 VA PowerCom <BNT 400A>
UPS 400 VA PowerCom <BNT 400AP>+ComPort+RJ11
UPS 400 VA PowerCom <WAR-400A>
UPS 400 VA Ippon Back Comfo Pro 400 <White +ComPort+USB+RJ11
UPS 425VA PowerCom <IMD-425AP +USB+RJ11/45
UPS 425VA PowerCom <IMP-425AP +USB+RJ11/45
UPS 450 VA CyberPower <BR450E Black USB
UPS 500 VA Ippon Back Power Pro 500 +ComPort+RJ11
UPS 500 VA PowerMAN Back PRO (N) 500
UPS 500 VA PowerMAN Back PRO (N) 500 Plus +ComPort+RJ11/45
UPS 500 VA PowerMAN Black Star 500
UPS 500 VA PowerMAN Black Star 500 Plus +ComPort+RJ11/45
UPS 500 VA PowerMAN Compact 500 Plus +ComPort+RJ11/45
UPS 500 VA CyberPower Value <500E White>
UPS 500 VA Back CS APC <BK500EI защита телефонной линии, USB
UPS 500 VA PowerCom <BNT 500A>
UPS 500 VA PowerCom <BNT 500AP>+ComPort+RJ11
UPS 500 VA Back RS APC <BR500I защита телефонной линии, USB
UPS 500 VA PowerCom <WOW 500U +USB+RJ11/45
UPS 525VA Back ES APC <BE525-RS USB
UPS 525VA PowerCom <IMD-525AP +USB+RJ11/45
UPS 525VA PowerCom <IMP-525AP +USB+RJ11/45
UPS 550 VA Back ES APC <BE550-RS защита телефонной линии
UPS 600 VA Ippon Back Power Pro 600 +ComPort+RJ11
UPS 600 VA PowerMAN Black Star 600
UPS 600 VA PowerMAN Black Star 600 Plus +ComPort+RJ11/45
UPS 600 VA CyberPower Value <600E Black защита телефонной линии
UPS 600 VA CyberPower Value <600E White защита телефонной линии
UPS 600 VA PowerCom <BNT 600A>
UPS 600 VA PowerCom <BNT 600AP>+ComPort+RJ11
UPS 600 VA Ippon Back Comfo Pro 600 <Black +ComPort+USB+RJ11
UPS 600 VA PowerCom Warrior <WAR-600A>+RJ45
UPS 620 VA Smart APC <SC620I защита телефонной линии
UPS 625VA PowerCom <IMD-625AP +USB+RJ11/45
UPS 625VA PowerCom <IMP-625AP +USB+RJ11/45
UPS 625VA SVEN Power <Pro+625 USB +USB+RJ45
UPS 650 VA PowerMAN Compact 650 Plus +ComPort+RJ11/45
UPS 650 VA Back CS APC <BK650EI защита телефонной линии, USB
UPS 650 VA Back RS APC <BR650CI-RS защита телефонной линии
UPS 650 VA CyberPower <BR650ELCD Black LCD, USB
UPS 700 VA PowerMAN Real Smart 700 +ComPort+RJ11
UPS 700 VA CyberPower Value <700E Black защита телефонной линии
UPS 700 VA CyberPower Value <700E White защита телефонной линии
UPS 700 VA Back ES APC <BE700-RS>, защита телефонной линии, USB
UPS 700 VA PowerCom <WOW 700U +USB+RJ11/45
UPS 750 VA Ippon Smart Winner 750 +ComPort+RJ11/45+USB
UPS 750 VA Smart APC <SUA750I USB
UPS 750 VA Smart APC <SUA750RMI1U Rack Mount 1U, USB
UPS 750 VA Smart APC <SUA750RMI2U Rack Mount 2U, USB
UPS 750 VA Smart APC <SUA750XLI USB
UPS 800 VA Ippon Back Power Pro 800 +ComPort+RJ11
UPS 800 VA PowerMAN Back PRO (M/N) 800 Plus +ComPort+RJ11/45
UPS 800 VA PowerMAN Black Star 800 Plus +ComPort+RJ11/45
UPS 800 VA PowerMAN Compact 800 Plus +ComPort+RJ11/45
UPS 800 VA CyberPower Value <800E Black защита телефонной линии
UPS 800 VA CyberPower Value <800E White защита телефонной линии
UPS 800 VA PowerCom <BNT 800AP>+ComPort+RJ11
UPS 800 VA Ippon Back Comfo Pro 800 <Black +ComPort+USB+RJ11
UPS 800 VA Ippon Back Comfo Pro 800 <White +ComPort+USB+RJ11
UPS 825VA PowerCom <IMP-825AP +USB+RJ11/45
UPS 825VA SVEN Power <Pro+825 USB +USB+RJ45
UPS 850 VA CyberPower <BR850ELCD Black LCD, USB
Кабель монитор - компьютер (UPS - устройство) 220V 1.8м
Кабель Hama монитор-компьютер (UPS - устройство) 220V 1.5м <46558>

задача уложить в 5 выражений все возможные варианты идентификации товаров.
Ответить