The regex.h header defines the structures and symbolic constants used
by regcomp, regexec, regerror and regfree.
The structure type regex_t contains at least the following member:
size_t re_nsub
Number of parenthesized subexpressions.
The type regoff_t is defined as a signed arithmetic type that can hold the
largest value that can be stored in either a type of off_t or ssize_t.
The structure type regmatch_t contains at least the following members:
regoff_t rm_so
Byte offset from start of string to start of substring.
regoff_t rm_eo
Byte offset from start of string of the first character
after the end of substring.
Values for cflags passed to regcomp:
REG_EXTENDED
use extended regular expression.
REG__ICASE
ignore case in match.
REG_NOSUB
report only success or fail in regexec.
REG_NEWLINE
change the handling of newline.
Values for eflags passed to regexec:
REG_NOTBOL
The circumflex character (^), when taken as a special character,
will not match the beginning of string.
REG_NOTEOL
The dollar sign ($), when taken as a special character,
will not match the end of string.
The following constants are defined as error return values:
REG_NOMATCH
regexec failed to match.
REG_BADPAT
invalid regular expression.
REG_ECOLLATE
invalid collating element referenced.
REG_ECTYPE
invalid character class type referenced.
REG_EESCAPE
Trailing \ in pattern.
REG_ESUBREG
Number in \digit invalid or in error.
REG_EBRACK
[] imbalance.
REG_EPAREN
\(\) or () imbalance.
REG_EBRACE
\{\} imbalance.
REG_BADBR
Content of \{\} invalid: not a number, number too large,
more than two numbers, first larger than second.
REG_ERANGE
Invalid endpoint in range expression.
REG_ESPACE
Out of memory.
REG_BADRPT
?, * or + not preceded by valid regular expression.
REG_ENOSYS
The implementation does not support the function
The following are declared as functions and may also be declared as
macros:
extern int regcomp(regex_t *preg, const char *pattern, int cflags);
extern int regexec(const regex_t *preg, const char *string,
size_t nmatch, regmatch_t *pmatch, int eflags);
extern size_t regerror(int errcode, const regex_t *preg,
char *errbuf, size_t errbuf_size);
extern void regfree(regex_t *preg);