re.3 revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ie \\$3 .ft \\$1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nr ;G \\n(.f
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft \\n(;G \}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EX \" start example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ta 1i 2i 3i 4i 5i 6i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EE \" end example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinrecomp, reexec, ressub, refree, reerror \(mi regular expression library
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH SYNOPSIS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinRe_program_t* recomp(char* \fIpattern\fP, int \fIflags\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint reexec(Re_program_t* \fIre\fP, char* \fIsource\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvoid ressub(Re_program_t* \fIre\fP, Sfio_t* \fIsp\fP, char* \fIold\fP, char* \fInew\fP, int \fIflags\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvoid reerror(char* \fImessage\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvoid refree(Re_program_t* \fIre\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH DESCRIPTION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincompiles a regular expression in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand returns a pointer to the compiled regular expression.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe space is allocated by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR malloc (3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand may be released by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR refree .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinRegular expressions are as in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR egrep (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinexcept that newlines are treated as ordinary
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincharacters and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmatches the end of a null-terminated string.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L RE_EDSTYLE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwhich specifies
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstyle special characters,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR egrep (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinrespectively.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmatches the null-terminated
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstring against the compiled regular expression
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfrom a previous call to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR recomp .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf it matches,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns a non-zero value.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L RE_MATCH
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the array
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis filled with character pointers to the substrings of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthat correspond to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinparenthesized subexpressions of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR pattern :
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match[i].sp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpoints to the beginning and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match[i].ep
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpoints just beyond
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthe end of substring
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin(Subexpression
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbegins at the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmatched left parenthesis, counting from 1.)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPointers in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match[0]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpick out the substring that corresponds to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthe entire regular expression.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinUnused elements of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare filled with zeros.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinMatches involving
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare extended as far as possible.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinA maximum of 9 subexpressions will be matched.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe structure of elements of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin typedef struct
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin } rematch;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinplaces in the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR sfio (3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968china substitution instance of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinin the context of the last
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinperformed on
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR re\->match .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinEach instance of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis a digit, is replaced by the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstring delimited by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LI re\->match[ n ].sp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LI re\->match[ n ].ep .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinEach instance of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis replaced by the string delimited by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I re\->match[0].sp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR re\->match[0].ep .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen all occurrences of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare replaced by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L RE_LOWER
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.RL [ RE_UPPER ]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis converted to lower [upper] case.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L reerror,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincalled whenever an error is detected in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwrites the string
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinon the standard error file and exits.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmay be replaced to perform
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinspecial error processing.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH DIAGNOSTICS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns 0 for an invalid expression or other failure.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns 1 if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis accepted, 0 otherwise.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH "SEE ALSO"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chined(1), grep(1), expr(1)