2012-06-22 1 views
0

У меня проблема с регулярными выражениями. Я пишу небольшую программу, которая соответствует строке из файла выписки банка mt940. У меня есть простой строки, как этот:Регулярное выражение, как печатать один из двух в соответствующем шаблоне

:60F:C120613PLN245265,82 

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

([C|D]{1})|([0-9]{6})|([A-Z]{3})|([0-9]+(\,[0-9]{2})) 

, который возвращает мне

C 
120613 
PLN 
143783 
4,82 

Но последние две строки разделены, и я бы возвращены не отделены последние два ряда, например:

C 
120613 
PLN 
1437834,82 

Я думаю, что последние строки имеют 6 чисел до «,», что соответствует второму шаблону во всем моем шаблоне.

Что я могу сделать, чтобы восстановить последние два слова, которые не разделены?

+2

язык/разнообразие регулярных выражений Which? –

ответ

1

Эта модель работает для меня:

pattern "([C|D]{1})([0-9]{6})([A-Z]{3})([0-9]+,[0-9]{2})" 

Я проверил его в Python:

re.findall(pattern, ":60F:C120613PLN245265,82") // [('C', '120613', 'PLN', '245265,82')] 
+0

К сожалению, он не работает ... – ElProgramadorOrganista

+0

@ user1474175: Я исправил свой код. Просмотрите его, пожалуйста. – user278064

+0

Спасибо за быстрый ответ. В python работает без "|" Шар, ты прав. Но в C# проблема. Я использую другой способ, чтобы решить проблему: Я использовал опцию «RightToLeft», и теперь она работает. – ElProgramadorOrganista