1 cfa37a7b 2004-04-10 devnull .TH REGEXP 3
3 cfa37a7b 2004-04-10 devnull regcomp, regcomplit, regcompnl, regexec, regsub, rregexec, rregsub, regerror \- regular expression
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
9 cfa37a7b 2004-04-10 devnull .B #include <regexp.h>
11 cfa37a7b 2004-04-10 devnull .ta \w'\fLRegprog 'u
13 cfa37a7b 2004-04-10 devnull Reprog *regcomp(char *exp)
16 cfa37a7b 2004-04-10 devnull Reprog *regcomplit(char *exp)
19 cfa37a7b 2004-04-10 devnull Reprog *regcompnl(char *exp)
23 cfa37a7b 2004-04-10 devnull int regexec(Reprog *prog, char *string, Resub *match, int msize)
27 cfa37a7b 2004-04-10 devnull void regsub(char *source, char *dest, int dlen, Resub *match, int msize)
31 cfa37a7b 2004-04-10 devnull int rregexec(Reprog *prog, Rune *string, Resub *match, int msize)
35 cfa37a7b 2004-04-10 devnull void rregsub(Rune *source, Rune *dest, int dlen, Resub *match, int msize)
38 cfa37a7b 2004-04-10 devnull void regerror(char *msg)
39 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
40 cfa37a7b 2004-04-10 devnull .I Regcomp
41 cfa37a7b 2004-04-10 devnull compiles a
42 cfa37a7b 2004-04-10 devnull regular expression and returns
43 cfa37a7b 2004-04-10 devnull a pointer to the generated description.
44 cfa37a7b 2004-04-10 devnull The space is allocated by
45 bf8a59fa 2004-04-11 devnull .IR malloc (3)
46 cfa37a7b 2004-04-10 devnull and may be released by
47 cfa37a7b 2004-04-10 devnull .IR free .
48 cfa37a7b 2004-04-10 devnull Regular expressions are exactly as in
49 cfa37a7b 2004-04-10 devnull .IR regexp (6).
51 cfa37a7b 2004-04-10 devnull .I Regcomplit
53 cfa37a7b 2004-04-10 devnull .I regcomp
54 cfa37a7b 2004-04-10 devnull except that all characters are treated literally.
55 cfa37a7b 2004-04-10 devnull .I Regcompnl
57 cfa37a7b 2004-04-10 devnull .I regcomp
58 cfa37a7b 2004-04-10 devnull except that the
60 cfa37a7b 2004-04-10 devnull metacharacter matches all characters, including newlines.
62 cfa37a7b 2004-04-10 devnull .I Regexec
63 cfa37a7b 2004-04-10 devnull matches a null-terminated
64 cfa37a7b 2004-04-10 devnull .I string
65 cfa37a7b 2004-04-10 devnull against the compiled regular expression in
66 cfa37a7b 2004-04-10 devnull .IR prog .
67 cfa37a7b 2004-04-10 devnull If it matches,
68 cfa37a7b 2004-04-10 devnull .I regexec
71 cfa37a7b 2004-04-10 devnull and fills in the array
73 cfa37a7b 2004-04-10 devnull with character pointers to the substrings of
74 cfa37a7b 2004-04-10 devnull .I string
75 cfa37a7b 2004-04-10 devnull that correspond to the
76 cfa37a7b 2004-04-10 devnull parenthesized subexpressions of
77 cfa37a7b 2004-04-10 devnull .IR exp :
78 cfa37a7b 2004-04-10 devnull .BI match[ i ].sp
79 cfa37a7b 2004-04-10 devnull points to the beginning and
80 cfa37a7b 2004-04-10 devnull .BI match[ i ].ep
81 cfa37a7b 2004-04-10 devnull points just beyond
82 cfa37a7b 2004-04-10 devnull the end of the
84 cfa37a7b 2004-04-10 devnull substring.
85 cfa37a7b 2004-04-10 devnull (Subexpression
87 cfa37a7b 2004-04-10 devnull begins at the
89 cfa37a7b 2004-04-10 devnull left parenthesis, counting from 1.)
90 cfa37a7b 2004-04-10 devnull Pointers in
91 cfa37a7b 2004-04-10 devnull .B match[0]
92 cfa37a7b 2004-04-10 devnull pick out the substring that corresponds to
93 cfa37a7b 2004-04-10 devnull the whole regular expression.
94 cfa37a7b 2004-04-10 devnull Unused elements of
96 cfa37a7b 2004-04-10 devnull are filled with zeros.
97 cfa37a7b 2004-04-10 devnull Matches involving
102 cfa37a7b 2004-04-10 devnull are extended as far as possible.
103 cfa37a7b 2004-04-10 devnull The number of array elements in
104 cfa37a7b 2004-04-10 devnull .I match
105 cfa37a7b 2004-04-10 devnull is given by
106 cfa37a7b 2004-04-10 devnull .IR msize .
107 cfa37a7b 2004-04-10 devnull The structure of elements of
108 cfa37a7b 2004-04-10 devnull .I match
112 cfa37a7b 2004-04-10 devnull typedef struct {
114 cfa37a7b 2004-04-10 devnull char *sp;
115 cfa37a7b 2004-04-10 devnull Rune *rsp;
118 cfa37a7b 2004-04-10 devnull char *ep;
119 cfa37a7b 2004-04-10 devnull Rune *rep;
121 cfa37a7b 2004-04-10 devnull } Resub;
125 cfa37a7b 2004-04-10 devnull .B match[0].sp
126 cfa37a7b 2004-04-10 devnull is nonzero on entry,
127 cfa37a7b 2004-04-10 devnull .I regexec
128 cfa37a7b 2004-04-10 devnull starts matching at that point within
129 cfa37a7b 2004-04-10 devnull .IR string .
131 cfa37a7b 2004-04-10 devnull .B match[0].ep
132 cfa37a7b 2004-04-10 devnull is nonzero on entry,
133 cfa37a7b 2004-04-10 devnull the last character matched is the one
134 cfa37a7b 2004-04-10 devnull preceding that point.
136 cfa37a7b 2004-04-10 devnull .I Regsub
137 cfa37a7b 2004-04-10 devnull places in
139 cfa37a7b 2004-04-10 devnull a substitution instance of
140 cfa37a7b 2004-04-10 devnull .I source
141 cfa37a7b 2004-04-10 devnull in the context of the last
142 cfa37a7b 2004-04-10 devnull .I regexec
143 cfa37a7b 2004-04-10 devnull performed using
144 cfa37a7b 2004-04-10 devnull .IR match .
145 cfa37a7b 2004-04-10 devnull Each instance of
146 cfa37a7b 2004-04-10 devnull .BI \e n\f1,
149 cfa37a7b 2004-04-10 devnull is a digit, is replaced by the
150 cfa37a7b 2004-04-10 devnull string delimited by
151 cfa37a7b 2004-04-10 devnull .BI match[ n ].sp
153 cfa37a7b 2004-04-10 devnull .BI match[ n ].ep\f1.
154 cfa37a7b 2004-04-10 devnull Each instance of
156 cfa37a7b 2004-04-10 devnull is replaced by the string delimited by
157 cfa37a7b 2004-04-10 devnull .B match[0].sp
159 cfa37a7b 2004-04-10 devnull .BR match[0].ep .
160 cfa37a7b 2004-04-10 devnull The substitution will always be null terminated and
161 cfa37a7b 2004-04-10 devnull trimmed to fit into dlen bytes.
163 cfa37a7b 2004-04-10 devnull .IR Regerror ,
164 cfa37a7b 2004-04-10 devnull called whenever an error is detected in
165 cfa37a7b 2004-04-10 devnull .IR regcomp ,
166 cfa37a7b 2004-04-10 devnull writes the string
168 cfa37a7b 2004-04-10 devnull on the standard error file and exits.
169 cfa37a7b 2004-04-10 devnull .I Regerror
170 cfa37a7b 2004-04-10 devnull can be replaced to perform
171 cfa37a7b 2004-04-10 devnull special error processing.
172 cfa37a7b 2004-04-10 devnull If the user supplied
173 cfa37a7b 2004-04-10 devnull .I regerror
174 cfa37a7b 2004-04-10 devnull returns rather than exits,
175 cfa37a7b 2004-04-10 devnull .I regcomp
176 cfa37a7b 2004-04-10 devnull will return 0.
178 cfa37a7b 2004-04-10 devnull .I Rregexec
180 cfa37a7b 2004-04-10 devnull .I rregsub
181 cfa37a7b 2004-04-10 devnull are variants of
182 cfa37a7b 2004-04-10 devnull .I regexec
184 cfa37a7b 2004-04-10 devnull .I regsub
185 cfa37a7b 2004-04-10 devnull that use strings of
186 cfa37a7b 2004-04-10 devnull .B Runes
187 cfa37a7b 2004-04-10 devnull instead of strings of
188 cfa37a7b 2004-04-10 devnull .BR chars .
189 cfa37a7b 2004-04-10 devnull With these routines, the
193 cfa37a7b 2004-04-10 devnull fields of the
194 cfa37a7b 2004-04-10 devnull .I match
195 cfa37a7b 2004-04-10 devnull array elements should be used.
196 cfa37a7b 2004-04-10 devnull .SH SOURCE
197 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/libregexp
198 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
199 cfa37a7b 2004-04-10 devnull .IR grep (1)
200 cfa37a7b 2004-04-10 devnull .SH DIAGNOSTICS
201 cfa37a7b 2004-04-10 devnull .I Regcomp
204 cfa37a7b 2004-04-10 devnull for an illegal expression
205 cfa37a7b 2004-04-10 devnull or other failure.
206 cfa37a7b 2004-04-10 devnull .I Regexec
207 cfa37a7b 2004-04-10 devnull returns 0
209 cfa37a7b 2004-04-10 devnull .I string
210 cfa37a7b 2004-04-10 devnull is not matched.
211 cfa37a7b 2004-04-10 devnull .SH BUGS
212 cfa37a7b 2004-04-10 devnull There is no way to specify or match a NUL character; NULs terminate patterns and strings.