|
НАЗВАНИЕ
regcmp, regex - компиляция и выполнение регулярного выражения
СИНТАКСИС
char *regcmp (string1 [, string2, ...], (char *) 0) char *string1, *string2, ...; char *regex (re, subject [, ret0, ...]) char *re, *subject, *ret0, ...; extern char *__loc1;
ОПИСАНИЕ
Функция regcmp компилирует регулярное выражение, состоящее из конкатенированных аргументов, и возвращает указатель на результат компиляции. Чтобы захватить пространство для результата, используется функция
malloc(3C). Ответственность за освобождение ставшего
ненужным пространства, которое было выделено при помощи
malloc, возлагается на пользователя. Пустой указатель
NULL, возвращенный в качестве результата regcmp, свидетельствует о некорректности аргументов. Чтобы, в общем
случае, устранить необходимость вызова данной функции
во время выполнения, написана команда regcmp(1).
Функция regex сопоставляет скомпилированный образец с цепочкой символов subject. Regex возвращает пустой указатель NULL в случае неудачи или указатель на символ, следующий после сопоставленного фрагмента, в случае успеха. Если нужно получить больше выходной информации, следует передать дополнительные аргументы. В глобальной переменной __loc1 возвращается указатель на позицию, где сопоставление началось. Функции regcmp и regex почти впрямую заимствованы из редактора ed(1); синтаксис и семантика регулярных выражений изменены незначительно. Ниже перечислены допустимые символы и описана их трактовка.
Все определенные выше символы по необходимости трактуются особым образом. Чтобы обозначать самих себя, они должны экранироваться символом \.
ПРИМЕРЫ
char *cursor, *newcursor, *ptr; ... newcursor = regex((ptr = regcmp("^\n", (char *)0)), cursor); free (ptr);
char ret0 [9]; char *newcursor, *name; ... name = regcmp ("([A-Za-z][A-za-z0-9]{0,7})$0", (char *) 0); newcursor = regex (name, "012Testing345", ret0);
#include "file.i" char *string, *newcursor; ... newcursor = regex (name, string);
ФАЙЛЫ
/usr/lib/libPW.a Библиотека, в которой хранятся описанные функции.
СМ. ТАКЖЕ
malloc(3C).
ed(1), regcmp(1) в Справочнике пользователя.
СЮРПРИЗЫ
При работе программы пользователя может произойти переполнение памяти, если regcmp вызывается многократно без
освобождения областей памяти, ставших ненужными.
|