AA> Нужно ОЧЕНЬ!
AA> ! Вот только, не слишком-ли бедный получится регэксп?
AA> ! Учитывая возможности MATCH от Клариона и возможности
AA> ! стандартного регэкспа?AA> Это СТАНДАРТНЫЙ регэксп, именно его и хочется.
AA> Если тебя не затруднит, подскажи хотя бы, где копать.
Если уж так срочно, и умеешь нормально ориентироваться в асме, и знаешь хорошо ядро Клары, то загляни в код функции Cla$REGULAR. Вот ее надо переписать на Кларионе. Ничего сложного нет. Тем более, что ВСЮ работу по поиску выполняет экспортируемая функция _7RegExpr__find@… А тебе прийдется только написать код для инициализации и завершения. И взять результат из временного буфера, который этой функции и подсунешь.
Только вместо неэкспортируемой функции _7RegExpr__init@… надо исользовать экспортируемую функцию _7RegExpr__ct__@… Ну а как использовать функции работы с динамическими строками, я уже писал.
AA> Проблема всплыла — надо обрабатывать регулярные выражения в формате
AA> LEX/UNIX, которые в кларе реализованы в функции Match. Так вот, не знает ли
AA> кто способа получить НАЧАЛО и КОНЕЦ найденного совпадения (контекста) в
AA> режиме Match:Regular? Сильно надо, а писать самому обработчик регулярных
AA> выражений ой как не хочется…
Можно легко получить НАЧАЛО найденной последовательности:
MAP MODULE('Clarion RTL') Regular(STRING _Str,STRING _Mask,BYTE _NoCase=True), | LONG,NAME('Cla$REGULAR'),dll(dll_mode) END END i# = Regular('abcd12345','[0-9]') ! Вернет 5
Если ОЧЕНЬ нужно, то, в принципе, можно получить и саму найденную последовательность. Только это более сложно и с небольшим «извратом». Правда, не выходящим за пределы экспортируемых функций ядра.
Вот только, не слишком-ли бедный получится регэксп? Учитывая возможности MATCH от Клариона и возможности стандартного регэкспа?