2016-09-21 2 views
0

У меня есть набор кодов продуктов, которые я пытаюсь проанализировать (пример 99 ITEM SEC SALE). В редких случаях коды продуктов похожи на 99 ITEM SEC SALE.Условное выражение в регулярном выражении

Если это ячейка «99 ITEM SEC SALE», тогда «ITEM SEC» будет разобран (выньте 99 и продайте). Если ячейка «99 ITEM SEC» (НЕТ -> ПРОДАЖА, ПРОДАЖА ИЛИ ПОКУПКА). Я хочу, чтобы ITEM SEC также анализировался. Другими словами, «ПРОДАЖА И ПОКУПКА» - это запрещенные слова.

1-Он всегда начинается с набором чисел (без ограничений) 2-Буквенных символы (Все) 3-Буквенных символы (любые) -Дополнительного 4-Если значение концовки (строка) НЕ «ПРОДАЖА "или" ПРОДАНО "или" ПОКУПАТЬ ", затем вывести цифры и разобрать

Я нашел нечто похожее, но не мог понять, как он должен работать для моего дела.

Спасибо за помощь

ответ

0

Хорошо, так, что вы работаете на что-то вроде этого.

(?P<number>\d+)\s+(?P<Item_Name>\w+)\s+(?P<code>[a-zA-Z]{0,3})\s+(?P<status>SOLD|SALE|PURCHASED)? 

(?P<number>\d+) -- Named Capture Group 1 (number)- Match any number 
\s+ -- Match any number of spaces 
(?P<Item_Name>\w+) -- Named Capture Group 2 (Item_Name) - Match any word until space 
\s+ match any number of spaces 
(?P<code>[a-zA-Z]{0,3}) -- Named Capture Group 3 (code) - Match any a-zA-Z character 0-3 times 
\s+ match any number of spaces 
(?P<status>SOLD|SALE|PURCHASED)? -- Named Capture Group 4 (status) - Match SOLD/SALE/PURCHASED (? means 0 or 1 times so this is optional) 

Живой пример: https://regex101.com/r/oR3sK8/1

Я не помню, если названные группы захвата работают как это для Objective-C, если они не вы можете удалить P < ...> и regex должен работать без проблем (и держать группы захвата в основном без изменений).