(Работа с Regex в C#)Улучшение регулярных выражений с дополнительными значениями
Я несколько регулярных как выражения для разбора строки в нескольких областях. В одном из этих полей есть необязательный символ, который я не могу понять, как заставить его регулярное выражение разбить его. Я попытался улучшить его в одной строке, но я не мог этого сделать.
Мой вход:
4-002 TERMO CONTINENTAL 1 L N°3995 9.22 4-003 TERMO CONTINENTAL 2 N°3996 99.22
Мой desidered выход:
Item[0].Code = 4-002
Item[0].Detail = TERMO CONTINENTAL 1 L N°3995
Item[0].Price = 9.22
Item[1].Code = 4-003
Item[1].Detail = TERMO CONTINENTAL 2 N°3996
Item[1].Price = 99.22
Моя последняя попытка:
Для раздельный оба предмета: (?=\d\-\d\d\d\s.*)
Это не работает, потому что некоторые коды: подобные 14-001
вместо 4-001
Я попытался с: ([\d]\d\-\d\d\d\s.*)
но и не работает
ВОПРОС: Как я могу получить обе возможности? 14-001
и 4-001
И другие вещи, связанные с этой проблемой:
Чтобы отделить детали от цены: ([^\s]*$)
(от одного элемента расщепляется раньше)
Чтобы отделить код от деталей: (\d\-\d\d\d\s)
(та же проблема, как оригинальный вопрос)
Любая помощь с этим регулярным выражением будет полезной и оцененной.
Заранее благодарен!
Попробуйте это:? (\ D + - \ D +) \ S ([^ \ d] + \ д \ с (л \ с) Н ° \ d +) \ s (\ d + \. \ d +). Хотя я рекомендую правильно разобрать это .Split и т. д. – Camo
Попробуйте ['(\ d + - \ d +) \ s + (. *?) \ s + (\ d + \ . \ d +) '] (http://regexstorm.net/tester?p= (% 5CD% 2b-% 5CD% 2b)% 5cs% 2b (. *% 3f)% 5cs% 2b (% 5CD% 2b% 5с.% 5CD% 2b) и г = 4-002 + ТЕРМО + кОНТИНЕНТАЛЬНЫЙ + 1 + L + N% с2% b03995 + 9,22 + 4-003 + ТЕРМО + кОНТИНЕНТАЛЬНЫЙ + 2 + Н% с2% b03996 + 99,22). –
Вы можете использовать '[\ d] {1,2} - [\ d] {3}' для первой части. –