Blame


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