PCRE

PCRE (Perl Compatible Regular Expressions) — библиотека, реализующая работу регулярных выражений в стиле Perl (с некоторыми отличиями). Синтаксис регулярных выражений PCRE значительно более мощный и гибкий, чем стандартных регулярных выражений POSIX.

В том, или ином виде доступна для очень многих языков программирования. В частности, в PHP, модуль PCRE включен в ядро.

Автор библиотеки — Филип Хейзел (Philip Hazel). Библиотека написана на Си и распространяется под лицензией BSD.

Компиляция

 * pcre *pcre_compile2(const char *pattern, int options,int *errorcodeptr,const char **errptr, int *erroffset,const unsigned char *tableptr);
 * pcre *pcre_compile(const char *pattern, int options,const char **errptr, int *erroffset,const unsigned char *tableptr);

Поиск шаблона

 * int pcre_exec(const pcre *code, const pcre_extra *extra,const char *subject, int length, int startoffset,int options, int *ovector, int ovecsize);
 * int pcre_dfa_exec(const pcre *code, const pcre_extra *extra,const char *subject, int length, int startoffset,int options, int *ovector, int ovecsize,int *workspace, int wscount);

Извлечение нумерованных подстрок

 * int pcre_get_substring(const char *subject, int *ovector,int stringcount, int stringnumber,const char **stringptr);
 * int pcre_get_substring_list(const char *subject,int *ovector, int stringcount, const char ***listptr);
 * int pcre_copy_substring(const char *subject, int *ovector,int stringcount, int stringnumber, char *buffer,int buffersize);

Извлечение именованных подстрок

 * int pcre_get_stringnumber(const pcre *code,const char *name);
 * int pcre_get_named_substring(const pcre *code,const char *subject, int *ovector,int stringcount, const char *stringname,const char **stringptr);
 * int pcre_copy_named_substring(const pcre *code,const char *subject, int *ovector,int stringcount, const char *stringname,char *buffer, int buffersize);

Извлечение информации о шаблоне

 * int pcre_fullinfo(const pcre *code, const pcre_extra *extra,int what, void *where);
 * int pcre_info(const pcre *code, int *optptr, int *firstcharptr);

Очистка

 * void pcre_free_substring(const char *stringptr);
 * void pcre_free_substring_list(const char **stringptr);

Разное

 * char *pcre_version(void);
 * const unsigned char *pcre_maketables(void);
 * int pcre_config(int what, void *where);
 * int pcre_get_stringtable_entries(const pcre *code,const char *name, char **first, char **last);
 * int pcre_refcount(pcre *code, int adjust);
 * pcre_extra *pcre_study(const pcre *code, int options,const char **errptr);

Вспомогательные переопределяемые функции

 * void *(*pcre_malloc)(size_t);
 * void (*pcre_free)(void *);
 * void *(*pcre_stack_malloc)(size_t);
 * void (*pcre_stack_free)(void *);
 * int (*pcre_callout)(pcre_callout_block *);

Ссылки
Оригинальный мануал