34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.fp 5 B
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de Af
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de aF
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ie \\$3 .ft \\$1
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.el \{\
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ds ;G \&
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.nr ;G \\n(.f
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz\\*(;G
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ft \\n(;G \}
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de L
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de LR
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de RL
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de EX \" start example
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ta 1i 2i 3i 4i 5i 6i
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.PP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.RS
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.PD 0
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ft 5
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.nf
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.de EE \" end example
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.fi
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.ft
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.PD
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.RE
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.PP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz..
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.TH REGEX 3
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.SH NAME
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzregex \- regular expression interface
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.SH SYNOPSIS
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.EX
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#include <regex.h>
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regcomp(regex_t* \fIre\fP, const char* \fIregex\fP, int \fIcflags\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regexec(const regex_t* \fIre\fP, const char* \fIstring\fP, size_t \fInmatch\fP, regmatch_t \fIpmatch\fP[], int \fIeflags\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzsize_t regerror(int \fIcode\fP, const regex_t* \fIre\fP, char* \fIerrbuf\fP, size_t \fIerrbuf_size\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzvoid regfree(regex_t* \fIre\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzregclass_t regclass(const char* \fIstr\fP, char** \fIend\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regaddclass(const char* \fIname\fP, regclass_t \fIclassf\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regcollate(const char* \fIstr\fP, char** \fIend\fP, char* \fIbuf\fP, int \fIsize\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regcomb(regex_t* \fIre_1\fP, regex_t* \fIre_2\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzsize_t regdecomp(regex_t* \fIre\fP, regflags_t \fIflags\fP, char* \fIbuf\fP, size_t \fIsize\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regdup(regex_t* \fIre_old\fP, regex_t* \fIre_new\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzregstat_t* regstat(const regex_t* \fIre\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzregex_t* regcache(const char* \fIpattern\fP, regflags_t \fIflags\fP, int* \fIpcode\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regncomp(regex_t* \fIre\fP, const char* \fIpattern\fP, size_t \fIsize\fP, regflags_t \fIflags\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regnexec(const regex_t* \fIre\fP, const char* \fIsubject\fP, size_t \fIsize\fP, size_t \fInmatch\fP, regmatch_t* \fImatch\fP, regflags_t \fIflags\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regrecord(const regex_t* \fIre\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regrexec(const regex_t* \fIre\fP, const char* \fIbuf\fP, size_t \fIsize\fP, size_t \fInmatch\fP, regmatch_t* \fImatch\fP, regflags_t \fIflags\fP, int \fIsep\fP, void* \fIhandle\fP, regrecord_t \fIrecordf\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzvoid regfatal(regex_t* \fIre\fP, int \fIlevel\fP, int \fIcode\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzvoid regfatalpat(regex_t* \fIre\fP, int \fIlevel\fP, int \fIcode\fP, const char* \fIpattern\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regsubcomp(regex_t* \fIre\fP, const char* \fIstr\fP, const regflags_t* \fImap\fP, int \fIminmatch\fP, regflags_t \fIflags\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regsubexec(const regex_t* \fIre\fP, const char* \fIsubject\fP, size_t \fInmatch\fP, regmatch_t* match);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzint regsubflags(regex_t* \fIre\fP, const char* \fIstr\fP, char** \fIend\fP, int \fIdelim\fP, const regflags_t* \fImap\fP, int* \fIpm\fP, regflags_t* \fIpf\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzvoid regsubfree(regex_t* \fIre\fP);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.EE
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.SH DESCRIPTION
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcomp() ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regexec() ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regerror() ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzand
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regfree()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzare the POSIX regular expression functions.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzThe remaining functions are
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.B ast
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzextensions.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.B ast
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzalso provides
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.I flags
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzextensions to the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcomp() ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regexec()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzfunctions and
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.I code
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzextensions to the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regerror()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzfunction.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.PP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcache()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzmaintains a cache of compiled regular expressions for patterns of size
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz255 bytes or less.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzThe initial cache size is 8.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pattern
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzand
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L flags
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzare passed to
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcomp()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzwith an
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L re
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzpointer maintained by
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcache() .
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR pcode ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzif not 0, points to the return value of the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcomp()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzcall.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIf the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcomp()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzcall fails,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcache()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzreturns 0 and
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pcode
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzwill point to the non-zero error code.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzDo not call
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regfree()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzon the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L re
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzreturned by
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcache() .
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzBoth
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pattern
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzand
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L flags
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzare used to match entries in the cache.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzWhen the cache is full the least recently used
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L re
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzis freed (via
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regfree() )
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzto make space for the new pattern.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzAny
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L re
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzpreviously returned by
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L regcache()
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzmay be freed (invalidated) on the next call to
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcache() .
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIf
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pattern
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzis longer that 255 bytes then it is still passed on to
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.LR regcomp() ,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzbut it will not be cached.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIf
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pattern
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzis 0 then the cache is flushed.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIn addition, if the integer value of
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L flags
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzis greater than the current cache size, the cache size is increased
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzto that integer value.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz0 is always returned when
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pattern
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzis 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.L pcode
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzwill point to a non-zero value on error.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz.SH "SEE ALSO"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzstrmatch(3)