1.REXXPCRE.DLL 1.1. PCREAuthor синтакс: auth = PCREAuthor() Возвращает строку, содержащую имя автора PCRE и его email. 1.2. PCREVersion синтакс: ver = PCREVersion() Возвращает строку, содержащую версию библиотеки. 1.3. PCREInit синтакс: rc = PCREInit([locale]) параметр: locale -- требуемая локаль (скажем "En_US") возвращает: задействованную локаль (по всем категориям) Инициализирует библиотеку заданной локалью. Если параметр пустая строка, то инициализируется текущей локалью (см. SET LANG в config.sys). Если параметр пропущен -- используется "C" локаль. По-умолчанию, библиотека работает с "C" локалью. 1.4. PCRECompile синтакс: rc = PCRECompile( 'pcre', mask ) параметры: 'pcre' -- имя переменной, куда будет помещён хэндл скомпилированного регулярного выражения mask -- строка с регулярным выражением возвращает: код ошибки 0 - ok 1 - некорректные (неизвестные) опци 2 - некорректная маска 3 - некорректное имя переменной для pcre 4 - ошибка компиляции, текстовая строка помещается в 'pcre' Компилирует регулярное выражение для дальнейшего использования. mask имеет вид : /regexp/[8|i|m|s|x|g|A|U|E] 8 -- UTF8 i -- регистр не учитывается m -- multiline s -- dot all x -- extended g -- not empty A -- ancored U -- ungreedy E -- dollar only за деталями обращаться к руководству по языку Perl и документации по PCRE. Пример: if PCRECompile('rec', '/(\d{2}/\d{2}/\d{2,3}) (\d{2}:\d{2}:\d{2}) (\[\d+,\d+\]) . (.*)/') then say Error ! else say Success 1.5. PCREExec синтакс: rc = PCREExec('pos_stem.',pcre,string,[pos,[,opts]) параметры: 'pos_stem.' -- имя стема, в котом будут хранится смещения. pos_stem.0 -- число отсчётов. pcre -- скомпилированное регулярное выражение string -- строка pos -- начальная позиция (по-умолчанию -- 1) нумерация символов как в REXX'е а не в С. opts -- опции (по-умолчанию -- не используются) A - Anchored b - Not begin of line e - Not end of line g - Not empty возвращает: код ошибки -1 - не найдено 0 - Ok 1 - некорректные (неизвестные) опци 3 - некорректное имя переменной для pcre 5 - pcre не содержит скомпилированного выражения 6 - некорректная позиция 1.6. InitPCRE синтакс: call PCRELoad инициализирует билиотеку, регистрируя необходимые функции Пример: call RxFuncAdd 'PCRELoad', 'REXXPCRE', 'PCRELoad' call PCRELoad 1.7. DropPCRE синтакс: call DropPCRE дерегистрирует функции 2. REXXPCRE.rex[x] Два класса : RxPCRE | +----RxStrParser Вообще является (на мой взгляд) удобной обёрткой над функами PCREXXXX. RxStrParser в какой-то мере аналог сплитовки PERL'a. 2.1 Методы RxPCRE 2.1.1 init([locale]) -- см. PCREInit, за исключением: если параметра нет, то используется текущая локаль пример: re = .RxPCRE~new 2.1.2 getLocale -- возвращает локаль, применённую для PCRE пример: say re~getLocale 2.1.3. getMask -- возвращает используемую маску пример: say re~getMask 2.1.4. setMask(mask) -- компилирует маску, возвращая код ошибки; см. PCRECompile 2.1.5. find(ofs_stem., str, [start_pos [,opts]]) -- поиск фрагментов, возвращает код ошибки; см. PCREExec 2.1.6. findSubs(str, [start_pos [,opts]]) -- поиск фрагментов, возвращает массив (.array) строк если совпадения были. если ничего не найдено или были ошибки, то возвращается .nil; см RxPCRE::find, PCREExec. пример: a = re~findSubs("z = zz!") if a <> .nil then do /* do smth with data */ end; else if re~lastError = -1 then say 'Not found!'; else say 'error: 're~lastError; 2.1.7. lastError -- возвращает код завершения последней операции 2.1.8. getVersion -- возвращает версию libpcre в виде строки 2.1.9. getRxVersion -- возвращает версию REXXPCRE в виде строки 2.1.10. getAuthor -- возвращает строку и именем автора PCRE 2.1.11. getPortAuthor -- возвращает строку с именем автора REXXPCRE 2.2. Методы RxStrParser Класс RxStrParser наследует от RxPCRE. Сделан с целью получить удобный разборщик строк в отличии от PERL'a перемнные индексируются. Т.е. ($a,$b,$c) = / / будет соотв. sp~parse(str); sp[1], sp[2], sp[3]. 2.2.1 init -- инициализирует класс. см. RxPCRE::init 2.2.2 parse -- собственно разборщик строки, возвращает 1 если не было ошибок и 0 в обратном случае. См. RxPCRE::lastError, RxPCRE::find rc = sp~parse(str) rc = sp~parse(str,10); /* с позиции 10 */ 2.2.3. '[]' возвращает подстроку. если она пустая, то рекомендуется посмотреть lastError 2.3 Пример a = .RxStrParser~new /* инициализация текущей локалью, см $LANG */ mask = "/\s*([_a-zA-Z][a-zA-Z0-9._]*)\s*=\s*([^#]*)(#|$)(.*)/" if a~setMask(mask) <> 0 then do say 'Oops! Error: ' a~lastError exit -1 end; say a~parse("a2 = 3"); /* разборка строки */ say a[1] /* 'a2'*/ say a[2] /*3*/ exit 0