regexec()

Сравнить строку с составленным регулярным выражением

Прототип:

#include <regex.h>
int regexec( const regex_t *preg,
const char *string,
size_t nmatch,
regmatch_t *pmatch,
int eflags );

Аргументы:

preg
Указатель на объект regex_t для регулярного выражения, которое необходимо выполнить. Необходимо скомпилировать выражение, вызвав regcomp().
string
Строка, которую требуется сопоставить с регулярным выражением.
nmatch
Максимальное количество совпадений для записи в pmatch.
pmatch
Массив объектов regmatch_t, в котором функция может хранить совпадения.
eflags
Параметры выполнения для regexec(). Например, вам может потребоваться вызвать regexec() несколько раз, если обрабатываемая строка слишком длинная. Аргумент eflags - это побитовое ИЛИ, включающее ноль или более следующих флагов:
REG_NOTBOL
аргумент string не указывает на начало строки.
REG_NOTEOL
string не завершается символом конца строки.

Библиотека:

libc

Описание:

Функция regexec() сравнивает string со скомпилированным регулярным выражением preg. Если regexec() находит совпадение, она возвращает ноль; в противном случае возвращается ненулевое значение.

Аргумент preg представляет собой скомпилированную форму базового регулярного выражения или расширенного регулярного выражения. Эти классы строго определены в IEEE P1003.2, Regular Expression Notation, и кратко описаны в документации к regcomp().

Функция regexec() записывает совпадения в массив pmatch, причем nmatch указывает максимальное количество совпадений для записи.

Смещения в pmatch[0] идентифицируют подстроку, соответствующую всему выражению, а смещения в pmatch[1 ... nmatch] идентифицируют подвыражения вплоть до nmatch. Неиспользуемые элементы массива pmatch устанавливаются в значение -1.


Note: Вы можете отключить запись подстрок, указав REG_NOSUB в regcomp() или установив для nmatch значение ноль.

Возвращаемое значение:

0
Строковый аргумент соответствует preg.
≠0
Соответствие не найдено или произошла ошибка (используйте regerror() для получения подробностей).

Примеры:

См. regcomp()

Классификация:

POSIX 1003.1

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Сведения об авторах:

Henry Spencer / Berkeley.

Тематические ссылки:

regmatch_t, regcomp(), regerror(), regfree()




Предыдущий раздел: Описание API системной библиотеки