regex: Use space optimization also with clang.
[gnulib.git] / doc / regex.texi
blob91d6bb7b4e1afa23773e38fe69318d2b80d93bad
1 @node Overview
2 @chapter Overview
4 A @dfn{regular expression} (or @dfn{regexp}, or @dfn{pattern}) is a text
5 string that describes some (mathematical) set of strings.  A regexp
6 @var{r} @dfn{matches} a string @var{s} if @var{s} is in the set of
7 strings described by @var{r}.
9 Using the Regex library, you can:
11 @itemize @bullet
13 @item
14 see if a string matches a specified pattern as a whole, and
16 @item
17 search within a string for a substring matching a specified pattern.
19 @end itemize
21 Some regular expressions match only one string, i.e., the set they
22 describe has only one member.  For example, the regular expression
23 @samp{foo} matches the string @samp{foo} and no others.  Other regular
24 expressions match more than one string, i.e., the set they describe has
25 more than one member.  For example, the regular expression @samp{f*}
26 matches the set of strings made up of any number (including zero) of
27 @samp{f}s.  As you can see, some characters in regular expressions match
28 themselves (such as @samp{f}) and some don't (such as @samp{*}); the
29 ones that don't match themselves instead let you specify patterns that
30 describe many different strings.
32 To either match or search for a regular expression with the Regex
33 library functions, you must first compile it with a Regex pattern
34 compiling function.  A @dfn{compiled pattern} is a regular expression
35 converted to the internal format used by the library functions.  Once
36 you've compiled a pattern, you can use it for matching or searching any
37 number of times.
39 The Regex library is used by including @file{regex.h}.
40 @pindex regex.h
41 Regex provides three groups of functions with which you can operate on
42 regular expressions.  One group---the GNU group---is more
43 powerful but not completely compatible with the other two, namely the
44 POSIX and Berkeley Unix groups; its interface was designed
45 specifically for GNU.
47 We wrote this chapter with programmers in mind, not users of
48 programs---such as Emacs---that use Regex.  We describe the Regex
49 library in its entirety, not how to write regular expressions that a
50 particular program understands.
53 @node Regular Expression Syntax
54 @chapter Regular Expression Syntax
56 @cindex regular expressions, syntax of
57 @cindex syntax of regular expressions
59 @dfn{Characters} are things you can type.  @dfn{Operators} are things in
60 a regular expression that match one or more characters.  You compose
61 regular expressions from operators, which in turn you specify using one
62 or more characters.
64 Most characters represent what we call the match-self operator, i.e.,
65 they match themselves; we call these characters @dfn{ordinary}.  Other
66 characters represent either all or parts of fancier operators; e.g.,
67 @samp{.} represents what we call the match-any-character operator
68 (which, no surprise, matches (almost) any character); we call these
69 characters @dfn{special}.  Two different things determine what
70 characters represent what operators:
72 @enumerate
73 @item
74 the regular expression syntax your program has told the Regex library to
75 recognize, and
77 @item
78 the context of the character in the regular expression.
79 @end enumerate
81 In the following sections, we describe these things in more detail.
83 @menu
84 * Syntax Bits::
85 * Predefined Syntaxes::
86 * Collating Elements vs. Characters::
87 * The Backslash Character::
88 @end menu
91 @node Syntax Bits
92 @section Syntax Bits
94 @cindex syntax bits
96 In any particular syntax for regular expressions, some characters are
97 always special, others are sometimes special, and others are never
98 special.  The particular syntax that Regex recognizes for a given
99 regular expression depends on the current syntax (as set by
100 @code{re_set_syntax}) when the pattern buffer of that regular expression
101 was compiled.
103 You get a pattern buffer by compiling a regular expression.  @xref{GNU
104 Pattern Buffers}, for more information on pattern buffers.  @xref{GNU
105 Regular Expression Compiling}, and @ref{BSD Regular Expression
106 Compiling}, for more information on compiling.
108 Regex considers the current syntax to be a collection of bits; we refer
109 to these bits as @dfn{syntax bits}.  In most cases, they affect what
110 characters represent what operators.  We describe the meanings of the
111 operators to which we refer in @ref{Common Operators}, @ref{GNU
112 Operators}, and @ref{GNU Emacs Operators}.
114 For reference, here is the complete list of syntax bits, in alphabetical
115 order:
117 @table @code
119 @cnindex RE_BACKSLASH_ESCAPE_IN_LIST
120 @item RE_BACKSLASH_ESCAPE_IN_LISTS
121 If this bit is set, then @samp{\} inside a list (@pxref{List Operators}
122 quotes (makes ordinary, if it's special) the following character; if
123 this bit isn't set, then @samp{\} is an ordinary character inside lists.
124 (@xref{The Backslash Character}, for what @samp{\} does outside of lists.)
126 @cnindex RE_BK_PLUS_QM
127 @item RE_BK_PLUS_QM
128 If this bit is set, then @samp{\+} represents the match-one-or-more
129 operator and @samp{\?} represents the match-zero-or-more operator; if
130 this bit isn't set, then @samp{+} represents the match-one-or-more
131 operator and @samp{?} represents the match-zero-or-one operator.  This
132 bit is irrelevant if @code{RE_LIMITED_OPS} is set.
134 @cnindex RE_CHAR_CLASSES
135 @item RE_CHAR_CLASSES
136 If this bit is set, then you can use character classes in lists; if this
137 bit isn't set, then you can't.
139 @cnindex RE_CONTEXT_INDEP_ANCHORS
140 @item RE_CONTEXT_INDEP_ANCHORS
141 If this bit is set, then @samp{^} and @samp{$} are special anywhere outside
142 a list; if this bit isn't set, then these characters are special only in
143 certain contexts.  @xref{Match-beginning-of-line Operator}, and
144 @ref{Match-end-of-line Operator}.
146 @cnindex RE_CONTEXT_INDEP_OPS
147 @item RE_CONTEXT_INDEP_OPS
148 If this bit is set, then certain characters are special anywhere outside
149 a list; if this bit isn't set, then those characters are special only in
150 some contexts and are ordinary elsewhere.  Specifically, if this bit
151 isn't set then @samp{*}, and (if the syntax bit @code{RE_LIMITED_OPS}
152 isn't set) @samp{+} and @samp{?} (or @samp{\+} and @samp{\?}, depending
153 on the syntax bit @code{RE_BK_PLUS_QM}) represent repetition operators
154 only if they're not first in a regular expression or just after an
155 open-group or alternation operator.  The same holds for @samp{@{} (or
156 @samp{\@{}, depending on the syntax bit @code{RE_NO_BK_BRACES}) if
157 it is the beginning of a valid interval and the syntax bit
158 @code{RE_INTERVALS} is set.
160 @cnindex RE_CONTEXT_INVALID_DUP
161 @item RE_CONTEXT_INVALID_DUP
162 If this bit is set, then an open-interval operator cannot occur at the
163 start of a regular expression, or immediately after an alternation,
164 open-group or close-interval operator.
166 @cnindex RE_CONTEXT_INVALID_OPS
167 @item RE_CONTEXT_INVALID_OPS
168 If this bit is set, then repetition and alternation operators can't be
169 in certain positions within a regular expression.  Specifically, the
170 regular expression is invalid if it has:
172 @itemize @bullet
174 @item
175 a repetition operator first in the regular expression or just after a
176 match-beginning-of-line, open-group, or alternation operator; or
178 @item
179 an alternation operator first or last in the regular expression, just
180 before a match-end-of-line operator, or just after an alternation or
181 open-group operator.
183 @end itemize
185 If this bit isn't set, then you can put the characters representing the
186 repetition and alternation characters anywhere in a regular expression.
187 Whether or not they will in fact be operators in certain positions
188 depends on other syntax bits.
190 @cnindex RE_DEBUG
191 @item RE_DEBUG
192 If this bit is set, and the regex library was compiled with
193 @code{-DDEBUG}, then internal debugging is turned on; if unset, then
194 it is turned off.
196 @cnindex RE_DOT_NEWLINE
197 @item RE_DOT_NEWLINE
198 If this bit is set, then the match-any-character operator matches
199 a newline; if this bit isn't set, then it doesn't.
201 @cnindex RE_DOT_NOT_NULL
202 @item RE_DOT_NOT_NULL
203 If this bit is set, then the match-any-character operator doesn't match
204 a null character; if this bit isn't set, then it does.
206 @cnindex RE_HAT_LISTS_NOT_NEWLINE
207 @item RE_HAT_LISTS_NOT_NEWLINE
208 If this bit is set, nonmatching lists @samp{[^...]} do not match
209 newline; if not set, they do.
211 @cnindex RE_ICASE
212 @item RE_ICASE
213 If this bit is set, then ignore case when matching; otherwise, case is
214 significant.
216 @cnindex RE_INTERVALS
217 @item RE_INTERVALS
218 If this bit is set, then Regex recognizes interval operators; if this bit
219 isn't set, then it doesn't.
221 @cnindex RE_INVALID_INTERVAL_ORD
222 @item RE_INVALID_INTERVAL_ORD
223 If this bit is set, a syntactically invalid interval is treated as a
224 string of ordinary characters.  For example, the extended regular
225 expression @samp{a@{1} is treated as @samp{a\@{1}.
227 @cnindex RE_LIMITED_OPS
228 @item RE_LIMITED_OPS
229 If this bit is set, then Regex doesn't recognize the match-one-or-more,
230 match-zero-or-one or alternation operators; if this bit isn't set, then
231 it does.
233 @cnindex RE_NEWLINE_ALT
234 @item RE_NEWLINE_ALT
235 If this bit is set, then newline represents the alternation operator; if
236 this bit isn't set, then newline is ordinary.
238 @cnindex RE_NO_BK_BRACES
239 @item RE_NO_BK_BRACES
240 If this bit is set, then @samp{@{} represents the open-interval operator
241 and @samp{@}} represents the close-interval operator; if this bit isn't
242 set, then @samp{\@{} represents the open-interval operator and
243 @samp{\@}} represents the close-interval operator.  This bit is relevant
244 only if @code{RE_INTERVALS} is set.
246 @cnindex RE_NO_BK_PARENS
247 @item RE_NO_BK_PARENS
248 If this bit is set, then @samp{(} represents the open-group operator and
249 @samp{)} represents the close-group operator; if this bit isn't set, then
250 @samp{\(} represents the open-group operator and @samp{\)} represents
251 the close-group operator.
253 @cnindex RE_NO_BK_REFS
254 @item RE_NO_BK_REFS
255 If this bit is set, then Regex doesn't recognize @samp{\}@var{digit} as
256 the back-reference operator; if this bit isn't set, then it does.
258 @cnindex RE_NO_BK_VBAR
259 @item RE_NO_BK_VBAR
260 If this bit is set, then @samp{|} represents the alternation operator;
261 if this bit isn't set, then @samp{\|} represents the alternation
262 operator.  This bit is irrelevant if @code{RE_LIMITED_OPS} is set.
264 @cnindex RE_NO_EMPTY_RANGES
265 @item RE_NO_EMPTY_RANGES
266 If this bit is set, then a regular expression with a range whose ending
267 point collates lower than its starting point is invalid; if this bit
268 isn't set, then Regex considers such a range to be empty.
270 @cnindex RE_NO_GNU_OPS
271 @item RE_NO_GNU_OPS
272 If this bit is set, GNU regex operators are not recognized; otherwise,
273 they are.
275 @cnindex RE_NO_POSIX_BACKTRACKING
276 @item RE_NO_POSIX_BACKTRACKING
277 If this bit is set, succeed as soon as we match the whole pattern,
278 without further backtracking.  This means that a match may not be
279 the leftmost longest; @pxref{What Gets Matched?} for what this means.
281 @cnindex RE_NO_SUB
282 @item RE_NO_SUB
283 If this bit is set, then @code{no_sub} will be set to one during
284 @code{re_compile_pattern}.  This causes matching and searching routines
285 not to record substring match information.
287 @cnindex RE_UNMATCHED_RIGHT_PAREN_ORD
288 @item RE_UNMATCHED_RIGHT_PAREN_ORD
289 If this bit is set and the regular expression has no matching open-group
290 operator, then Regex considers what would otherwise be a close-group
291 operator (based on how @code{RE_NO_BK_PARENS} is set) to match @samp{)}.
293 @end table
296 @node Predefined Syntaxes
297 @section Predefined Syntaxes
299 If you're programming with Regex, you can set a pattern buffer's
300 (@pxref{GNU Pattern Buffers})
301 syntax either to an arbitrary combination of syntax bits
302 (@pxref{Syntax Bits}) or else to the configurations defined by Regex.
303 These configurations define the syntaxes used by certain
304 programs---GNU Emacs,
305 @cindex Emacs
306 POSIX Awk,
307 @cindex POSIX Awk
308 traditional Awk,
309 @cindex Awk
310 Grep,
311 @cindex Grep
312 @cindex Egrep
313 Egrep---in addition to syntaxes for POSIX basic and extended
314 regular expressions.
316 The predefined syntaxes---taken directly from @file{regex.h}---are:
318 @smallexample
319 #define RE_SYNTAX_EMACS 0
321 #define RE_SYNTAX_AWK                                                   \
322   (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL                       \
323    | RE_NO_BK_PARENS            | RE_NO_BK_REFS                         \
324    | RE_NO_BK_VBAR               | RE_NO_EMPTY_RANGES                   \
325    | RE_UNMATCHED_RIGHT_PAREN_ORD)
327 #define RE_SYNTAX_POSIX_AWK                                             \
328   (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
330 #define RE_SYNTAX_GREP                                                  \
331   (RE_BK_PLUS_QM              | RE_CHAR_CLASSES                         \
332    | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS                            \
333    | RE_NEWLINE_ALT)
335 #define RE_SYNTAX_EGREP                                                 \
336   (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS                    \
337    | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE                    \
338    | RE_NEWLINE_ALT       | RE_NO_BK_PARENS                             \
339    | RE_NO_BK_VBAR)
341 #define RE_SYNTAX_POSIX_EGREP                                           \
342   (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
344 /* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
345 #define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
347 #define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
349 /* Syntax bits common to both basic and extended POSIX regex syntax.  */
350 #define _RE_SYNTAX_POSIX_COMMON                                         \
351   (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL              \
352    | RE_INTERVALS  | RE_NO_EMPTY_RANGES)
354 #define RE_SYNTAX_POSIX_BASIC                                           \
355   (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
357 /* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
358    RE_LIMITED_OPS, i.e., \? \+ \| are not recognized.  Actually, this
359    isn't minimal, since other operators, such as \`, aren't disabled.  */
360 #define RE_SYNTAX_POSIX_MINIMAL_BASIC                                   \
361   (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
363 #define RE_SYNTAX_POSIX_EXTENDED                                        \
364   (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS                   \
365    | RE_CONTEXT_INDEP_OPS  | RE_NO_BK_BRACES                            \
366    | RE_NO_BK_PARENS       | RE_NO_BK_VBAR                              \
367    | RE_UNMATCHED_RIGHT_PAREN_ORD)
369 /* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
370    replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added.  */
371 #define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                                \
372   (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                  \
373    | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES                           \
374    | RE_NO_BK_PARENS        | RE_NO_BK_REFS                             \
375    | RE_NO_BK_VBAR          | RE_UNMATCHED_RIGHT_PAREN_ORD)
376 @end smallexample
378 @node Collating Elements vs. Characters
379 @section Collating Elements vs.@: Characters
381 POSIX generalizes the notion of a character to that of a
382 collating element.  It defines a @dfn{collating element} to be ``a
383 sequence of one or more bytes defined in the current collating sequence
384 as a unit of collation.''
386 This generalizes the notion of a character in
387 two ways.  First, a single character can map into two or more collating
388 elements.  For example, the German
389 @tex
390 ``\ss''
391 @end tex
392 @ifinfo
393 ``es-zet''
394 @end ifinfo
395 collates as the collating element @samp{s} followed by another collating
396 element @samp{s}.  Second, two or more characters can map into one
397 collating element.  For example, the Spanish @samp{ll} collates after
398 @samp{l} and before @samp{m}.
400 Since POSIX's ``collating element'' preserves the essential idea of
401 a ``character,'' we use the latter, more familiar, term in this document.
403 @node The Backslash Character
404 @section The Backslash Character
406 @cindex \
407 The @samp{\} character has one of four different meanings, depending on
408 the context in which you use it and what syntax bits are set
409 (@pxref{Syntax Bits}).  It can: 1) stand for itself, 2) quote the next
410 character, 3) introduce an operator, or 4) do nothing.
412 @enumerate
413 @item
414 It stands for itself inside a list
415 (@pxref{List Operators}) if the syntax bit
416 @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is not set.  For example, @samp{[\]}
417 would match @samp{\}.
419 @item
420 It quotes (makes ordinary, if it's special) the next character when you
421 use it either:
423 @itemize @bullet
424 @item
425 outside a list,@footnote{Sometimes
426 you don't have to explicitly quote special characters to make
427 them ordinary.  For instance, most characters lose any special meaning
428 inside a list (@pxref{List Operators}).  In addition, if the syntax bits
429 @code{RE_CONTEXT_INVALID_OPS} and @code{RE_CONTEXT_INDEP_OPS}
430 aren't set, then (for historical reasons) the matcher considers special
431 characters ordinary if they are in contexts where the operations they
432 represent make no sense; for example, then the match-zero-or-more
433 operator (represented by @samp{*}) matches itself in the regular
434 expression @samp{*foo} because there is no preceding expression on which
435 it can operate.  It is poor practice, however, to depend on this
436 behavior; if you want a special character to be ordinary outside a list,
437 it's better to always quote it, regardless.} or
439 @item
440 inside a list and the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is set.
442 @end itemize
444 @item
445 It introduces an operator when followed by certain ordinary
446 characters---sometimes only when certain syntax bits are set.  See the
447 cases @code{RE_BK_PLUS_QM}, @code{RE_NO_BK_BRACES}, @code{RE_NO_BK_VAR},
448 @code{RE_NO_BK_PARENS}, @code{RE_NO_BK_REF} in @ref{Syntax Bits}.  Also:
450 @itemize @bullet
451 @item
452 @samp{\b} represents the match-word-boundary operator
453 (@pxref{Match-word-boundary Operator}).
455 @item
456 @samp{\B} represents the match-within-word operator
457 (@pxref{Match-within-word Operator}).
459 @item
460 @samp{\<} represents the match-beginning-of-word operator @*
461 (@pxref{Match-beginning-of-word Operator}).
463 @item
464 @samp{\>} represents the match-end-of-word operator
465 (@pxref{Match-end-of-word Operator}).
467 @item
468 @samp{\w} represents the match-word-constituent operator
469 (@pxref{Match-word-constituent Operator}).
471 @item
472 @samp{\W} represents the match-non-word-constituent operator
473 (@pxref{Match-non-word-constituent Operator}).
475 @item
476 @samp{\`} represents the match-beginning-of-buffer
477 operator and @samp{\'} represents the match-end-of-buffer operator
478 (@pxref{Buffer Operators}).
480 @item
481 If Regex was compiled with the C preprocessor symbol @code{emacs}
482 defined, then @samp{\s@var{class}} represents the match-syntactic-class
483 operator and @samp{\S@var{class}} represents the
484 match-not-syntactic-class operator (@pxref{Syntactic Class Operators}).
486 @end itemize
488 @item
489 In all other cases, Regex ignores @samp{\}.  For example,
490 @samp{\n} matches @samp{n}.
492 @end enumerate
494 @node Common Operators
495 @chapter Common Operators
497 You compose regular expressions from operators.  In the following
498 sections, we describe the regular expression operators specified by
499 POSIX; GNU also uses these.  Most operators have more than one
500 representation as characters.  @xref{Regular Expression Syntax}, for
501 what characters represent what operators under what circumstances.
503 For most operators that can be represented in two ways, one
504 representation is a single character and the other is that character
505 preceded by @samp{\}.  For example, either @samp{(} or @samp{\(}
506 represents the open-group operator.  Which one does depends on the
507 setting of a syntax bit, in this case @code{RE_NO_BK_PARENS}.  Why is
508 this so?  Historical reasons dictate some of the varying
509 representations, while POSIX dictates others.
511 Finally, almost all characters lose any special meaning inside a list
512 (@pxref{List Operators}).
514 @menu
515 * Match-self Operator::                 Ordinary characters.
516 * Match-any-character Operator::        .
517 * Concatenation Operator::              Juxtaposition.
518 * Repetition Operators::                *  +  ? @{@}
519 * Alternation Operator::                |
520 * List Operators::                      [...]  [^...]
521 * Grouping Operators::                  (...)
522 * Back-reference Operator::             \digit
523 * Anchoring Operators::                 ^  $
524 @end menu
526 @node Match-self Operator
527 @section The Match-self Operator (@var{ordinary character})
529 This operator matches the character itself.  All ordinary characters
530 (@pxref{Regular Expression Syntax}) represent this operator.  For
531 example, @samp{f} is always an ordinary character, so the regular
532 expression @samp{f} matches only the string @samp{f}.  In
533 particular, it does @emph{not} match the string @samp{ff}.
535 @node Match-any-character Operator
536 @section The Match-any-character Operator (@code{.})
538 @cindex @samp{.}
540 This operator matches any single printing or nonprinting character
541 except it won't match a:
543 @table @asis
544 @item newline
545 if the syntax bit @code{RE_DOT_NEWLINE} isn't set.
547 @item null
548 if the syntax bit @code{RE_DOT_NOT_NULL} is set.
550 @end table
552 The @samp{.} (period) character represents this operator.  For example,
553 @samp{a.b} matches any three-character string beginning with @samp{a}
554 and ending with @samp{b}.
556 @node Concatenation Operator
557 @section The Concatenation Operator
559 This operator concatenates two regular expressions @var{a} and @var{b}.
560 No character represents this operator; you simply put @var{b} after
561 @var{a}.  The result is a regular expression that will match a string if
562 @var{a} matches its first part and @var{b} matches the rest.  For
563 example, @samp{xy} (two match-self operators) matches @samp{xy}.
565 @node Repetition Operators
566 @section Repetition Operators
568 Repetition operators repeat the preceding regular expression a specified
569 number of times.
571 @menu
572 * Match-zero-or-more Operator::  *
573 * Match-one-or-more Operator::   +
574 * Match-zero-or-one Operator::   ?
575 * Interval Operators::           @{@}
576 @end menu
578 @node Match-zero-or-more Operator
579 @subsection The Match-zero-or-more Operator (@code{*})
581 @cindex @samp{*}
583 This operator repeats the smallest possible preceding regular expression
584 as many times as necessary (including zero) to match the pattern.
585 @samp{*} represents this operator.  For example, @samp{o*}
586 matches any string made up of zero or more @samp{o}s.  Since this
587 operator operates on the smallest preceding regular expression,
588 @samp{fo*} has a repeating @samp{o}, not a repeating @samp{fo}.  So,
589 @samp{fo*} matches @samp{f}, @samp{fo}, @samp{foo}, and so on.
591 Since the match-zero-or-more operator is a suffix operator, it may be
592 useless as such when no regular expression precedes it.  This is the
593 case when it:
595 @itemize @bullet
596 @item
597 is first in a regular expression, or
599 @item
600 follows a match-beginning-of-line, open-group, or alternation
601 operator.
603 @end itemize
605 @noindent
606 Three different things can happen in these cases:
608 @enumerate
609 @item
610 If the syntax bit @code{RE_CONTEXT_INVALID_OPS} is set, then the
611 regular expression is invalid.
613 @item
614 If @code{RE_CONTEXT_INVALID_OPS} isn't set, but
615 @code{RE_CONTEXT_INDEP_OPS} is, then @samp{*} represents the
616 match-zero-or-more operator (which then operates on the empty string).
618 @item
619 Otherwise, @samp{*} is ordinary.
621 @end enumerate
623 @cindex backtracking
624 The matcher processes a match-zero-or-more operator by first matching as
625 many repetitions of the smallest preceding regular expression as it can.
626 Then it continues to match the rest of the pattern.
628 If it can't match the rest of the pattern, it backtracks (as many times
629 as necessary), each time discarding one of the matches until it can
630 either match the entire pattern or be certain that it cannot get a
631 match.  For example, when matching @samp{ca*ar} against @samp{caaar},
632 the matcher first matches all three @samp{a}s of the string with the
633 @samp{a*} of the regular expression.  However, it cannot then match the
634 final @samp{ar} of the regular expression against the final @samp{r} of
635 the string.  So it backtracks, discarding the match of the last @samp{a}
636 in the string.  It can then match the remaining @samp{ar}.
639 @node Match-one-or-more Operator
640 @subsection The Match-one-or-more Operator (@code{+} or @code{\+})
642 @cindex @samp{+}
644 If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't recognize
645 this operator.  Otherwise, if the syntax bit @code{RE_BK_PLUS_QM} isn't
646 set, then @samp{+} represents this operator; if it is, then @samp{\+}
647 does.
649 This operator is similar to the match-zero-or-more operator except that
650 it repeats the preceding regular expression at least once;
651 @pxref{Match-zero-or-more Operator}, for what it operates on, how some
652 syntax bits affect it, and how Regex backtracks to match it.
654 For example, supposing that @samp{+} represents the match-one-or-more
655 operator; then @samp{ca+r} matches, e.g., @samp{car} and
656 @samp{caaaar}, but not @samp{cr}.
658 @node Match-zero-or-one Operator
659 @subsection The Match-zero-or-one Operator (@code{?} or @code{\?})
660 @cindex @samp{?}
662 If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't
663 recognize this operator.  Otherwise, if the syntax bit
664 @code{RE_BK_PLUS_QM} isn't set, then @samp{?} represents this operator;
665 if it is, then @samp{\?} does.
667 This operator is similar to the match-zero-or-more operator except that
668 it repeats the preceding regular expression once or not at all;
669 @pxref{Match-zero-or-more Operator}, to see what it operates on, how
670 some syntax bits affect it, and how Regex backtracks to match it.
672 For example, supposing that @samp{?} represents the match-zero-or-one
673 operator; then @samp{ca?r} matches both @samp{car} and @samp{cr}, but
674 nothing else.
676 @node Interval Operators
677 @subsection Interval Operators (@code{@{} @dots{} @code{@}} or @code{\@{} @dots{} @code{\@}})
679 @cindex interval expression
680 @cindex @samp{@{}
681 @cindex @samp{@}}
682 @cindex @samp{\@{}
683 @cindex @samp{\@}}
685 If the syntax bit @code{RE_INTERVALS} is set, then Regex recognizes
686 @dfn{interval expressions}.  They repeat the smallest possible preceding
687 regular expression a specified number of times.
689 If the syntax bit @code{RE_NO_BK_BRACES} is set, @samp{@{} represents
690 the @dfn{open-interval operator} and @samp{@}} represents the
691 @dfn{close-interval operator} ; otherwise, @samp{\@{} and @samp{\@}} do.
693 Specifically, supposing that @samp{@{} and @samp{@}} represent the
694 open-interval and close-interval operators; then:
696 @table @code
697 @item  @{@var{count}@}
698 matches exactly @var{count} occurrences of the preceding regular
699 expression.
701 @item @{@var{min},@}
702 matches @var{min} or more occurrences of the preceding regular
703 expression.
705 @item  @{@var{min}, @var{max}@}
706 matches at least @var{min} but no more than @var{max} occurrences of
707 the preceding regular expression.
709 @end table
711 The interval expression (but not necessarily the regular expression that
712 contains it) is invalid if:
714 @itemize @bullet
715 @item
716 @var{min} is greater than @var{max}, or
718 @item
719 any of @var{count}, @var{min}, or @var{max} are outside the range
720 zero to @code{RE_DUP_MAX} (which symbol @file{regex.h}
721 defines).
723 @end itemize
725 If the interval expression is invalid and the syntax bit
726 @code{RE_NO_BK_BRACES} is set, then Regex considers all the
727 characters in the would-be interval to be ordinary.  If that bit
728 isn't set, then the regular expression is invalid.
730 If the interval expression is valid but there is no preceding regular
731 expression on which to operate, then if the syntax bit
732 @code{RE_CONTEXT_INVALID_OPS} is set, the regular expression is invalid.
733 If that bit isn't set, then Regex considers all the characters---other
734 than backslashes, which it ignores---in the would-be interval to be
735 ordinary.
738 @node Alternation Operator
739 @section The Alternation Operator (@code{|} or @code{\|})
741 @kindex |
742 @kindex \|
743 @cindex alternation operator
744 @cindex or operator
746 If the syntax bit @code{RE_LIMITED_OPS} is set, then Regex doesn't
747 recognize this operator.  Otherwise, if the syntax bit
748 @code{RE_NO_BK_VBAR} is set, then @samp{|} represents this operator;
749 otherwise, @samp{\|} does.
751 Alternatives match one of a choice of regular expressions:
752 if you put the character(s) representing the alternation operator between
753 any two regular expressions @var{a} and @var{b}, the result matches
754 the union of the strings that @var{a} and @var{b} match.  For
755 example, supposing that @samp{|} is the alternation operator, then
756 @samp{foo|bar|quux} would match any of @samp{foo}, @samp{bar} or
757 @samp{quux}.
759 The alternation operator operates on the @emph{largest} possible
760 surrounding regular expressions.  (Put another way, it has the lowest
761 precedence of any regular expression operator.)
762 Thus, the only way you can
763 delimit its arguments is to use grouping.  For example, if @samp{(} and
764 @samp{)} are the open and close-group operators, then @samp{fo(o|b)ar}
765 would match either @samp{fooar} or @samp{fobar}.  (@samp{foo|bar} would
766 match @samp{foo} or @samp{bar}.)
768 @cindex backtracking
769 The matcher usually tries all combinations of alternatives so as to
770 match the longest possible string.  For example, when matching
771 @samp{(fooq|foo)*(qbarquux|bar)} against @samp{fooqbarquux}, it cannot
772 take, say, the first (``depth-first'') combination it could match, since
773 then it would be content to match just @samp{fooqbar}.
775 Note that since the default behavior is to return the leftmost longest
776 match, when more than one of a series of alternatives matches the actual
777 match will be the longest matching alternative, not necessarily the
778 first in the list.
781 @node List Operators
782 @section List Operators (@code{[} @dots{} @code{]} and @code{[^} @dots{} @code{]})
784 @cindex matching list
785 @cindex @samp{[}
786 @cindex @samp{]}
787 @cindex @samp{^}
788 @cindex @samp{-}
789 @cindex @samp{\}
790 @cindex @samp{[^}
791 @cindex nonmatching list
792 @cindex matching newline
793 @cindex bracket expression
795 @dfn{Lists}, also called @dfn{bracket expressions}, are a set of one or
796 more items.  An @dfn{item} is a character,
797 a collating symbol, an equivalence class expression,
798 a character class expression, or a range expression.  The syntax bits
799 affect which kinds of items you can put in a list.  We explain the last
800 four items in subsections below.  Empty lists are invalid.
802 A @dfn{matching list} matches a single character represented by one of
803 the list items.  You form a matching list by enclosing one or more items
804 within an @dfn{open-matching-list operator} (represented by @samp{[})
805 and a @dfn{close-list operator} (represented by @samp{]}).
807 For example, @samp{[ab]} matches either @samp{a} or @samp{b}.
808 @samp{[ad]*} matches the empty string and any string composed of just
809 @samp{a}s and @samp{d}s in any order.  Regex considers invalid a regular
810 expression with a @samp{[} but no matching
811 @samp{]}.
813 @dfn{Nonmatching lists} are similar to matching lists except that they
814 match a single character @emph{not} represented by one of the list
815 items.  You use an @dfn{open-nonmatching-list operator} (represented by
816 @samp{[^}@footnote{Regex therefore doesn't consider the @samp{^} to be
817 the first character in the list.  If you put a @samp{^} character first
818 in (what you think is) a matching list, you'll turn it into a
819 nonmatching list.}) instead of an open-matching-list operator to start a
820 nonmatching list.
822 For example, @samp{[^ab]} matches any character except @samp{a} or
823 @samp{b}.
825 If the syntax bit @code{RE_HAT_LISTS_NOT_NEWLINE} is set, then
826 nonmatching lists do not match a newline.
828 Most characters lose any special meaning inside a list.  The special
829 characters inside a list follow.
831 @table @samp
832 @item ]
833 ends the list if it's not the first list item.  So, if you want to make
834 the @samp{]} character a list item, you must put it first.
836 @item \
837 quotes the next character if the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is
838 set.
840 @item [.
841 represents the open-collating-symbol operator (@pxref{Collating Symbol
842 Operators}).
844 @item .]
845 represents the close-collating-symbol operator.
847 @item [=
848 represents the open-equivalence-class operator (@pxref{Equivalence Class
849 Operators}).
851 @item =]
852 represents the close-equivalence-class operator.
854 @item [:
855 represents the open-character-class operator (@pxref{Character Class
856 Operators}) if the syntax bit @code{RE_CHAR_CLASSES} is set and what
857 follows is a valid character class expression.
859 @item :]
860 represents the close-character-class operator if the syntax bit
861 @code{RE_CHAR_CLASSES} is set and what precedes it is an
862 open-character-class operator followed by a valid character class name.
864 @item -
865 represents the range operator (@pxref{Range Operator}) if it's
866 not first or last in a list or the ending point of a range.
868 @end table
870 @noindent
871 All other characters are ordinary.  For example, @samp{[.*]} matches
872 @samp{.} and @samp{*}.
874 @menu
875 * Collating Symbol Operators::  [.elem.]
876 * Equivalence Class Operators:: [=class=]
877 * Character Class Operators::   [:class:]
878 * Range Operator::          start-end
879 @end menu
882 @node Collating Symbol Operators
883 @subsection Collating Symbol Operators (@code{[.} @dots{} @code{.]})
885 Collating symbols can be represented inside lists.
886 You form a @dfn{collating symbol} by
887 putting a collating element between an @dfn{open-collating-symbol
888 operator} and a @dfn{close-collating-symbol operator}.  @samp{[.}
889 represents the open-collating-symbol operator and @samp{.]} represents
890 the close-collating-symbol operator.  For example, if @samp{ll} is a
891 collating element, then @samp{[[.ll.]]} would match @samp{ll}.
893 @node Equivalence Class Operators
894 @subsection Equivalence Class Operators (@code{[=} @dots{} @code{=]})
895 @cindex equivalence class expression in regex
896 @cindex @samp{[=} in regex
897 @cindex @samp{=]} in regex
899 Regex recognizes equivalence class
900 expressions inside lists.  A @dfn{equivalence class expression} is a set
901 of collating elements which all belong to the same equivalence class.
902 You form an equivalence class expression by putting a collating
903 element between an @dfn{open-equivalence-class operator} and a
904 @dfn{close-equivalence-class operator}.  @samp{[=} represents the
905 open-equivalence-class operator and @samp{=]} represents the
906 close-equivalence-class operator.  For example, if @samp{a} and @samp{A}
907 were an equivalence class, then both @samp{[[=a=]]} and @samp{[[=A=]]}
908 would match both @samp{a} and @samp{A}.  If the collating element in an
909 equivalence class expression isn't part of an equivalence class, then
910 the matcher considers the equivalence class expression to be a collating
911 symbol.
913 @node Character Class Operators
914 @subsection Character Class Operators (@code{[:} @dots{} @code{:]})
916 @cindex character classes
917 @cindex @samp{[colon} in regex
918 @cindex @samp{colon]} in regex
920 If the syntax bit @code{RE_CHAR_CLASSES} is set, then Regex recognizes
921 character class expressions inside lists.  A @dfn{character class
922 expression} matches one character from a given class.  You form a
923 character class expression by putting a character class name between
924 an @dfn{open-character-class operator} (represented by @samp{[:}) and
925 a @dfn{close-character-class operator} (represented by @samp{:]}).
926 The character class names and their meanings are:
928 @table @code
930 @item alnum
931 letters and digits
933 @item alpha
934 letters
936 @item blank
937 system-dependent; for GNU, a space or tab
939 @item cntrl
940 control characters (in the ASCII encoding, code 0177 and codes
941 less than 040)
943 @item digit
944 digits
946 @item graph
947 same as @code{print} except omits space
949 @item lower
950 lowercase letters
952 @item print
953 printable characters (in the ASCII encoding, space
954 tilde---codes 040 through 0176)
956 @item punct
957 neither control nor alphanumeric characters
959 @item space
960 space, carriage return, newline, vertical tab, and form feed
962 @item upper
963 uppercase letters
965 @item xdigit
966 hexadecimal digits: @code{0}--@code{9}, @code{a}--@code{f}, @code{A}--@code{F}
968 @end table
970 @noindent
971 These correspond to the definitions in the C library's @file{<ctype.h>}
972 facility.  For example, @samp{[:alpha:]} corresponds to the standard
973 facility @code{isalpha}.  Regex recognizes character class expressions
974 only inside of lists; so @samp{[[:alpha:]]} matches any letter, but
975 @samp{[:alpha:]} outside of a bracket expression and not followed by a
976 repetition operator matches just itself.
978 @node Range Operator
979 @subsection The Range Operator (@code{-})
981 Regex recognizes @dfn{range expressions} inside a list. They represent
982 those characters
983 that fall between two elements in the current collating sequence.  You
984 form a range expression by putting a @dfn{range operator} between two
985 of any of the following: characters, collating elements, collating symbols,
986 and equivalence class expressions.  The starting point of the range and
987 the ending point of the range don't have to be the same kind of item,
988 e.g., the starting point could be a collating element and the ending
989 point could be an equivalence class expression.  If a range's ending
990 point is an equivalence class, then all the collating elements in that
991 class will be in the range.@footnote{You can't use a character class for the starting
992 or ending point of a range, since a character class is not a single
993 character.} @samp{-} represents the range operator.  For example,
994 @samp{a-f} within a list represents all the characters from @samp{a}
995 through @samp{f}
996 inclusively.
998 If the syntax bit @code{RE_NO_EMPTY_RANGES} is set, then if the range's
999 ending point collates less than its starting point, the range (and the
1000 regular expression containing it) is invalid.  For example, the regular
1001 expression @samp{[z-a]} would be invalid.  If this bit isn't set, then
1002 Regex considers such a range to be empty.
1004 Since @samp{-} represents the range operator, if you want to make a
1005 @samp{-} character itself
1006 a list item, you must do one of the following:
1008 @itemize @bullet
1009 @item
1010 Put the @samp{-} either first or last in the list.
1012 @item
1013 Include a range whose starting point collates strictly lower than
1014 @samp{-} and whose ending point collates equal or higher.  Unless a
1015 range is the first item in a list, a @samp{-} can't be its starting
1016 point, but @emph{can} be its ending point.  That is because Regex
1017 considers @samp{-} to be the range operator unless it is preceded by
1018 another @samp{-}.  For example, in the ASCII encoding, @samp{)},
1019 @samp{*}, @samp{+}, @samp{,}, @samp{-}, @samp{.}, and @samp{/} are
1020 contiguous characters in the collating sequence.  You might think that
1021 @samp{[)-+--/]} has two ranges: @samp{)-+} and @samp{--/}.  Rather, it
1022 has the ranges @samp{)-+} and @samp{+--}, plus the character @samp{/}, so
1023 it matches, e.g., @samp{,}, not @samp{.}.
1025 @item
1026 Put a range whose starting point is @samp{-} first in the list.
1028 @end itemize
1030 For example, @samp{[-a-z]} matches a lowercase letter or a hyphen (in
1031 English, in ASCII).
1034 @node Grouping Operators
1035 @section Grouping Operators (@code{(} @dots{} @code{)} or @code{\(} @dots{} @code{\)})
1037 @kindex (
1038 @kindex )
1039 @kindex \(
1040 @kindex \)
1041 @cindex grouping
1042 @cindex subexpressions
1043 @cindex parenthesizing
1045 A @dfn{group}, also known as a @dfn{subexpression}, consists of an
1046 @dfn{open-group operator}, any number of other operators, and a
1047 @dfn{close-group operator}.  Regex treats this sequence as a unit, just
1048 as mathematics and programming languages treat a parenthesized
1049 expression as a unit.
1051 Therefore, using @dfn{groups}, you can:
1053 @itemize @bullet
1054 @item
1055 delimit the argument(s) to an alternation operator (@pxref{Alternation
1056 Operator}) or a repetition operator (@pxref{Repetition
1057 Operators}).
1059 @item
1060 keep track of the indices of the substring that matched a given group.
1061 @xref{Using Registers}, for a precise explanation.
1062 This lets you:
1064 @itemize @bullet
1065 @item
1066 use the back-reference operator (@pxref{Back-reference Operator}).
1068 @item
1069 use registers (@pxref{Using Registers}).
1071 @end itemize
1073 @end itemize
1075 If the syntax bit @code{RE_NO_BK_PARENS} is set, then @samp{(} represents
1076 the open-group operator and @samp{)} represents the
1077 close-group operator; otherwise, @samp{\(} and @samp{\)} do.
1079 If the syntax bit @code{RE_UNMATCHED_RIGHT_PAREN_ORD} is set and a
1080 close-group operator has no matching open-group operator, then Regex
1081 considers it to match @samp{)}.
1084 @node Back-reference Operator
1085 @section The Back-reference Operator (@dfn{\}@var{digit})
1087 @cindex back-references
1089 If the syntax bit @code{RE_NO_BK_REF} isn't set, then Regex recognizes
1090 back-references.  A back-reference matches a specified preceding group.
1091 The back-reference operator is represented by @samp{\@var{digit}}
1092 anywhere after the end of a regular expression's @w{@var{digit}-th}
1093 group (@pxref{Grouping Operators}).
1095 @var{digit} must be between @samp{1} and @samp{9}.  The matcher assigns
1096 numbers 1 through 9 to the first nine groups it encounters.  By using
1097 one of @samp{\1} through @samp{\9} after the corresponding group's
1098 close-group operator, you can match a substring identical to the
1099 one that the group does.
1101 Back-references match according to the following (in all examples below,
1102 @samp{(} represents the open-group, @samp{)} the close-group, @samp{@{}
1103 the open-interval and @samp{@}} the close-interval operator):
1105 @itemize @bullet
1106 @item
1107 If the group matches a substring, the back-reference matches an
1108 identical substring.  For example, @samp{(a)\1} matches @samp{aa} and
1109 @samp{(bana)na\1bo\1} matches @samp{bananabanabobana}.  Likewise,
1110 @samp{(.*)\1} matches any (newline-free if the syntax bit
1111 @code{RE_DOT_NEWLINE} isn't set) string that is composed of two
1112 identical halves; the @samp{(.*)} matches the first half and the
1113 @samp{\1} matches the second half.
1115 @item
1116 If the group matches more than once (as it might if followed
1117 by, e.g., a repetition operator), then the back-reference matches the
1118 substring the group @emph{last} matched.  For example,
1119 @samp{((a*)b)*\1\2} matches @samp{aabababa}; first @w{group 1} (the
1120 outer one) matches @samp{aab} and @w{group 2} (the inner one) matches
1121 @samp{aa}.  Then @w{group 1} matches @samp{ab} and @w{group 2} matches
1122 @samp{a}.  So, @samp{\1} matches @samp{ab} and @samp{\2} matches
1123 @samp{a}.
1125 @item
1126 If the group doesn't participate in a match, i.e., it is part of an
1127 alternative not taken or a repetition operator allows zero repetitions
1128 of it, then the back-reference makes the whole match fail.  For example,
1129 @samp{(one()|two())-and-(three\2|four\3)} matches @samp{one-and-three}
1130 and @samp{two-and-four}, but not @samp{one-and-four} or
1131 @samp{two-and-three}.  For example, if the pattern matches
1132 @samp{one-and-}, then its @w{group 2} matches the empty string and its
1133 @w{group 3} doesn't participate in the match.  So, if it then matches
1134 @samp{four}, then when it tries to back-reference @w{group 3}---which it
1135 will attempt to do because @samp{\3} follows the @samp{four}---the match
1136 will fail because @w{group 3} didn't participate in the match.
1138 @end itemize
1140 You can use a back-reference as an argument to a repetition operator.  For
1141 example, @samp{(a(b))\2*} matches @samp{a} followed by two or more
1142 @samp{b}s.  Similarly, @samp{(a(b))\2@{3@}} matches @samp{abbbb}.
1144 If there is no preceding @w{@var{digit}-th} subexpression, the regular
1145 expression is invalid.
1147 Back-references can greatly slow down matching, as they can generate
1148 exponentially many matching possibilities that can consume both time
1149 and memory to explore.  Also, the POSIX specification for
1150 back-references is at times unclear.  Furthermore, many regular
1151 expression implementations have back-reference bugs that can cause
1152 programs to return incorrect answers or even crash, and fixing these
1153 bugs has often been low-priority: for example, as of 2020 the
1154 @url{https://sourceware.org/bugzilla/,GNU C library bug database}
1155 contained back-reference bugs
1156 @url{https://sourceware.org/bugzilla/show_bug.cgi?id=52,,52},
1157 @url{https://sourceware.org/bugzilla/show_bug.cgi?id=10844,,10844},
1158 @url{https://sourceware.org/bugzilla/show_bug.cgi?id=11053,,11053},
1159 @url{https://sourceware.org/bugzilla/show_bug.cgi?id=24269,,24269}
1160 and @url{https://sourceware.org/bugzilla/show_bug.cgi?id=25322,,25322},
1161 with little sign of forthcoming fixes.  Luckily,
1162 back-references are rarely useful and it should be little trouble to
1163 avoid them in practical applications.
1166 @node Anchoring Operators
1167 @section Anchoring Operators
1169 @cindex anchoring
1170 @cindex regexp anchoring
1172 These operators can constrain a pattern to match only at the beginning or
1173 end of the entire string or at the beginning or end of a line.
1175 @menu
1176 * Match-beginning-of-line Operator::  ^
1177 * Match-end-of-line Operator::        $
1178 @end menu
1181 @node Match-beginning-of-line Operator
1182 @subsection The Match-beginning-of-line Operator (@code{^})
1184 @kindex ^
1185 @cindex beginning-of-line operator
1186 @cindex anchors
1188 This operator can match the empty string either at the beginning of the
1189 string or after a newline character.  Thus, it is said to @dfn{anchor}
1190 the pattern to the beginning of a line.
1192 In the cases following, @samp{^} represents this operator.  (Otherwise,
1193 @samp{^} is ordinary.)
1195 @itemize @bullet
1197 @item
1198 It (the @samp{^}) is first in the pattern, as in @samp{^foo}.
1200 @cnindex RE_CONTEXT_INDEP_ANCHORS @r{(and @samp{^})}
1201 @item
1202 The syntax bit @code{RE_CONTEXT_INDEP_ANCHORS} is set, and it is outside
1203 a bracket expression.
1205 @cindex open-group operator and @samp{^}
1206 @cindex alternation operator and @samp{^}
1207 @item
1208 It follows an open-group or alternation operator, as in @samp{a\(^b\)}
1209 and @samp{a\|^b}.  @xref{Grouping Operators}, and @ref{Alternation
1210 Operator}.
1212 @end itemize
1214 These rules imply that some valid patterns containing @samp{^} cannot be
1215 matched; for example, @samp{foo^bar} if @code{RE_CONTEXT_INDEP_ANCHORS}
1216 is set.
1218 @vindex not_bol @r{field in pattern buffer}
1219 If the @code{not_bol} field is set in the pattern buffer (@pxref{GNU
1220 Pattern Buffers}), then @samp{^} fails to match at the beginning of the
1221 string.  This lets you match against pieces of a line, as you would need to if,
1222 say, searching for repeated instances of a given pattern in a line; it
1223 would work correctly for patterns both with and without
1224 match-beginning-of-line operators.
1227 @node Match-end-of-line Operator
1228 @subsection The Match-end-of-line Operator (@code{$})
1230 @kindex $
1231 @cindex end-of-line operator
1232 @cindex anchors
1234 This operator can match the empty string either at the end of
1235 the string or before a newline character in the string.  Thus, it is
1236 said to @dfn{anchor} the pattern to the end of a line.
1238 It is always represented by @samp{$}.  For example, @samp{foo$} usually
1239 matches, e.g., @samp{foo} and, e.g., the first three characters of
1240 @samp{foo\nbar}.
1242 Its interaction with the syntax bits and pattern buffer fields is
1243 exactly the dual of @samp{^}'s; see the previous section.  (That is,
1244 ``@samp{^}'' becomes ``@samp{$}'', ``beginning'' becomes ``end'',
1245 ``next'' becomes ``previous'', ``after'' becomes ``before'', and
1246 ``@code{not_bol}'' becomes ``@code{not_eol}''.)
1249 @node GNU Operators
1250 @chapter GNU Operators
1252 Following are operators that GNU defines (and POSIX doesn't).
1254 @menu
1255 * Word Operators::
1256 * Buffer Operators::
1257 @end menu
1259 @node Word Operators
1260 @section Word Operators
1262 The operators in this section require Regex to recognize parts of words.
1263 Regex uses a syntax table to determine whether or not a character is
1264 part of a word, i.e., whether or not it is @dfn{word-constituent}.
1266 @menu
1267 * Non-Emacs Syntax Tables::
1268 * Match-word-boundary Operator::        \b
1269 * Match-within-word Operator::          \B
1270 * Match-beginning-of-word Operator::    \<
1271 * Match-end-of-word Operator::          \>
1272 * Match-word-constituent Operator::     \w
1273 * Match-non-word-constituent Operator:: \W
1274 @end menu
1276 @node Non-Emacs Syntax Tables
1277 @subsection Non-Emacs Syntax Tables
1279 A @dfn{syntax table} is an array indexed by the characters in your
1280 character set.  In the ASCII encoding, therefore, a syntax table
1281 has 256 elements.  Regex always uses a @code{char *} variable
1282 @code{re_syntax_table} as its syntax table.  In some cases, it
1283 initializes this variable and in others it expects you to initialize it.
1285 @itemize @bullet
1286 @item
1287 If Regex is compiled with the preprocessor symbols @code{emacs} and
1288 @code{SYNTAX_TABLE} both undefined, then Regex allocates
1289 @code{re_syntax_table} and initializes an element @var{i} either to
1290 @code{Sword} (which it defines) if @var{i} is a letter, number, or
1291 @samp{_}, or to zero if it's not.
1293 @item
1294 If Regex is compiled with @code{emacs} undefined but @code{SYNTAX_TABLE}
1295 defined, then Regex expects you to define a @code{char *} variable
1296 @code{re_syntax_table} to be a valid syntax table.
1298 @item
1299 @xref{Emacs Syntax Tables}, for what happens when Regex is compiled with
1300 the preprocessor symbol @code{emacs} defined.
1302 @end itemize
1304 @node Match-word-boundary Operator
1305 @subsection The Match-word-boundary Operator (@code{\b})
1307 @cindex @samp{\b}
1308 @cindex word boundaries, matching
1310 This operator (represented by @samp{\b}) matches the empty string at
1311 either the beginning or the end of a word.  For example, @samp{\brat\b}
1312 matches the separate word @samp{rat}.
1314 @node Match-within-word Operator
1315 @subsection The Match-within-word Operator (@code{\B})
1317 @cindex @samp{\B}
1319 This operator (represented by @samp{\B}) matches the empty string within
1320 a word. For example, @samp{c\Brat\Be} matches @samp{crate}, but
1321 @samp{dirty \Brat} doesn't match @samp{dirty rat}.
1323 @node Match-beginning-of-word Operator
1324 @subsection The Match-beginning-of-word Operator (@code{\<})
1326 @cindex @samp{\<}
1328 This operator (represented by @samp{\<}) matches the empty string at the
1329 beginning of a word.
1331 @node Match-end-of-word Operator
1332 @subsection The Match-end-of-word Operator (@code{\>})
1334 @cindex @samp{\>}
1336 This operator (represented by @samp{\>}) matches the empty string at the
1337 end of a word.
1339 @node Match-word-constituent Operator
1340 @subsection The Match-word-constituent Operator (@code{\w})
1342 @cindex @samp{\w}
1344 This operator (represented by @samp{\w}) matches any word-constituent
1345 character.
1347 @node Match-non-word-constituent Operator
1348 @subsection The Match-non-word-constituent Operator (@code{\W})
1350 @cindex @samp{\W}
1352 This operator (represented by @samp{\W}) matches any character that is
1353 not word-constituent.
1356 @node Buffer Operators
1357 @section Buffer Operators
1359 Following are operators which work on buffers.  In Emacs, a @dfn{buffer}
1360 is, naturally, an Emacs buffer.  For other programs, Regex considers the
1361 entire string to be matched as the buffer.
1363 @menu
1364 * Match-beginning-of-buffer Operator::  \`
1365 * Match-end-of-buffer Operator::        \'
1366 @end menu
1369 @node Match-beginning-of-buffer Operator
1370 @subsection The Match-beginning-of-buffer Operator (@code{\`})
1372 @cindex @samp{\`}
1374 This operator (represented by @samp{\`}) matches the empty string at the
1375 beginning of the buffer.
1377 @node Match-end-of-buffer Operator
1378 @subsection The Match-end-of-buffer Operator (@code{\'})
1380 @cindex @samp{\'}
1382 This operator (represented by @samp{\'}) matches the empty string at the
1383 end of the buffer.
1386 @node GNU Emacs Operators
1387 @chapter GNU Emacs Operators
1389 Following are operators that GNU defines (and POSIX doesn't)
1390 that you can use only when Regex is compiled with the preprocessor
1391 symbol @code{emacs} defined.
1393 @menu
1394 * Syntactic Class Operators::
1395 @end menu
1398 @node Syntactic Class Operators
1399 @section Syntactic Class Operators
1401 The operators in this section require Regex to recognize the syntactic
1402 classes of characters.  Regex uses a syntax table to determine this.
1404 @menu
1405 * Emacs Syntax Tables::
1406 * Match-syntactic-class Operator::      \sCLASS
1407 * Match-not-syntactic-class Operator::  \SCLASS
1408 @end menu
1410 @node Emacs Syntax Tables
1411 @subsection Emacs Syntax Tables
1413 A @dfn{syntax table} is an array indexed by the characters in your
1414 character set.  In the ASCII encoding, therefore, a syntax table
1415 has 256 elements.
1417 If Regex is compiled with the preprocessor symbol @code{emacs} defined,
1418 then Regex expects you to define and initialize the variable
1419 @code{re_syntax_table} to be an Emacs syntax table.  Emacs' syntax
1420 tables are more complicated than Regex's own (@pxref{Non-Emacs Syntax
1421 Tables}).  @xref{Syntax, , Syntax, emacs, The GNU Emacs User's Manual},
1422 for a description of Emacs' syntax tables.
1424 @node Match-syntactic-class Operator
1425 @subsection The Match-syntactic-class Operator (@code{\s}@var{class})
1427 @cindex @samp{\s}
1429 This operator matches any character whose syntactic class is represented
1430 by a specified character.  @samp{\s@var{class}} represents this operator
1431 where @var{class} is the character representing the syntactic class you
1432 want.  For example, @samp{w} represents the syntactic
1433 class of word-constituent characters, so @samp{\sw} matches any
1434 word-constituent character.
1436 @node Match-not-syntactic-class Operator
1437 @subsection The Match-not-syntactic-class Operator (@code{\S}@var{class})
1439 @cindex @samp{\S}
1441 This operator is similar to the match-syntactic-class operator except
1442 that it matches any character whose syntactic class is @emph{not}
1443 represented by the specified character.  @samp{\S@var{class}} represents
1444 this operator.  For example, @samp{w} represents the syntactic class of
1445 word-constituent characters, so @samp{\Sw} matches any character that is
1446 not word-constituent.
1449 @node What Gets Matched?
1450 @chapter What Gets Matched?
1452 Regex usually matches strings according to the ``leftmost longest''
1453 rule; that is, it chooses the longest of the leftmost matches.  This
1454 does not mean that for a regular expression containing subexpressions
1455 that it simply chooses the longest match for each subexpression, left to
1456 right; the overall match must also be the longest possible one.
1458 For example, @samp{(ac*)(c*d[ac]*)\1} matches @samp{acdacaaa}, not
1459 @samp{acdac}, as it would if it were to choose the longest match for the
1460 first subexpression.
1463 @node Programming with Regex
1464 @chapter Programming with Regex
1466 Here we describe how you use the Regex data structures and functions in
1467 C programs.  Regex has three interfaces: one designed for GNU, one
1468 compatible with POSIX (as specified by POSIX, draft
1469 1003.2/D11.2), and one compatible with Berkeley Unix.  The
1470 POSIX interface is not documented here; see the documentation of
1471 GNU libc, or the POSIX man pages.  The Berkeley Unix interface is
1472 documented here for convenience, since its documentation is not
1473 otherwise readily available on GNU systems.
1475 @menu
1476 * GNU Regex Functions::
1477 * BSD Regex Functions::
1478 @end menu
1481 @node GNU Regex Functions
1482 @section GNU Regex Functions
1484 If you're writing code that doesn't need to be compatible with either
1485 POSIX or Berkeley Unix, you can use these functions.  They
1486 provide more options than the other interfaces.
1488 @menu
1489 * GNU Pattern Buffers::         The re_pattern_buffer type.
1490 * GNU Regular Expression Compiling::  re_compile_pattern ()
1491 * GNU Matching::                re_match ()
1492 * GNU Searching::               re_search ()
1493 * Matching/Searching with Split Data::  re_match_2 (), re_search_2 ()
1494 * Searching with Fastmaps::     re_compile_fastmap ()
1495 * GNU Translate Tables::        The @code{translate} field.
1496 * Using Registers::             The re_registers type and related fns.
1497 * Freeing GNU Pattern Buffers::  regfree ()
1498 @end menu
1501 @node GNU Pattern Buffers
1502 @subsection GNU Pattern Buffers
1504 @cindex pattern buffer, definition of
1505 @tindex re_pattern_buffer @r{definition}
1506 @tindex struct re_pattern_buffer @r{definition}
1508 To compile, match, or search for a given regular expression, you must
1509 supply a pattern buffer.  A @dfn{pattern buffer} holds one compiled
1510 regular expression.@footnote{Regular expressions are also referred to as
1511 ``patterns,'' hence the name ``pattern buffer.''}
1513 You can have several different pattern buffers simultaneously, each
1514 holding a compiled pattern for a different regular expression.
1516 @file{regex.h} defines the pattern buffer @code{struct} with the
1517 following public fields:
1519 @example
1520   unsigned char *buffer;
1521   unsigned long allocated;
1522   char *fastmap;
1523   char *translate;
1524   size_t re_nsub;
1525   unsigned no_sub : 1;
1526   unsigned not_bol : 1;
1527   unsigned not_eol : 1;
1528 @end example
1531 @node GNU Regular Expression Compiling
1532 @subsection GNU Regular Expression Compiling
1534 In GNU, you can both match and search for a given regular
1535 expression.  To do either, you must first compile it in a pattern buffer
1536 (@pxref{GNU Pattern Buffers}).
1538 @cindex syntax initialization
1539 @vindex re_syntax_options @r{initialization}
1540 Regular expressions match according to the syntax with which they were
1541 compiled; with GNU, you indicate what syntax you want by setting
1542 the variable @code{re_syntax_options} (declared in @file{regex.h})
1543 before calling the compiling function, @code{re_compile_pattern} (see
1544 below).  @xref{Syntax Bits}, and @ref{Predefined Syntaxes}.
1546 You can change the value of @code{re_syntax_options} at any time.
1547 Usually, however, you set its value once and then never change it.
1549 @cindex pattern buffer initialization
1550 @code{re_compile_pattern} takes a pattern buffer as an argument.  You
1551 must initialize the following fields:
1553 @table @code
1555 @item translate @r{initialization}
1557 @item translate
1558 @vindex translate @r{initialization}
1559 Initialize this to point to a translate table if you want one, or to
1560 zero if you don't.  We explain translate tables in @ref{GNU Translate
1561 Tables}.
1563 @item fastmap
1564 @vindex fastmap @r{initialization}
1565 Initialize this to nonzero if you want a fastmap, or to zero if you
1566 don't.
1568 @item buffer
1569 @itemx allocated
1570 @vindex buffer @r{initialization}
1571 @vindex allocated @r{initialization}
1572 @findex malloc
1573 If you want @code{re_compile_pattern} to allocate memory for the
1574 compiled pattern, set both of these to zero.  If you have an existing
1575 block of memory (allocated with @code{malloc}) you want Regex to use,
1576 set @code{buffer} to its address and @code{allocated} to its size (in
1577 bytes).
1579 @code{re_compile_pattern} uses @code{realloc} to extend the space for
1580 the compiled pattern as necessary.
1582 @end table
1584 To compile a pattern buffer, use:
1586 @findex re_compile_pattern
1587 @example
1588 char *
1589 re_compile_pattern (const char *@var{regex}, const int @var{regex_size},
1590                     struct re_pattern_buffer *@var{pattern_buffer})
1591 @end example
1593 @noindent
1594 @var{regex} is the regular expression's address, @var{regex_size} is its
1595 length, and @var{pattern_buffer} is the pattern buffer's address.
1597 If @code{re_compile_pattern} successfully compiles the regular
1598 expression, it returns zero and sets @code{*@var{pattern_buffer}} to the
1599 compiled pattern.  It sets the pattern buffer's fields as follows:
1601 @table @code
1602 @item buffer
1603 @vindex buffer @r{field, set by @code{re_compile_pattern}}
1604 to the compiled pattern.
1606 @item syntax
1607 @vindex syntax @r{field, set by @code{re_compile_pattern}}
1608 to the current value of @code{re_syntax_options}.
1610 @item re_nsub
1611 @vindex re_nsub @r{field, set by @code{re_compile_pattern}}
1612 to the number of subexpressions in @var{regex}.
1614 @end table
1616 If @code{re_compile_pattern} can't compile @var{regex}, it returns an
1617 error string corresponding to a POSIX error code.
1620 @node GNU Matching
1621 @subsection GNU Matching
1623 @cindex matching with GNU functions
1625 Matching the GNU way means trying to match as much of a string as
1626 possible starting at a position within it you specify.  Once you've compiled
1627 a pattern into a pattern buffer (@pxref{GNU Regular Expression
1628 Compiling}), you can ask the matcher to match that pattern against a
1629 string using:
1631 @findex re_match
1632 @example
1634 re_match (struct re_pattern_buffer *@var{pattern_buffer},
1635           const char *@var{string}, const int @var{size},
1636           const int @var{start}, struct re_registers *@var{regs})
1637 @end example
1639 @noindent
1640 @var{pattern_buffer} is the address of a pattern buffer containing a
1641 compiled pattern.  @var{string} is the string you want to match; it can
1642 contain newline and null characters.  @var{size} is the length of that
1643 string.  @var{start} is the string index at which you want to
1644 begin matching; the first character of @var{string} is at index zero.
1645 @xref{Using Registers}, for an explanation of @var{regs}; you can safely
1646 pass zero.
1648 @code{re_match} matches the regular expression in @var{pattern_buffer}
1649 against the string @var{string} according to the syntax of
1650 @var{pattern_buffer}.  (@xref{GNU Regular Expression Compiling}, for how
1651 to set it.)  The function returns @math{-1} if the compiled pattern does
1652 not match any part of @var{string} and @math{-2} if an internal error
1653 happens; otherwise, it returns how many (possibly zero) characters of
1654 @var{string} the pattern matched.
1656 An example: suppose @var{pattern_buffer} points to a pattern buffer
1657 containing the compiled pattern for @samp{a*}, and @var{string} points
1658 to @samp{aaaaab} (whereupon @var{size} should be 6). Then if @var{start}
1659 is 2, @code{re_match} returns 3, i.e., @samp{a*} would have matched the
1660 last three @samp{a}s in @var{string}.  If @var{start} is 0,
1661 @code{re_match} returns 5, i.e., @samp{a*} would have matched all the
1662 @samp{a}s in @var{string}.  If @var{start} is either 5 or 6, it returns
1663 zero.
1665 If @var{start} is not between zero and @var{size}, then
1666 @code{re_match} returns @math{-1}.
1669 @node GNU Searching
1670 @subsection GNU Searching
1672 @cindex searching with GNU functions
1674 @dfn{Searching} means trying to match starting at successive positions
1675 within a string.  The function @code{re_search} does this.
1677 Before calling @code{re_search}, you must compile your regular
1678 expression.  @xref{GNU Regular Expression Compiling}.
1680 Here is the function declaration:
1682 @findex re_search
1683 @example
1685 re_search (struct re_pattern_buffer *@var{pattern_buffer},
1686            const char *@var{string}, const int @var{size},
1687            const int @var{start}, const int @var{range},
1688            struct re_registers *@var{regs})
1689 @end example
1691 @noindent
1692 @vindex start @r{argument to @code{re_search}}
1693 @vindex range @r{argument to @code{re_search}}
1694 whose arguments are the same as those to @code{re_match} (@pxref{GNU
1695 Matching}) except that the two arguments @var{start} and @var{range}
1696 replace @code{re_match}'s argument @var{start}.
1698 If @var{range} is positive, then @code{re_search} attempts a match
1699 starting first at index @var{start}, then at @math{@var{start} + 1} if
1700 that fails, and so on, up to @math{@var{start} + @var{range}}; if
1701 @var{range} is negative, then it attempts a match starting first at
1702 index @var{start}, then at @math{@var{start} -1} if that fails, and so
1705 If @var{start} is not between zero and @var{size}, then @code{re_search}
1706 returns @math{-1}.  When @var{range} is positive, @code{re_search}
1707 adjusts @var{range} so that @math{@var{start} + @var{range} - 1} is
1708 between zero and @var{size}, if necessary; that way it won't search
1709 outside of @var{string}.  Similarly, when @var{range} is negative,
1710 @code{re_search} adjusts @var{range} so that @math{@var{start} +
1711 @var{range} + 1} is between zero and @var{size}, if necessary.
1713 If the @code{fastmap} field of @var{pattern_buffer} is zero,
1714 @code{re_search} matches starting at consecutive positions; otherwise,
1715 it uses @code{fastmap} to make the search more efficient.
1716 @xref{Searching with Fastmaps}.
1718 If no match is found, @code{re_search} returns @math{-1}.  If
1719 a match is found, it returns the index where the match began.  If an
1720 internal error happens, it returns @math{-2}.
1723 @node Matching/Searching with Split Data
1724 @subsection Matching and Searching with Split Data
1726 Using the functions @code{re_match_2} and @code{re_search_2}, you can
1727 match or search in data that is divided into two strings.
1729 The function:
1731 @findex re_match_2
1732 @example
1734 re_match_2 (struct re_pattern_buffer *@var{buffer},
1735             const char *@var{string1}, const int @var{size1},
1736             const char *@var{string2}, const int @var{size2},
1737             const int @var{start},
1738             struct re_registers *@var{regs},
1739             const int @var{stop})
1740 @end example
1742 @noindent
1743 is similar to @code{re_match} (@pxref{GNU Matching}) except that you
1744 pass @emph{two} data strings and sizes, and an index @var{stop} beyond
1745 which you don't want the matcher to try matching.  As with
1746 @code{re_match}, if it succeeds, @code{re_match_2} returns how many
1747 characters of @var{string} it matched.  Regard @var{string1} and
1748 @var{string2} as concatenated when you set the arguments @var{start} and
1749 @var{stop} and use the contents of @var{regs}; @code{re_match_2} never
1750 returns a value larger than @math{@var{size1} + @var{size2}}.
1752 The function:
1754 @findex re_search_2
1755 @example
1757 re_search_2 (struct re_pattern_buffer *@var{buffer},
1758              const char *@var{string1}, const int @var{size1},
1759              const char *@var{string2}, const int @var{size2},
1760              const int @var{start}, const int @var{range},
1761              struct re_registers *@var{regs},
1762              const int @var{stop})
1763 @end example
1765 @noindent
1766 is similarly related to @code{re_search}.
1769 @node Searching with Fastmaps
1770 @subsection Searching with Fastmaps
1772 @cindex fastmaps
1773 If you're searching through a long string, you should use a fastmap.
1774 Without one, the searcher tries to match at consecutive positions in the
1775 string.  Generally, most of the characters in the string could not start
1776 a match.  It takes much longer to try matching at a given position in the
1777 string than it does to check in a table whether or not the character at
1778 that position could start a match.  A @dfn{fastmap} is such a table.
1780 More specifically, a fastmap is an array indexed by the characters in
1781 your character set.  Under the ASCII encoding, therefore, a fastmap
1782 has 256 elements.  If you want the searcher to use a fastmap with a
1783 given pattern buffer, you must allocate the array and assign the array's
1784 address to the pattern buffer's @code{fastmap} field.  You either can
1785 compile the fastmap yourself or have @code{re_search} do it for you;
1786 when @code{fastmap} is nonzero, it automatically compiles a fastmap the
1787 first time you search using a particular compiled pattern.
1789 By setting the buffer's @code{fastmap} field before calling
1790 @code{re_compile_pattern}, you can reuse a buffer data structure across
1791 multiple searches with different patterns, and allocate the fastmap only
1792 once.  Nonetheless, the fastmap must be recompiled each time the buffer
1793 has a new pattern compiled into it.
1795 To compile a fastmap yourself, use:
1797 @findex re_compile_fastmap
1798 @example
1800 re_compile_fastmap (struct re_pattern_buffer *@var{pattern_buffer})
1801 @end example
1803 @noindent
1804 @var{pattern_buffer} is the address of a pattern buffer.  If the
1805 character @var{c} could start a match for the pattern,
1806 @code{re_compile_fastmap} makes
1807 @code{@var{pattern_buffer}->fastmap[@var{c}]} nonzero.  It returns
1808 @math{0} if it can compile a fastmap and @math{-2} if there is an
1809 internal error.  For example, if @samp{|} is the alternation operator
1810 and @var{pattern_buffer} holds the compiled pattern for @samp{a|b}, then
1811 @code{re_compile_fastmap} sets @code{fastmap['a']} and
1812 @code{fastmap['b']} (and no others).
1814 @code{re_search} uses a fastmap as it moves along in the string: it
1815 checks the string's characters until it finds one that's in the fastmap.
1816 Then it tries matching at that character.  If the match fails, it
1817 repeats the process.  So, by using a fastmap, @code{re_search} doesn't
1818 waste time trying to match at positions in the string that couldn't
1819 start a match.
1821 If you don't want @code{re_search} to use a fastmap,
1822 store zero in the @code{fastmap} field of the pattern buffer before
1823 calling @code{re_search}.
1825 Once you've initialized a pattern buffer's @code{fastmap} field, you
1826 need never do so again---even if you compile a new pattern in
1827 it---provided the way the field is set still reflects whether or not you
1828 want a fastmap.  @code{re_search} will still either do nothing if
1829 @code{fastmap} is null or, if it isn't, compile a new fastmap for the
1830 new pattern.
1832 @node GNU Translate Tables
1833 @subsection GNU Translate Tables
1835 If you set the @code{translate} field of a pattern buffer to a translate
1836 table, then the GNU Regex functions to which you've passed that
1837 pattern buffer use it to apply a simple transformation
1838 to all the regular expression and string characters at which they look.
1840 A @dfn{translate table} is an array indexed by the characters in your
1841 character set.  Under the ASCII encoding, therefore, a translate
1842 table has 256 elements.  The array's elements are also characters in
1843 your character set.  When the Regex functions see a character @var{c},
1844 they use @code{translate[@var{c}]} in its place, with one exception: the
1845 character after a @samp{\} is not translated.  (This ensures that, the
1846 operators, e.g., @samp{\B} and @samp{\b}, are always distinguishable.)
1848 For example, a table that maps all lowercase letters to the
1849 corresponding uppercase ones would cause the matcher to ignore
1850 differences in case.@footnote{A table that maps all uppercase letters to
1851 the corresponding lowercase ones would work just as well for this
1852 purpose.}  Such a table would map all characters except lowercase letters
1853 to themselves, and lowercase letters to the corresponding uppercase
1854 ones.  Under the ASCII encoding, here's how you could initialize
1855 such a table (we'll call it @code{case_fold}):
1857 @example
1858 for (i = 0; i < 256; i++)
1859   case_fold[i] = i;
1860 for (i = 'a'; i <= 'z'; i++)
1861   case_fold[i] = i - ('a' - 'A');
1862 @end example
1864 You tell Regex to use a translate table on a given pattern buffer by
1865 assigning that table's address to the @code{translate} field of that
1866 buffer.  If you don't want Regex to do any translation, put zero into
1867 this field.  You'll get weird results if you change the table's contents
1868 anytime between compiling the pattern buffer, compiling its fastmap, and
1869 matching or searching with the pattern buffer.
1871 @node Using Registers
1872 @subsection Using Registers
1874 A group in a regular expression can match a (possibly empty) substring
1875 of the string that regular expression as a whole matched.  The matcher
1876 remembers the beginning and end of the substring matched by
1877 each group.
1879 To find out what they matched, pass a nonzero @var{regs} argument to a
1880 GNU matching or searching function (@pxref{GNU Matching} and
1881 @ref{GNU Searching}), i.e., the address of a structure of this type, as
1882 defined in @file{regex.h}:
1884 @c We don't bother to include this directly from regex.h,
1885 @c since it changes so rarely.
1886 @example
1887 @tindex re_registers
1888 @vindex num_regs @r{in @code{struct re_registers}}
1889 @vindex start @r{in @code{struct re_registers}}
1890 @vindex end @r{in @code{struct re_registers}}
1891 struct re_registers
1893   unsigned num_regs;
1894   regoff_t *start;
1895   regoff_t *end;
1897 @end example
1899 Except for (possibly) the @var{num_regs}'th element (see below), the
1900 @var{i}th element of the @code{start} and @code{end} arrays records
1901 information about the @var{i}th group in the pattern.  (They're declared
1902 as C pointers, but this is only because not all C compilers accept
1903 zero-length arrays; conceptually, it is simplest to think of them as
1904 arrays.)
1906 The @code{start} and @code{end} arrays are allocated in one of two ways.
1907 The simplest and perhaps most useful is to let the matcher (re)allocate
1908 enough space to record information for all the groups in the regular
1909 expression.  If @code{re_set_registers} is not called before searching
1910 or matching, then the matcher allocates two arrays each of @math{1 +
1911 @var{re_nsub}} elements (@var{re_nsub} is another field in the pattern
1912 buffer; @pxref{GNU Pattern Buffers}).  The extra element is set to
1913 @math{-1}.  Then on subsequent calls with the same pattern buffer and
1914 @var{regs} arguments, the matcher reallocates more space if necessary.
1916 The function:
1918 @findex re_set_registers
1919 @example
1920 void
1921 re_set_registers (struct re_pattern_buffer *@var{buffer},
1922                   struct re_registers *@var{regs},
1923                   size_t @var{num_regs},
1924                   regoff_t *@var{starts}, regoff_t *@var{ends})
1925 @end example
1927 @noindent sets @var{regs} to hold @var{num_regs} registers, storing
1928 them in @var{starts} and @var{ends}.  Subsequent matches using
1929 @var{buffer} and @var{regs} will use this memory for recording
1930 register information.  @var{starts} and @var{ends} must be allocated
1931 with malloc, and must each be at least @math{@var{num_regs} *
1932 @code{sizeof (regoff_t)}} bytes long.
1934 If @var{num_regs} is zero, then subsequent matches should allocate
1935 their own register data.
1937 Unless this function is called, the first search or match using
1938 @var{buffer} will allocate its own register data, without freeing the
1939 old data.
1941 The following examples illustrate the information recorded in the
1942 @code{re_registers} structure.  (In all of them, @samp{(} represents the
1943 open-group and @samp{)} the close-group operator.  The first character
1944 in the string @var{string} is at index 0.)
1946 @itemize @bullet
1948 @item
1949 If the regular expression has an @w{@var{i}-th}
1950 group that matches a
1951 substring of @var{string}, then the function sets
1952 @code{@w{@var{regs}->}start[@var{i}]} to the index in @var{string} where
1953 the substring matched by the @w{@var{i}-th} group begins, and
1954 @code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that
1955 substring's end.  The function sets @code{@w{@var{regs}->}start[0]} and
1956 @code{@w{@var{regs}->}end[0]} to analogous information about the entire
1957 pattern.
1959 For example, when you match @samp{((a)(b))} against @samp{ab}, you get:
1961 @itemize
1962 @item
1963 0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]}
1965 @item
1966 0 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]}
1968 @item
1969 0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]}
1971 @item
1972 1 in @code{@w{@var{regs}->}start[3]} and 2 in @code{@w{@var{regs}->}end[3]}
1973 @end itemize
1975 @item
1976 If a group matches more than once (as it might if followed by,
1977 e.g., a repetition operator), then the function reports the information
1978 about what the group @emph{last} matched.
1980 For example, when you match the pattern @samp{(a)*} against the string
1981 @samp{aa}, you get:
1983 @itemize
1984 @item
1985 0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]}
1987 @item
1988 1 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]}
1989 @end itemize
1991 @item
1992 If the @w{@var{i}-th} group does not participate in a
1993 successful match, e.g., it is an alternative not taken or a
1994 repetition operator allows zero repetitions of it, then the function
1995 sets @code{@w{@var{regs}->}start[@var{i}]} and
1996 @code{@w{@var{regs}->}end[@var{i}]} to @math{-1}.
1998 For example, when you match the pattern @samp{(a)*b} against
1999 the string @samp{b}, you get:
2001 @itemize
2002 @item
2003 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
2005 @item
2006 @math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]}
2007 @end itemize
2009 @item
2010 If the @w{@var{i}-th} group matches a zero-length string, then the
2011 function sets @code{@w{@var{regs}->}start[@var{i}]} and
2012 @code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that
2013 zero-length string.
2015 For example, when you match the pattern @samp{(a*)b} against the string
2016 @samp{b}, you get:
2018 @itemize
2019 @item
2020 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
2022 @item
2023 0 in @code{@w{@var{regs}->}start[1]} and 0 in @code{@w{@var{regs}->}end[1]}
2024 @end itemize
2026 @item
2027 If an @w{@var{i}-th} group contains a @w{@var{j}-th} group
2028 in turn not contained within any other group within group @var{i} and
2029 the function reports a match of the @w{@var{i}-th} group, then it
2030 records in @code{@w{@var{regs}->}start[@var{j}]} and
2031 @code{@w{@var{regs}->}end[@var{j}]} the last match (if it matched) of
2032 the @w{@var{j}-th} group.
2034 For example, when you match the pattern @samp{((a*)b)*} against the
2035 string @samp{abb}, @w{group 2} last matches the empty string, so you
2036 get what it previously matched:
2038 @itemize
2039 @item
2040 0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]}
2042 @item
2043 2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]}
2045 @item
2046 2 in @code{@w{@var{regs}->}start[2]} and 2 in @code{@w{@var{regs}->}end[2]}
2047 @end itemize
2049 When you match the pattern @samp{((a)*b)*} against the string
2050 @samp{abb}, @w{group 2} doesn't participate in the last match, so you
2051 get:
2053 @itemize
2054 @item
2055 0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]}
2057 @item
2058 2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]}
2060 @item
2061 0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]}
2062 @end itemize
2064 @item
2065 If an @w{@var{i}-th} group contains a @w{@var{j}-th} group
2066 in turn not contained within any other group within group @var{i}
2067 and the function sets
2068 @code{@w{@var{regs}->}start[@var{i}]} and
2069 @code{@w{@var{regs}->}end[@var{i}]} to @math{-1}, then it also sets
2070 @code{@w{@var{regs}->}start[@var{j}]} and
2071 @code{@w{@var{regs}->}end[@var{j}]} to @math{-1}.
2073 For example, when you match the pattern @samp{((a)*b)*c} against the
2074 string @samp{c}, you get:
2076 @itemize
2077 @item
2078 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
2080 @item
2081 @math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]}
2083 @item
2084 @math{-1} in @code{@w{@var{regs}->}start[2]} and @math{-1} in @code{@w{@var{regs}->}end[2]}
2085 @end itemize
2087 @end itemize
2089 @node Freeing GNU Pattern Buffers
2090 @subsection Freeing GNU Pattern Buffers
2092 To free any allocated fields of a pattern buffer, use the POSIX
2093 function @code{regfree}:
2095 @findex regfree
2096 @example
2097 void
2098 regfree (regex_t *@var{preg})
2099 @end example
2101 @noindent
2102 @var{preg} is the pattern buffer whose allocated fields you want freed;
2103 this works because since the type @code{regex_t}---the type for
2104 POSIX pattern buffers---is equivalent to the type
2105 @code{re_pattern_buffer}.
2107 @code{regfree} also sets @var{preg}'s @code{allocated} field to zero.
2108 After a buffer has been freed, it must have a regular expression
2109 compiled in it before passing it to a matching or searching function.
2112 @node BSD Regex Functions
2113 @section BSD Regex Functions
2115 If you're writing code that has to be Berkeley Unix compatible,
2116 you'll need to use these functions whose interfaces are the same as those
2117 in Berkeley Unix.
2119 @menu
2120 * BSD Regular Expression Compiling::    re_comp ()
2121 * BSD Searching::                       re_exec ()
2122 @end menu
2124 @node BSD Regular Expression Compiling
2125 @subsection  BSD Regular Expression Compiling
2127 With Berkeley Unix, you can only search for a given regular
2128 expression; you can't match one.  To search for it, you must first
2129 compile it.  Before you compile it, you must indicate the regular
2130 expression syntax you want it compiled according to by setting the
2131 variable @code{re_syntax_options} (declared in @file{regex.h} to some
2132 syntax (@pxref{Regular Expression Syntax}).
2134 To compile a regular expression use:
2136 @findex re_comp
2137 @example
2138 char *
2139 re_comp (char *@var{regex})
2140 @end example
2142 @noindent
2143 @var{regex} is the address of a null-terminated regular expression.
2144 @code{re_comp} uses an internal pattern buffer, so you can use only the
2145 most recently compiled pattern buffer.  This means that if you want to
2146 use a given regular expression that you've already compiled---but it
2147 isn't the latest one you've compiled---you'll have to recompile it.  If
2148 you call @code{re_comp} with the null string (@emph{not} the empty
2149 string) as the argument, it doesn't change the contents of the pattern
2150 buffer.
2152 If @code{re_comp} successfully compiles the regular expression, it
2153 returns zero.  If it can't compile the regular expression, it returns
2154 an error string.  @code{re_comp}'s error messages are identical to those
2155 of @code{re_compile_pattern} (@pxref{GNU Regular Expression
2156 Compiling}).
2158 @node BSD Searching
2159 @subsection BSD Searching
2161 Searching the Berkeley Unix way means searching in a string
2162 starting at its first character and trying successive positions within
2163 it to find a match.  Once you've compiled a pattern using @code{re_comp}
2164 (@pxref{BSD Regular Expression Compiling}), you can ask Regex
2165 to search for that pattern in a string using:
2167 @findex re_exec
2168 @example
2170 re_exec (char *@var{string})
2171 @end example
2173 @noindent
2174 @var{string} is the address of the null-terminated string in which you
2175 want to search.
2177 @code{re_exec} returns either 1 for success or 0 for failure.  It
2178 automatically uses a GNU fastmap (@pxref{Searching with Fastmaps}).