To compile, match, or search for a given regular expression, you must supply a pattern buffer. A pattern buffer holds one compiled regular expression.1
You can have several different pattern buffers simultaneously, each holding a compiled pattern for a different regular expression.
regex.h defines the pattern buffer struct with the
following public fields:
unsigned char *buffer;
unsigned long allocated;
char *fastmap;
char *translate;
size_t re_nsub;
unsigned no_sub : 1;
unsigned not_bol : 1;
unsigned not_eol : 1;
[1] Regular expressions are also referred to as “patterns,” hence the name “pattern buffer.”