Некоторое время назад я написал утилиту маршрутизации файлов (.NET), чтобы проверить расположение и шаблон имени файла и переместить его в другое предварительно сконфигурированное место на основе совпадения. Довольно простые, понятные вещи. Я включил возможность незначительных преобразований с помощью ряда действий поиска и замены регулярных выражений, которые можно назначить файлу «route», с целью добавления строк заголовка, замены запятых на каналы, и тому подобное.
Итак, теперь у меня есть новый текстовый канал, который состоит из заголовка файла, заголовка пакета и множества подробных записей в пакетном режиме. Заголовок файла содержит количество всех подробных записей в файле, и меня попросили «разделить» файл в назначенных преобразованиях, по сути создав файл для каждой пакетной записи. Это также довольно просто, но главное, есть ожидание обновить заголовок файла для каждого файла, чтобы отразить счетчик деталей.
Я даже не знаю, возможно ли это с чистыми регулярными выражениями. Могу ли я подсчитать количество совпадений группы в данном текстовом документе и заменить значение счетчика в исходном тексте, или мне придется написать собственный преобразователь для этого одного файла?
Если мне нужно написать другой преобразователь, есть ли предложения о том, как сделать его достаточно универсальным, чтобы его можно было использовать повторно? Я подумываю добавить опцию XSLT-трансформера, но мое понимание XSLT не так велико.
Меня попросили привести пример. Скажем, у меня есть файл, подобный так:
FILE001DETAILCOUNT002
BATCH01
DETAIL001FOO
BATCH02
DETAIL001BAR
этот файл будет разделен и сохранен в двух местах. Файлы будут выглядеть так:
FILE001DETAILCOUNT001
BATCH01
DETAIL001FOO
и
FILE001DETAILCOUNT001
BATCH01
DETAIL001BAR
так что наклейка для меня - это значение DETAILCOUNT заголовка файла.