Проверка схемы плоского файла с использованием регулярного выражения - не разрешать новую строку и символ разделителя
Я знаю, что это должен быть примитивный вопрос, но я все еще не могу найти решение своей простой проблемы.
В решении BizTalk я хочу проверить входящий плоский файл по схеме плоского файла (разделитель char - это труба '|'). Правило состоит в том, что в каждой записи (каждой строке) должно быть одинаковое количество полей. Таким образом, после разборки ни у одного из полей не должно быть новой строки char (CR LF или \r\n) и канала '|' голец.
Каждая строка в плоском файле представляет собой одну запись, и в каждой записи содержится 10 полей. так что я должен точно 9 '|' символы трубы в каждой строке.
Я пытался решить эту проблему с помощью проверки регулярных выражений XSD, но поскольку регулярные выражения не являются моей областью знаний, я не могу создать окончательное регулярное выражение. В настоящее время я тестирую с.*(?!([^\ R \n\|])).* Но он не работает, когда их больше 9 '|' однако, это работает, когда их меньше 9.
Наконец, я хочу регулярное выражение XSD, которое не должно позволять символ новой строки и '|' в строке, но может иметь пустое значение ''.
Я привел ссылки ниже, чтобы создать свое регулярное выражение,
2 ответа
Я думаю, что вы пытаетесь решить не ту проблему.
Во-первых, вам действительно нужно это сделать? Я не помню, чтобы я когда-либо нуждался или даже не думал о том, что вы описываете.
Во-вторых, вы можете просто проверить проанализированный Xml. Если счетчик поля неверен, он потерпит неудачу. Если вам действительно нужно проверить наличие дополнительного "|", вы можете поместить его в схему, чтобы проверить его на карте.
IBM Integration Bus решает эту проблему, позволяя описывать формат данных, не относящийся к XML, с использованием XSD. Эта технология называется языком описания формата данных (DFDL). https://en.wikipedia.org/wiki/Data_Format_Description_Language