RegExpControl
Функция
RegExpControl
позволяет управлять Регулярными выражениями.
intptr_t WINAPI RegExpControl( HANDLE hHandle, enum FAR_REGEXP_CONTROL_COMMANDS Command, intptr_t Param1, void *Param2 );
Параметры
hHandle
Смотрите описание
Command
.Command
Может быть одним из следующих значений (перечисление FAR_REGEXP_CONTROL_COMMANDS):
Команда | Описание |
---|---|
RECTL_CREATE | Создаёт структуры под Регулярные выражения.hHandle должен быть установлен в значение NULL . Param1 не используется.Param2 - указатель типа HANDLE , в который запишется созданный описатель Регулярных выражений.Функция при неудаче вернёт FALSE и Param2 = INVALID_HANDLE_VALUE . |
RECTL_FREE | Освобождает память занятую при создании Регулярных выражений. hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 не используется.Функция возвращает TRUE . |
RECTL_COMPILE | Инициализирует Регулярные выражения. hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 - указатель на строку с Регулярными выражениями. Функция возвращает TRUE при удачной компиляции строки. |
RECTL_OPTIMIZE | Оптимизирует Регулярные выражения после инициализации, применяется после RECTL_COMPILE . hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 не используется.Функция возвращает TRUE при удачной оптимизации. |
RECTL_MATCHEX | Сопоставляет Регулярное выражение строке. hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 указатель на заполненную структуру RegExpSearch. Функция возвращает TRUE при удачной операции сопоставления. |
RECTL_SEARCHEX | Ищет в строке подстроки заданные Регулярным выражением. hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 указатель на заполненную структуру RegExpSearch. Функция возвращает TRUE , если удалось найти подстроки. |
RECTL_BRACKETSCOUNT | Количество скобок () в Регулярном выражении. hHandle - описатель Регулярных выражений, созданный по команде RECTL_CREATE .Param1 не используется.Param2 не используется.Функция возвращает количество скобок в Регулярном выражении, при этом всё выражение целиком интерпретируется в качестве первой скобки. |
Param1
Указывает на параметры1 команды. Смотрите описание
Command
.Param2
Указывает на параметры2 команды. Смотрите описание
Command
.Возвращаемое значение
Смотрите описание
Command
Пример
HANDLE re; if (Info.RegExpControl(0,RECTL_CREATE,0,&re;)) { if (Info.RegExpControl(re,RECTL_COMPILE,0,(void*)L"/[0-9]+/")) { int brackets=Info.RegExpControl(re,RECTL_BRACKETSCOUNT,0,0); FILE *log=fopen("c:\\plugins.log","at"); fprintf(log,"br: %d\n",brackets); fclose(log); if (!brackets) { Info.RegExpControl(re,RECTL_FREE,0,0); return; } RegExpMatch *match=(RegExpMatch*)malloc(brackets*sizeof(RegExpMatch)); RegExpSearch search={ L"test 123 test", 0, 13, match, brackets, 0 }; if (Info.RegExpControl(re,RECTL_SEARCHEX,0,&search;)) { FILE *log=fopen("c:\\plugins.log","at"); fprintf(log,"found: %d %d\n",match[0].start,match[0].end); fclose(log); } else { FILE *log=fopen("c:\\plugins.log","at"); fprintf(log,"not found\n"); fclose(log); } free(match); } Info.RegExpControl(re,RECTL_FREE,0,0); }
Смотрите также: