Добрый день!
Начал свои первые шаги в разработке гибких форм с помощью инструмента FlexiLayout Studio. Но уже столкнулся с проблемой синтаксиса регулярных выражений. По каким-то причинам, стандратный синтаксис был изменен, что повлекло ряд неудобств (например, звездочка "*" - в FLS обозначает любой символ, в стандартном синтаксисе это означает кол-во повторений предыдущего символа/набора символов от 0 до бесконечности). В связи с этим, прошу помочь разобраться со следующими вопросами:
- Как обозначается пробельный символ? Стандартно - \s. Но в FLS остается только гадать, т.к. система ругается на \s. И в справке указана информация только про дефис и слэш.
- Есть ли вообще доступный список всего того, что изменилось в синтаксисе регулярных выражений в FLS? Перечень, указанный в справке FLS неполный (см. проблему выше).
- Есть ли какой-нибудь доступный инструмент для проверки корректности написанного регекса в FLS?Т.к. стандартные онлайн-инструменты более не подходят (по причинам выше).
- Проблема с применением регекса в элементе Table. Во вкладке Columns, в свойствах конкретного столбца можно задавать регекс для использования проверка типа контента, содержащегося в столбце. Вопрос, если задать некий регекс, под который не подходит ни одно значение из столбца, то в столбец попадает случайная информация? Как именно решается какой будет ширина столбца? Почему не выдается ошибка или предупреждние о том, что под регекс ничего не подошло?
Comments
3 comments
Здравствуйте,
1) Т.к. расстояние между словами (буквами) может меняться (например при неудачном сканировании), символ пробела в регулярных выражениях для лэйаута не используется.
2) Список символов, которые используются в лэйауте Вы можете найти в статье «Appendix > Alphabet used in regular expressions» в справке по FLS.
3) Нет. Таких инструментов нету. Обращаем Ваше внимание, что FLS предназначена для ловли, разметки и извлечении данных из определенных районов. Для распознавания полученных данных предназначена программа FC. Мы не реккомендуем писать сложные регулярные выражения на уровне FLS. Если это возможно, мы предлагаем использовать CharacterString элемент.
4) Мы предполагаем, что в указанном случае таблица не наложится. Чтобы дать более точный ответ, нам нужно увидеть проект и тестовые документы.
Спасибо за ваш ответ!
Если я вас правильно понял, то в «Appendix > Alphabet used in regular expressions» приведен полный список элементов синтаксиса регулярных выражений, верно? Элементы типа \b (начало/конец слова), ^(начало строки), $(конец строки) и т.д. в нем отсутсвуют?
Можете также подсказать, как можно использовать сложные регексы для распознавания полученных данных в FC? На каком этапе? Все, что я сейчас делаю в FC это создаю Определение документа, к которому привязываю гибкое описание из FLS template.afl, загружаю картинки, распознаю и экспортирую. Этап верификации я намеренно пропускаю, т.к. в моей задаче предполагается полная автоматизация процесса, без ручной проверки.
Касательно таблицы - можете подсказать принцип при подборе ширины столбца?
Здравствуйте,
Да, мы рекомендуем составлять регулярные выражения, опираясь на справку.
В ФК проекте при создании Определения документа (Document Definition Editor) Вы можете создать новый тип данных (Data Type), опираясь на регулярные выражения. (Field Properties > вкладка Data > выбрать Data Type (нажать кнопку Edit) > в окне Content Details, в разделе Content Settings из выпадающего списка выбрать опцию Special > нажать кнопку New). Обратите, пожалуйста, внимание, что алфавит в FLS и FC программах различается. Алфавит ФК можете посмотреть в Appendix > Alphabet used in regular expressions в Справке разработчика.
Также вы можете использовать автоматическую проверку по регулярному выражению: на вкладке Data есть раздел Validation, кнопка Edit рядом с этим разделом, открывает окно с настройками. Там есть раздел Сontent constraint. Выбрав опцию Regular expressions, вы можете задать автоматическую проверку по регулярному выражению. Обратите внимание, мы не реккомендуем пропускать этап проверки данных оператором.
Обычно ширина столбцов в таблице определяется автоматически, но Вы можете ее задать с помощью функции ExactColumnBorders (описано в соседней теме http://www.capturedocs.com/thread/333-multipage-table-finding-header-on-every-page/)
Please sign in to leave a comment.