Regex для анализа записей баланса кредитной картыC#

Место общения программистов C#
Ответить
Anonymous
 Regex для анализа записей баланса кредитной карты

Сообщение Anonymous »

Я работаю над регулярным выражением для анализа записей баланса кредитной карты. Я использую веб-сайт regex101 для тестирования, а позже реализую результат в приложении C#.
Записи имеют следующий формат:

Код: Выделить всё

(date as dd/MM)(space)(description)(space)(optional negative sign)(space)(value)
Самые простые случаи:

Код: Выделить всё

18/11 GUIDINHA PAPELARIA 78,00   
23/11 CONFEITARIA -CT R CAS 10,00
Описание также может содержать части, всегда в конце:

Код: Выделить всё

19/11 SONHO DOS BICHOS 01/03 120,66  

22/02 CLARO LJ SHOP LEBL10/12 65,75  

25/11 RDSAUDE ONLI*RD S - 0,01
Для каждой записи я хочу извлечь дату, описание, взносы (если применимо) и стоимость.
На данный момент я написал следующее регулярное выражение:

Код: Выделить всё

^(\d{2}\/\d{2}) ([\w\s*.=-]+)((\d{2})\/(\d{2}))? (-)? ?(\d{1,3}(.\d{3})*,\d{2})
Это работает в большинстве случаев:

[img]https://i.sstatic. net/O9GddF18.png[/img]

Не работает для отрицательных значений, поскольку знак минус рассматривается как часть описания:
Изображение

[img]https://i.sstatic .net/oHYSpkA4.png[/img]

Он правильно определяет отрицательные значения, когда я удаляю символ - из группы 2:

Код: Выделить всё

^(\d{2}/\d{2}) ([\w\s*.=]+)((\d{2})/(\d{2}))? (-)? ?(\d{1,3}(.\d{3})*,\d{2})

, но не может анализировать записи с помощью - символом в описании

< /p>
Кажется (я не уверен на 100%), что символ появляется только в описании, за которым следует« КТ », такой как в

Код: Выделить всё

23/11 CONFEITARIA 
[/b] R CAS 10,00< /code>

So a possible solution, although not very elegant, would be to say that the description can contain - only when followed by "CT".

Подробнее здесь: https://stackoverflow.com/questions/793 ... ce-entries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»