Использование регулярных выражений (RegExp) для анализа строк

В старом добром АБАПе разбор строк – достаточно муторная операция.

Вот предположим, что у нас есть строка вида:

:86:Операция:Платеж,БИК:12345678,Счет:987654
321,Контрагент:ТОО ТЕСТ,РНН:120100000001,Вып
лата за XYZ   /KNP/1719311 /BCLASS/

И требуется выкусить из неё нужные значения: Контрагент, РНН и Описание операции.

Возиться с регэкспами на классах меня особенно не тянет.

 

Прикидываем в уме реэксп:

.*Контрагент:(.*),РНН:(\d*),(.*)/KNP/.*

Обратите внимание – круглые скобки нам отмечают несколько результатов, которые мы хотим получить.

За подробностями синтаксиса регулярных выражений – добро пожаловать в F1.

А затем на старом добром абапе используем волшебные слова:

FIND ALL OCCURRENCES OF REGEX regexp IN string  RESULTS results.

В результате успешного выполнения мы получим одну запись в таблице результата:

Строка результата

В последнем поле строки результата находится ещё одна таблица:

Строка фрагментов

И здесь уже видна карта того, что нам нужно — требуется выкусить нужные фрагменты по принципу:

НужноеЗначение = ИсходнаяСтрока+Смещение(Длина).

Выкусываем и радуемся.

А вот и текст примера (залил на Пастебин):

Результат работы программы:

Результат работы

Опубликовано 23.04.2011 в 12:36 · Автор ivan · Ссылка
Рубрики: ABAP

Написать комментарий