Составить регулярное выражение
#include <regex.h>int regcomp( regex_t *preg,const char *pattern,int cflags );
regex_t
, где функция может хранить скомпилированное регулярное выражение.libc
Функция regcomp() подготавливает регулярное выражение preg для использования функцией regexec() из спецификации pattern и cflags. Член re_nsub в preg устанавливается равным количеству подвыражений в pattern.
Функции, которые работают с регулярными выражениями (regcomp(), regerror(), regexec(), и regfree()) поддерживают два класса регулярных выражений: Basic и Extended Regular. Эти классы строго определены в IEEE P1003.2, Regular Expression Notation.
Basic Regular Expressions
Основные регулярные выражения состоят из следующих элементов:
__Расширенные регулярные выражения __
Расширенные регулярные выражения также включают:
/** The following example prints out all lines* from FILE "f" that match "pattern".*/#include <stdio.h>#include <regex.h>#include <limits.h>#define BUFFER_SIZE 512void grep( char *pattern, FILE *f ){int t;regex_t re;char buffer[BUFFER_SIZE];if ( (t = regcomp( &re, pattern, REG_NOSUB )) != 0 ){regerror( t, &re, buffer, sizeof( buffer ) );fprintf( stderr, "grep: %s (%s)\n", buffer, pattern );return;}while ( fgets( buffer, BUFFER_SIZE, f ) != NULL ){if ( regexec( &re, buffer, 0, NULL, 0 ) == 0 ){fputs( buffer, stdout );}}regfree( &re );}
POSIX 1003.1
Henry Spencer / Berkeley.
regerror(), regexec(), regfree()
Предыдущий раздел: Описание API системной библиотеки