Проверка схемы плоского файла с использованием регулярного выражения - не разрешать новую строку и символ разделителя

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

В решении BizTalk я хочу проверить входящий плоский файл по схеме плоского файла (разделитель char - это труба '|'). Правило состоит в том, что в каждой записи (каждой строке) должно быть одинаковое количество полей. Таким образом, после разборки ни у одного из полей не должно быть новой строки char (CR LF или \r\n) и канала '|' голец.

Каждая строка в плоском файле представляет собой одну запись, и в каждой записи содержится 10 полей. так что я должен точно 9 '|' символы трубы в каждой строке.

Я пытался решить эту проблему с помощью проверки регулярных выражений XSD, но поскольку регулярные выражения не являются моей областью знаний, я не могу создать окончательное регулярное выражение. В настоящее время я тестирую с.*(?!([^\ R \n\|])).* Но он не работает, когда их больше 9 '|' однако, это работает, когда их меньше 9.

Наконец, я хочу регулярное выражение XSD, которое не должно позволять символ новой строки и '|' в строке, но может иметь пустое значение ''.

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

Регулярные выражения схемы XML

Схема XML - Регулярные выражения

2 ответа

Решение

Я думаю, что вы пытаетесь решить не ту проблему.

Во-первых, вам действительно нужно это сделать? Я не помню, чтобы я когда-либо нуждался или даже не думал о том, что вы описываете.

Во-вторых, вы можете просто проверить проанализированный Xml. Если счетчик поля неверен, он потерпит неудачу. Если вам действительно нужно проверить наличие дополнительного "|", вы можете поместить его в схему, чтобы проверить его на карте.

IBM Integration Bus решает эту проблему, позволяя описывать формат данных, не относящийся к XML, с использованием XSD. Эта технология называется языком описания формата данных (DFDL). https://en.wikipedia.org/wiki/Data_Format_Description_Language

Другие вопросы по тегам