Next: GNU Matching, Previous: GNU Pattern Buffers, Up: GNU Regex Functions [Contents][Index]
In GNU, you can both match and search for a given regular expression. To do either, you must first compile it in a pattern buffer (see GNU Pattern Buffers).
Regular expressions match according to the syntax with which they were
compiled; with GNU, you indicate what syntax you want by setting
the variable re_syntax_options
(declared in regex.h)
before calling the compiling function, re_compile_pattern
(see
below). See Syntax Bits, and Predefined Syntaxes.
You can change the value of re_syntax_options
at any time.
Usually, however, you set its value once and then never change it.
re_compile_pattern
takes a pattern buffer as an argument. You
must initialize the following fields:
translate initialization
translate
¶Initialize this to point to a translate table if you want one, or to zero if you don’t. We explain translate tables in GNU Translate Tables.
fastmap
¶Initialize this to nonzero if you want a fastmap, or to zero if you don’t.
buffer
¶allocated
If you want re_compile_pattern
to allocate memory for the
compiled pattern, set both of these to zero. If you have an existing
block of memory (allocated with malloc
) you want Regex to use,
set buffer
to its address and allocated
to its size (in
bytes).
re_compile_pattern
uses realloc
to extend the space for
the compiled pattern as necessary.
To compile a pattern buffer, use:
char * re_compile_pattern (const char *regex, const int regex_size, struct re_pattern_buffer *pattern_buffer)
regex is the regular expression’s address, regex_size is its length, and pattern_buffer is the pattern buffer’s address.
If re_compile_pattern
successfully compiles the regular
expression, it returns zero and sets *pattern_buffer
to the
compiled pattern. It sets the pattern buffer’s fields as follows:
buffer
¶to the compiled pattern.
syntax
¶to the current value of re_syntax_options
.
re_nsub
¶to the number of subexpressions in regex.
If re_compile_pattern
can’t compile regex, it returns an
error string corresponding to a POSIX error code.
Next: GNU Matching, Previous: GNU Pattern Buffers, Up: GNU Regex Functions [Contents][Index]