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:
14 see if a string matches a specified pattern as a whole, and
17 search within a string for a substring matching a specified pattern.
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
39 The Regex library is used by including @file{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
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
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:
74 the regular expression syntax your program has told the Regex library to
78 the context of the character in the regular expression.
81 In the following sections, we describe these things in more detail.
85 * Predefined Syntaxes::
86 * Collating Elements vs. Characters::
87 * The Backslash Character::
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
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
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
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:
175 a repetition operator first in the regular expression or just after a
176 match-beginning-of-line, open-group, or alternation operator; or
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
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.
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
196 @cnindex 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.
213 If this bit is set, then ignore case when matching; otherwise, case is
216 @cnindex 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
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
233 @cnindex 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
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
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
272 If this bit is set, GNU regex operators are not recognized; otherwise,
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.
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{)}.
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,
313 Egrep---in addition to syntaxes for POSIX basic and extended
316 The predefined syntaxes---taken directly from @file{regex.h}---are:
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 \
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 \
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)
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
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
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.
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{\}.
420 It quotes (makes ordinary, if it's special) the next character when you
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
440 inside a list and the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is set.
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:
452 @samp{\b} represents the match-word-boundary operator
453 (@pxref{Match-word-boundary Operator}).
456 @samp{\B} represents the match-within-word operator
457 (@pxref{Match-within-word Operator}).
460 @samp{\<} represents the match-beginning-of-word operator @*
461 (@pxref{Match-beginning-of-word Operator}).
464 @samp{\>} represents the match-end-of-word operator
465 (@pxref{Match-end-of-word Operator}).
468 @samp{\w} represents the match-word-constituent operator
469 (@pxref{Match-word-constituent Operator}).
472 @samp{\W} represents the match-non-word-constituent operator
473 (@pxref{Match-non-word-constituent Operator}).
476 @samp{\`} represents the match-beginning-of-buffer
477 operator and @samp{\'} represents the match-end-of-buffer operator
478 (@pxref{Buffer Operators}).
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}).
489 In all other cases, Regex ignores @samp{\}. For example,
490 @samp{\n} matches @samp{n}.
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}).
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:: ^ $
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{.})
540 This operator matches any single printing or nonprinting character
541 except it won't match a:
545 if the syntax bit @code{RE_DOT_NEWLINE} isn't set.
548 if the syntax bit @code{RE_DOT_NOT_NULL} is set.
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
572 * Match-zero-or-more Operator:: *
573 * Match-one-or-more Operator:: +
574 * Match-zero-or-one Operator:: ?
575 * Interval Operators:: @{@}
578 @node Match-zero-or-more Operator
579 @subsection The Match-zero-or-more Operator (@code{*})
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
597 is first in a regular expression, or
600 follows a match-beginning-of-line, open-group, or alternation
606 Three different things can happen in these cases:
610 If the syntax bit @code{RE_CONTEXT_INVALID_OPS} is set, then the
611 regular expression is invalid.
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).
619 Otherwise, @samp{*} is ordinary.
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{\+})
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{\+}
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{\?})
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
676 @node Interval Operators
677 @subsection Interval Operators (@code{@{} @dots{} @code{@}} or @code{\@{} @dots{} @code{\@}})
679 @cindex interval expression
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:
697 @item @{@var{count}@}
698 matches exactly @var{count} occurrences of the preceding regular
702 matches @var{min} or more occurrences of the preceding regular
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.
711 The interval expression (but not necessarily the regular expression that
712 contains it) is invalid if:
716 @var{min} is greater than @var{max}, or
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}
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
738 @node Alternation Operator
739 @section The Alternation Operator (@code{|} or @code{\|})
743 @cindex alternation 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
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}.)
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
782 @section List Operators (@code{[} @dots{} @code{]} and @code{[^} @dots{} @code{]})
784 @cindex matching list
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
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
822 For example, @samp{[^ab]} matches any character except @samp{a} or
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.
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.
837 quotes the next character if the syntax bit @code{RE_BACKSLASH_ESCAPE_IN_LISTS} is
841 represents the open-collating-symbol operator (@pxref{Collating Symbol
845 represents the close-collating-symbol operator.
848 represents the open-equivalence-class operator (@pxref{Equivalence Class
852 represents the close-equivalence-class operator.
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.
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.
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.
871 All other characters are ordinary. For example, @samp{[.*]} matches
872 @samp{.} and @samp{*}.
875 * Collating Symbol Operators:: [.elem.]
876 * Equivalence Class Operators:: [=class=]
877 * Character Class Operators:: [:class:]
878 * Range Operator:: start-end
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
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:
937 system-dependent; for GNU, a space or tab
940 control characters (in the ASCII encoding, code 0177 and codes
947 same as @code{print} except omits space
953 printable characters (in the ASCII encoding, space
954 tilde---codes 040 through 0176)
957 neither control nor alphanumeric characters
960 space, carriage return, newline, vertical tab, and form feed
966 hexadecimal digits: @code{0}--@code{9}, @code{a}--@code{f}, @code{A}--@code{F}
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.
979 @subsection The Range Operator (@code{-})
981 Regex recognizes @dfn{range expressions} inside a list. They represent
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}
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:
1010 Put the @samp{-} either first or last in the list.
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{.}.
1026 Put a range whose starting point is @samp{-} first in the list.
1030 For example, @samp{[-a-z]} matches a lowercase letter or a hyphen (in
1034 @node Grouping Operators
1035 @section Grouping Operators (@code{(} @dots{} @code{)} or @code{\(} @dots{} @code{\)})
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:
1055 delimit the argument(s) to an alternation operator (@pxref{Alternation
1056 Operator}) or a repetition operator (@pxref{Repetition
1060 keep track of the indices of the substring that matched a given group.
1061 @xref{Using Registers}, for a precise explanation.
1066 use the back-reference operator (@pxref{Back-reference Operator}).
1069 use registers (@pxref{Using Registers}).
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):
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.
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
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.
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.
1148 @node Anchoring Operators
1149 @section Anchoring Operators
1152 @cindex regexp anchoring
1154 These operators can constrain a pattern to match only at the beginning or
1155 end of the entire string or at the beginning or end of a line.
1158 * Match-beginning-of-line Operator:: ^
1159 * Match-end-of-line Operator:: $
1163 @node Match-beginning-of-line Operator
1164 @subsection The Match-beginning-of-line Operator (@code{^})
1167 @cindex beginning-of-line operator
1170 This operator can match the empty string either at the beginning of the
1171 string or after a newline character. Thus, it is said to @dfn{anchor}
1172 the pattern to the beginning of a line.
1174 In the cases following, @samp{^} represents this operator. (Otherwise,
1175 @samp{^} is ordinary.)
1180 It (the @samp{^}) is first in the pattern, as in @samp{^foo}.
1182 @cnindex RE_CONTEXT_INDEP_ANCHORS @r{(and @samp{^})}
1184 The syntax bit @code{RE_CONTEXT_INDEP_ANCHORS} is set, and it is outside
1185 a bracket expression.
1187 @cindex open-group operator and @samp{^}
1188 @cindex alternation operator and @samp{^}
1190 It follows an open-group or alternation operator, as in @samp{a\(^b\)}
1191 and @samp{a\|^b}. @xref{Grouping Operators}, and @ref{Alternation
1196 These rules imply that some valid patterns containing @samp{^} cannot be
1197 matched; for example, @samp{foo^bar} if @code{RE_CONTEXT_INDEP_ANCHORS}
1200 @vindex not_bol @r{field in pattern buffer}
1201 If the @code{not_bol} field is set in the pattern buffer (@pxref{GNU
1202 Pattern Buffers}), then @samp{^} fails to match at the beginning of the
1203 string. This lets you match against pieces of a line, as you would need to if,
1204 say, searching for repeated instances of a given pattern in a line; it
1205 would work correctly for patterns both with and without
1206 match-beginning-of-line operators.
1209 @node Match-end-of-line Operator
1210 @subsection The Match-end-of-line Operator (@code{$})
1213 @cindex end-of-line operator
1216 This operator can match the empty string either at the end of
1217 the string or before a newline character in the string. Thus, it is
1218 said to @dfn{anchor} the pattern to the end of a line.
1220 It is always represented by @samp{$}. For example, @samp{foo$} usually
1221 matches, e.g., @samp{foo} and, e.g., the first three characters of
1224 Its interaction with the syntax bits and pattern buffer fields is
1225 exactly the dual of @samp{^}'s; see the previous section. (That is,
1226 ``@samp{^}'' becomes ``@samp{$}'', ``beginning'' becomes ``end'',
1227 ``next'' becomes ``previous'', ``after'' becomes ``before'', and
1228 ``@code{not_bol}'' becomes ``@code{not_eol}''.)
1232 @chapter GNU Operators
1234 Following are operators that GNU defines (and POSIX doesn't).
1238 * Buffer Operators::
1241 @node Word Operators
1242 @section Word Operators
1244 The operators in this section require Regex to recognize parts of words.
1245 Regex uses a syntax table to determine whether or not a character is
1246 part of a word, i.e., whether or not it is @dfn{word-constituent}.
1249 * Non-Emacs Syntax Tables::
1250 * Match-word-boundary Operator:: \b
1251 * Match-within-word Operator:: \B
1252 * Match-beginning-of-word Operator:: \<
1253 * Match-end-of-word Operator:: \>
1254 * Match-word-constituent Operator:: \w
1255 * Match-non-word-constituent Operator:: \W
1258 @node Non-Emacs Syntax Tables
1259 @subsection Non-Emacs Syntax Tables
1261 A @dfn{syntax table} is an array indexed by the characters in your
1262 character set. In the ASCII encoding, therefore, a syntax table
1263 has 256 elements. Regex always uses a @code{char *} variable
1264 @code{re_syntax_table} as its syntax table. In some cases, it
1265 initializes this variable and in others it expects you to initialize it.
1269 If Regex is compiled with the preprocessor symbols @code{emacs} and
1270 @code{SYNTAX_TABLE} both undefined, then Regex allocates
1271 @code{re_syntax_table} and initializes an element @var{i} either to
1272 @code{Sword} (which it defines) if @var{i} is a letter, number, or
1273 @samp{_}, or to zero if it's not.
1276 If Regex is compiled with @code{emacs} undefined but @code{SYNTAX_TABLE}
1277 defined, then Regex expects you to define a @code{char *} variable
1278 @code{re_syntax_table} to be a valid syntax table.
1281 @xref{Emacs Syntax Tables}, for what happens when Regex is compiled with
1282 the preprocessor symbol @code{emacs} defined.
1286 @node Match-word-boundary Operator
1287 @subsection The Match-word-boundary Operator (@code{\b})
1290 @cindex word boundaries, matching
1292 This operator (represented by @samp{\b}) matches the empty string at
1293 either the beginning or the end of a word. For example, @samp{\brat\b}
1294 matches the separate word @samp{rat}.
1296 @node Match-within-word Operator
1297 @subsection The Match-within-word Operator (@code{\B})
1301 This operator (represented by @samp{\B}) matches the empty string within
1302 a word. For example, @samp{c\Brat\Be} matches @samp{crate}, but
1303 @samp{dirty \Brat} doesn't match @samp{dirty rat}.
1305 @node Match-beginning-of-word Operator
1306 @subsection The Match-beginning-of-word Operator (@code{\<})
1310 This operator (represented by @samp{\<}) matches the empty string at the
1311 beginning of a word.
1313 @node Match-end-of-word Operator
1314 @subsection The Match-end-of-word Operator (@code{\>})
1318 This operator (represented by @samp{\>}) matches the empty string at the
1321 @node Match-word-constituent Operator
1322 @subsection The Match-word-constituent Operator (@code{\w})
1326 This operator (represented by @samp{\w}) matches any word-constituent
1329 @node Match-non-word-constituent Operator
1330 @subsection The Match-non-word-constituent Operator (@code{\W})
1334 This operator (represented by @samp{\W}) matches any character that is
1335 not word-constituent.
1338 @node Buffer Operators
1339 @section Buffer Operators
1341 Following are operators which work on buffers. In Emacs, a @dfn{buffer}
1342 is, naturally, an Emacs buffer. For other programs, Regex considers the
1343 entire string to be matched as the buffer.
1346 * Match-beginning-of-buffer Operator:: \`
1347 * Match-end-of-buffer Operator:: \'
1351 @node Match-beginning-of-buffer Operator
1352 @subsection The Match-beginning-of-buffer Operator (@code{\`})
1356 This operator (represented by @samp{\`}) matches the empty string at the
1357 beginning of the buffer.
1359 @node Match-end-of-buffer Operator
1360 @subsection The Match-end-of-buffer Operator (@code{\'})
1364 This operator (represented by @samp{\'}) matches the empty string at the
1368 @node GNU Emacs Operators
1369 @chapter GNU Emacs Operators
1371 Following are operators that GNU defines (and POSIX doesn't)
1372 that you can use only when Regex is compiled with the preprocessor
1373 symbol @code{emacs} defined.
1376 * Syntactic Class Operators::
1380 @node Syntactic Class Operators
1381 @section Syntactic Class Operators
1383 The operators in this section require Regex to recognize the syntactic
1384 classes of characters. Regex uses a syntax table to determine this.
1387 * Emacs Syntax Tables::
1388 * Match-syntactic-class Operator:: \sCLASS
1389 * Match-not-syntactic-class Operator:: \SCLASS
1392 @node Emacs Syntax Tables
1393 @subsection Emacs Syntax Tables
1395 A @dfn{syntax table} is an array indexed by the characters in your
1396 character set. In the ASCII encoding, therefore, a syntax table
1399 If Regex is compiled with the preprocessor symbol @code{emacs} defined,
1400 then Regex expects you to define and initialize the variable
1401 @code{re_syntax_table} to be an Emacs syntax table. Emacs' syntax
1402 tables are more complicated than Regex's own (@pxref{Non-Emacs Syntax
1403 Tables}). @xref{Syntax, , Syntax, emacs, The GNU Emacs User's Manual},
1404 for a description of Emacs' syntax tables.
1406 @node Match-syntactic-class Operator
1407 @subsection The Match-syntactic-class Operator (@code{\s}@var{class})
1411 This operator matches any character whose syntactic class is represented
1412 by a specified character. @samp{\s@var{class}} represents this operator
1413 where @var{class} is the character representing the syntactic class you
1414 want. For example, @samp{w} represents the syntactic
1415 class of word-constituent characters, so @samp{\sw} matches any
1416 word-constituent character.
1418 @node Match-not-syntactic-class Operator
1419 @subsection The Match-not-syntactic-class Operator (@code{\S}@var{class})
1423 This operator is similar to the match-syntactic-class operator except
1424 that it matches any character whose syntactic class is @emph{not}
1425 represented by the specified character. @samp{\S@var{class}} represents
1426 this operator. For example, @samp{w} represents the syntactic class of
1427 word-constituent characters, so @samp{\Sw} matches any character that is
1428 not word-constituent.
1431 @node What Gets Matched?
1432 @chapter What Gets Matched?
1434 Regex usually matches strings according to the ``leftmost longest''
1435 rule; that is, it chooses the longest of the leftmost matches. This
1436 does not mean that for a regular expression containing subexpressions
1437 that it simply chooses the longest match for each subexpression, left to
1438 right; the overall match must also be the longest possible one.
1440 For example, @samp{(ac*)(c*d[ac]*)\1} matches @samp{acdacaaa}, not
1441 @samp{acdac}, as it would if it were to choose the longest match for the
1442 first subexpression.
1445 @node Programming with Regex
1446 @chapter Programming with Regex
1448 Here we describe how you use the Regex data structures and functions in
1449 C programs. Regex has three interfaces: one designed for GNU, one
1450 compatible with POSIX (as specified by POSIX, draft
1451 1003.2/D11.2), and one compatible with Berkeley Unix. The
1452 POSIX interface is not documented here; see the documentation of
1453 GNU libc, or the POSIX man pages. The Berkeley Unix interface is
1454 documented here for convenience, since its documentation is not
1455 otherwise readily available on GNU systems.
1458 * GNU Regex Functions::
1459 * BSD Regex Functions::
1463 @node GNU Regex Functions
1464 @section GNU Regex Functions
1466 If you're writing code that doesn't need to be compatible with either
1467 POSIX or Berkeley Unix, you can use these functions. They
1468 provide more options than the other interfaces.
1471 * GNU Pattern Buffers:: The re_pattern_buffer type.
1472 * GNU Regular Expression Compiling:: re_compile_pattern ()
1473 * GNU Matching:: re_match ()
1474 * GNU Searching:: re_search ()
1475 * Matching/Searching with Split Data:: re_match_2 (), re_search_2 ()
1476 * Searching with Fastmaps:: re_compile_fastmap ()
1477 * GNU Translate Tables:: The @code{translate} field.
1478 * Using Registers:: The re_registers type and related fns.
1479 * Freeing GNU Pattern Buffers:: regfree ()
1483 @node GNU Pattern Buffers
1484 @subsection GNU Pattern Buffers
1486 @cindex pattern buffer, definition of
1487 @tindex re_pattern_buffer @r{definition}
1488 @tindex struct re_pattern_buffer @r{definition}
1490 To compile, match, or search for a given regular expression, you must
1491 supply a pattern buffer. A @dfn{pattern buffer} holds one compiled
1492 regular expression.@footnote{Regular expressions are also referred to as
1493 ``patterns,'' hence the name ``pattern buffer.''}
1495 You can have several different pattern buffers simultaneously, each
1496 holding a compiled pattern for a different regular expression.
1498 @file{regex.h} defines the pattern buffer @code{struct} with the
1499 following public fields:
1502 unsigned char *buffer;
1503 unsigned long allocated;
1507 unsigned no_sub : 1;
1508 unsigned not_bol : 1;
1509 unsigned not_eol : 1;
1513 @node GNU Regular Expression Compiling
1514 @subsection GNU Regular Expression Compiling
1516 In GNU, you can both match and search for a given regular
1517 expression. To do either, you must first compile it in a pattern buffer
1518 (@pxref{GNU Pattern Buffers}).
1520 @cindex syntax initialization
1521 @vindex re_syntax_options @r{initialization}
1522 Regular expressions match according to the syntax with which they were
1523 compiled; with GNU, you indicate what syntax you want by setting
1524 the variable @code{re_syntax_options} (declared in @file{regex.h})
1525 before calling the compiling function, @code{re_compile_pattern} (see
1526 below). @xref{Syntax Bits}, and @ref{Predefined Syntaxes}.
1528 You can change the value of @code{re_syntax_options} at any time.
1529 Usually, however, you set its value once and then never change it.
1531 @cindex pattern buffer initialization
1532 @code{re_compile_pattern} takes a pattern buffer as an argument. You
1533 must initialize the following fields:
1537 @item translate @r{initialization}
1540 @vindex translate @r{initialization}
1541 Initialize this to point to a translate table if you want one, or to
1542 zero if you don't. We explain translate tables in @ref{GNU Translate
1546 @vindex fastmap @r{initialization}
1547 Initialize this to nonzero if you want a fastmap, or to zero if you
1552 @vindex buffer @r{initialization}
1553 @vindex allocated @r{initialization}
1555 If you want @code{re_compile_pattern} to allocate memory for the
1556 compiled pattern, set both of these to zero. If you have an existing
1557 block of memory (allocated with @code{malloc}) you want Regex to use,
1558 set @code{buffer} to its address and @code{allocated} to its size (in
1561 @code{re_compile_pattern} uses @code{realloc} to extend the space for
1562 the compiled pattern as necessary.
1566 To compile a pattern buffer, use:
1568 @findex re_compile_pattern
1571 re_compile_pattern (const char *@var{regex}, const int @var{regex_size},
1572 struct re_pattern_buffer *@var{pattern_buffer})
1576 @var{regex} is the regular expression's address, @var{regex_size} is its
1577 length, and @var{pattern_buffer} is the pattern buffer's address.
1579 If @code{re_compile_pattern} successfully compiles the regular
1580 expression, it returns zero and sets @code{*@var{pattern_buffer}} to the
1581 compiled pattern. It sets the pattern buffer's fields as follows:
1585 @vindex buffer @r{field, set by @code{re_compile_pattern}}
1586 to the compiled pattern.
1589 @vindex syntax @r{field, set by @code{re_compile_pattern}}
1590 to the current value of @code{re_syntax_options}.
1593 @vindex re_nsub @r{field, set by @code{re_compile_pattern}}
1594 to the number of subexpressions in @var{regex}.
1598 If @code{re_compile_pattern} can't compile @var{regex}, it returns an
1599 error string corresponding to a POSIX error code.
1603 @subsection GNU Matching
1605 @cindex matching with GNU functions
1607 Matching the GNU way means trying to match as much of a string as
1608 possible starting at a position within it you specify. Once you've compiled
1609 a pattern into a pattern buffer (@pxref{GNU Regular Expression
1610 Compiling}), you can ask the matcher to match that pattern against a
1616 re_match (struct re_pattern_buffer *@var{pattern_buffer},
1617 const char *@var{string}, const int @var{size},
1618 const int @var{start}, struct re_registers *@var{regs})
1622 @var{pattern_buffer} is the address of a pattern buffer containing a
1623 compiled pattern. @var{string} is the string you want to match; it can
1624 contain newline and null characters. @var{size} is the length of that
1625 string. @var{start} is the string index at which you want to
1626 begin matching; the first character of @var{string} is at index zero.
1627 @xref{Using Registers}, for an explanation of @var{regs}; you can safely
1630 @code{re_match} matches the regular expression in @var{pattern_buffer}
1631 against the string @var{string} according to the syntax of
1632 @var{pattern_buffer}. (@xref{GNU Regular Expression Compiling}, for how
1633 to set it.) The function returns @math{-1} if the compiled pattern does
1634 not match any part of @var{string} and @math{-2} if an internal error
1635 happens; otherwise, it returns how many (possibly zero) characters of
1636 @var{string} the pattern matched.
1638 An example: suppose @var{pattern_buffer} points to a pattern buffer
1639 containing the compiled pattern for @samp{a*}, and @var{string} points
1640 to @samp{aaaaab} (whereupon @var{size} should be 6). Then if @var{start}
1641 is 2, @code{re_match} returns 3, i.e., @samp{a*} would have matched the
1642 last three @samp{a}s in @var{string}. If @var{start} is 0,
1643 @code{re_match} returns 5, i.e., @samp{a*} would have matched all the
1644 @samp{a}s in @var{string}. If @var{start} is either 5 or 6, it returns
1647 If @var{start} is not between zero and @var{size}, then
1648 @code{re_match} returns @math{-1}.
1652 @subsection GNU Searching
1654 @cindex searching with GNU functions
1656 @dfn{Searching} means trying to match starting at successive positions
1657 within a string. The function @code{re_search} does this.
1659 Before calling @code{re_search}, you must compile your regular
1660 expression. @xref{GNU Regular Expression Compiling}.
1662 Here is the function declaration:
1667 re_search (struct re_pattern_buffer *@var{pattern_buffer},
1668 const char *@var{string}, const int @var{size},
1669 const int @var{start}, const int @var{range},
1670 struct re_registers *@var{regs})
1674 @vindex start @r{argument to @code{re_search}}
1675 @vindex range @r{argument to @code{re_search}}
1676 whose arguments are the same as those to @code{re_match} (@pxref{GNU
1677 Matching}) except that the two arguments @var{start} and @var{range}
1678 replace @code{re_match}'s argument @var{start}.
1680 If @var{range} is positive, then @code{re_search} attempts a match
1681 starting first at index @var{start}, then at @math{@var{start} + 1} if
1682 that fails, and so on, up to @math{@var{start} + @var{range}}; if
1683 @var{range} is negative, then it attempts a match starting first at
1684 index @var{start}, then at @math{@var{start} -1} if that fails, and so
1687 If @var{start} is not between zero and @var{size}, then @code{re_search}
1688 returns @math{-1}. When @var{range} is positive, @code{re_search}
1689 adjusts @var{range} so that @math{@var{start} + @var{range} - 1} is
1690 between zero and @var{size}, if necessary; that way it won't search
1691 outside of @var{string}. Similarly, when @var{range} is negative,
1692 @code{re_search} adjusts @var{range} so that @math{@var{start} +
1693 @var{range} + 1} is between zero and @var{size}, if necessary.
1695 If the @code{fastmap} field of @var{pattern_buffer} is zero,
1696 @code{re_search} matches starting at consecutive positions; otherwise,
1697 it uses @code{fastmap} to make the search more efficient.
1698 @xref{Searching with Fastmaps}.
1700 If no match is found, @code{re_search} returns @math{-1}. If
1701 a match is found, it returns the index where the match began. If an
1702 internal error happens, it returns @math{-2}.
1705 @node Matching/Searching with Split Data
1706 @subsection Matching and Searching with Split Data
1708 Using the functions @code{re_match_2} and @code{re_search_2}, you can
1709 match or search in data that is divided into two strings.
1716 re_match_2 (struct re_pattern_buffer *@var{buffer},
1717 const char *@var{string1}, const int @var{size1},
1718 const char *@var{string2}, const int @var{size2},
1719 const int @var{start},
1720 struct re_registers *@var{regs},
1721 const int @var{stop})
1725 is similar to @code{re_match} (@pxref{GNU Matching}) except that you
1726 pass @emph{two} data strings and sizes, and an index @var{stop} beyond
1727 which you don't want the matcher to try matching. As with
1728 @code{re_match}, if it succeeds, @code{re_match_2} returns how many
1729 characters of @var{string} it matched. Regard @var{string1} and
1730 @var{string2} as concatenated when you set the arguments @var{start} and
1731 @var{stop} and use the contents of @var{regs}; @code{re_match_2} never
1732 returns a value larger than @math{@var{size1} + @var{size2}}.
1739 re_search_2 (struct re_pattern_buffer *@var{buffer},
1740 const char *@var{string1}, const int @var{size1},
1741 const char *@var{string2}, const int @var{size2},
1742 const int @var{start}, const int @var{range},
1743 struct re_registers *@var{regs},
1744 const int @var{stop})
1748 is similarly related to @code{re_search}.
1751 @node Searching with Fastmaps
1752 @subsection Searching with Fastmaps
1755 If you're searching through a long string, you should use a fastmap.
1756 Without one, the searcher tries to match at consecutive positions in the
1757 string. Generally, most of the characters in the string could not start
1758 a match. It takes much longer to try matching at a given position in the
1759 string than it does to check in a table whether or not the character at
1760 that position could start a match. A @dfn{fastmap} is such a table.
1762 More specifically, a fastmap is an array indexed by the characters in
1763 your character set. Under the ASCII encoding, therefore, a fastmap
1764 has 256 elements. If you want the searcher to use a fastmap with a
1765 given pattern buffer, you must allocate the array and assign the array's
1766 address to the pattern buffer's @code{fastmap} field. You either can
1767 compile the fastmap yourself or have @code{re_search} do it for you;
1768 when @code{fastmap} is nonzero, it automatically compiles a fastmap the
1769 first time you search using a particular compiled pattern.
1771 By setting the buffer's @code{fastmap} field before calling
1772 @code{re_compile_pattern}, you can reuse a buffer data structure across
1773 multiple searches with different patterns, and allocate the fastmap only
1774 once. Nonetheless, the fastmap must be recompiled each time the buffer
1775 has a new pattern compiled into it.
1777 To compile a fastmap yourself, use:
1779 @findex re_compile_fastmap
1782 re_compile_fastmap (struct re_pattern_buffer *@var{pattern_buffer})
1786 @var{pattern_buffer} is the address of a pattern buffer. If the
1787 character @var{c} could start a match for the pattern,
1788 @code{re_compile_fastmap} makes
1789 @code{@var{pattern_buffer}->fastmap[@var{c}]} nonzero. It returns
1790 @math{0} if it can compile a fastmap and @math{-2} if there is an
1791 internal error. For example, if @samp{|} is the alternation operator
1792 and @var{pattern_buffer} holds the compiled pattern for @samp{a|b}, then
1793 @code{re_compile_fastmap} sets @code{fastmap['a']} and
1794 @code{fastmap['b']} (and no others).
1796 @code{re_search} uses a fastmap as it moves along in the string: it
1797 checks the string's characters until it finds one that's in the fastmap.
1798 Then it tries matching at that character. If the match fails, it
1799 repeats the process. So, by using a fastmap, @code{re_search} doesn't
1800 waste time trying to match at positions in the string that couldn't
1803 If you don't want @code{re_search} to use a fastmap,
1804 store zero in the @code{fastmap} field of the pattern buffer before
1805 calling @code{re_search}.
1807 Once you've initialized a pattern buffer's @code{fastmap} field, you
1808 need never do so again---even if you compile a new pattern in
1809 it---provided the way the field is set still reflects whether or not you
1810 want a fastmap. @code{re_search} will still either do nothing if
1811 @code{fastmap} is null or, if it isn't, compile a new fastmap for the
1814 @node GNU Translate Tables
1815 @subsection GNU Translate Tables
1817 If you set the @code{translate} field of a pattern buffer to a translate
1818 table, then the GNU Regex functions to which you've passed that
1819 pattern buffer use it to apply a simple transformation
1820 to all the regular expression and string characters at which they look.
1822 A @dfn{translate table} is an array indexed by the characters in your
1823 character set. Under the ASCII encoding, therefore, a translate
1824 table has 256 elements. The array's elements are also characters in
1825 your character set. When the Regex functions see a character @var{c},
1826 they use @code{translate[@var{c}]} in its place, with one exception: the
1827 character after a @samp{\} is not translated. (This ensures that, the
1828 operators, e.g., @samp{\B} and @samp{\b}, are always distinguishable.)
1830 For example, a table that maps all lowercase letters to the
1831 corresponding uppercase ones would cause the matcher to ignore
1832 differences in case.@footnote{A table that maps all uppercase letters to
1833 the corresponding lowercase ones would work just as well for this
1834 purpose.} Such a table would map all characters except lowercase letters
1835 to themselves, and lowercase letters to the corresponding uppercase
1836 ones. Under the ASCII encoding, here's how you could initialize
1837 such a table (we'll call it @code{case_fold}):
1840 for (i = 0; i < 256; i++)
1842 for (i = 'a'; i <= 'z'; i++)
1843 case_fold[i] = i - ('a' - 'A');
1846 You tell Regex to use a translate table on a given pattern buffer by
1847 assigning that table's address to the @code{translate} field of that
1848 buffer. If you don't want Regex to do any translation, put zero into
1849 this field. You'll get weird results if you change the table's contents
1850 anytime between compiling the pattern buffer, compiling its fastmap, and
1851 matching or searching with the pattern buffer.
1853 @node Using Registers
1854 @subsection Using Registers
1856 A group in a regular expression can match a (possibly empty) substring
1857 of the string that regular expression as a whole matched. The matcher
1858 remembers the beginning and end of the substring matched by
1861 To find out what they matched, pass a nonzero @var{regs} argument to a
1862 GNU matching or searching function (@pxref{GNU Matching} and
1863 @ref{GNU Searching}), i.e., the address of a structure of this type, as
1864 defined in @file{regex.h}:
1866 @c We don't bother to include this directly from regex.h,
1867 @c since it changes so rarely.
1869 @tindex re_registers
1870 @vindex num_regs @r{in @code{struct re_registers}}
1871 @vindex start @r{in @code{struct re_registers}}
1872 @vindex end @r{in @code{struct re_registers}}
1881 Except for (possibly) the @var{num_regs}'th element (see below), the
1882 @var{i}th element of the @code{start} and @code{end} arrays records
1883 information about the @var{i}th group in the pattern. (They're declared
1884 as C pointers, but this is only because not all C compilers accept
1885 zero-length arrays; conceptually, it is simplest to think of them as
1888 The @code{start} and @code{end} arrays are allocated in one of two ways.
1889 The simplest and perhaps most useful is to let the matcher (re)allocate
1890 enough space to record information for all the groups in the regular
1891 expression. If @code{re_set_registers} is not called before searching
1892 or matching, then the matcher allocates two arrays each of @math{1 +
1893 @var{re_nsub}} elements (@var{re_nsub} is another field in the pattern
1894 buffer; @pxref{GNU Pattern Buffers}). The extra element is set to
1895 @math{-1}. Then on subsequent calls with the same pattern buffer and
1896 @var{regs} arguments, the matcher reallocates more space if necessary.
1900 @findex re_set_registers
1903 re_set_registers (struct re_pattern_buffer *@var{buffer},
1904 struct re_registers *@var{regs},
1905 size_t @var{num_regs},
1906 regoff_t *@var{starts}, regoff_t *@var{ends})
1909 @noindent sets @var{regs} to hold @var{num_regs} registers, storing
1910 them in @var{starts} and @var{ends}. Subsequent matches using
1911 @var{buffer} and @var{regs} will use this memory for recording
1912 register information. @var{starts} and @var{ends} must be allocated
1913 with malloc, and must each be at least @math{@var{num_regs} *
1914 @code{sizeof (regoff_t)}} bytes long.
1916 If @var{num_regs} is zero, then subsequent matches should allocate
1917 their own register data.
1919 Unless this function is called, the first search or match using
1920 @var{buffer} will allocate its own register data, without freeing the
1923 The following examples illustrate the information recorded in the
1924 @code{re_registers} structure. (In all of them, @samp{(} represents the
1925 open-group and @samp{)} the close-group operator. The first character
1926 in the string @var{string} is at index 0.)
1931 If the regular expression has an @w{@var{i}-th}
1932 group that matches a
1933 substring of @var{string}, then the function sets
1934 @code{@w{@var{regs}->}start[@var{i}]} to the index in @var{string} where
1935 the substring matched by the @w{@var{i}-th} group begins, and
1936 @code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that
1937 substring's end. The function sets @code{@w{@var{regs}->}start[0]} and
1938 @code{@w{@var{regs}->}end[0]} to analogous information about the entire
1941 For example, when you match @samp{((a)(b))} against @samp{ab}, you get:
1945 0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]}
1948 0 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]}
1951 0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]}
1954 1 in @code{@w{@var{regs}->}start[3]} and 2 in @code{@w{@var{regs}->}end[3]}
1958 If a group matches more than once (as it might if followed by,
1959 e.g., a repetition operator), then the function reports the information
1960 about what the group @emph{last} matched.
1962 For example, when you match the pattern @samp{(a)*} against the string
1967 0 in @code{@w{@var{regs}->}start[0]} and 2 in @code{@w{@var{regs}->}end[0]}
1970 1 in @code{@w{@var{regs}->}start[1]} and 2 in @code{@w{@var{regs}->}end[1]}
1974 If the @w{@var{i}-th} group does not participate in a
1975 successful match, e.g., it is an alternative not taken or a
1976 repetition operator allows zero repetitions of it, then the function
1977 sets @code{@w{@var{regs}->}start[@var{i}]} and
1978 @code{@w{@var{regs}->}end[@var{i}]} to @math{-1}.
1980 For example, when you match the pattern @samp{(a)*b} against
1981 the string @samp{b}, you get:
1985 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
1988 @math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]}
1992 If the @w{@var{i}-th} group matches a zero-length string, then the
1993 function sets @code{@w{@var{regs}->}start[@var{i}]} and
1994 @code{@w{@var{regs}->}end[@var{i}]} to the index just beyond that
1997 For example, when you match the pattern @samp{(a*)b} against the string
2002 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
2005 0 in @code{@w{@var{regs}->}start[1]} and 0 in @code{@w{@var{regs}->}end[1]}
2009 If an @w{@var{i}-th} group contains a @w{@var{j}-th} group
2010 in turn not contained within any other group within group @var{i} and
2011 the function reports a match of the @w{@var{i}-th} group, then it
2012 records in @code{@w{@var{regs}->}start[@var{j}]} and
2013 @code{@w{@var{regs}->}end[@var{j}]} the last match (if it matched) of
2014 the @w{@var{j}-th} group.
2016 For example, when you match the pattern @samp{((a*)b)*} against the
2017 string @samp{abb}, @w{group 2} last matches the empty string, so you
2018 get what it previously matched:
2022 0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]}
2025 2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]}
2028 2 in @code{@w{@var{regs}->}start[2]} and 2 in @code{@w{@var{regs}->}end[2]}
2031 When you match the pattern @samp{((a)*b)*} against the string
2032 @samp{abb}, @w{group 2} doesn't participate in the last match, so you
2037 0 in @code{@w{@var{regs}->}start[0]} and 3 in @code{@w{@var{regs}->}end[0]}
2040 2 in @code{@w{@var{regs}->}start[1]} and 3 in @code{@w{@var{regs}->}end[1]}
2043 0 in @code{@w{@var{regs}->}start[2]} and 1 in @code{@w{@var{regs}->}end[2]}
2047 If an @w{@var{i}-th} group contains a @w{@var{j}-th} group
2048 in turn not contained within any other group within group @var{i}
2049 and the function sets
2050 @code{@w{@var{regs}->}start[@var{i}]} and
2051 @code{@w{@var{regs}->}end[@var{i}]} to @math{-1}, then it also sets
2052 @code{@w{@var{regs}->}start[@var{j}]} and
2053 @code{@w{@var{regs}->}end[@var{j}]} to @math{-1}.
2055 For example, when you match the pattern @samp{((a)*b)*c} against the
2056 string @samp{c}, you get:
2060 0 in @code{@w{@var{regs}->}start[0]} and 1 in @code{@w{@var{regs}->}end[0]}
2063 @math{-1} in @code{@w{@var{regs}->}start[1]} and @math{-1} in @code{@w{@var{regs}->}end[1]}
2066 @math{-1} in @code{@w{@var{regs}->}start[2]} and @math{-1} in @code{@w{@var{regs}->}end[2]}
2071 @node Freeing GNU Pattern Buffers
2072 @subsection Freeing GNU Pattern Buffers
2074 To free any allocated fields of a pattern buffer, use the POSIX
2075 function @code{regfree}:
2080 regfree (regex_t *@var{preg})
2084 @var{preg} is the pattern buffer whose allocated fields you want freed;
2085 this works because since the type @code{regex_t}---the type for
2086 POSIX pattern buffers---is equivalent to the type
2087 @code{re_pattern_buffer}.
2089 @code{regfree} also sets @var{preg}'s @code{allocated} field to zero.
2090 After a buffer has been freed, it must have a regular expression
2091 compiled in it before passing it to a matching or searching function.
2094 @node BSD Regex Functions
2095 @section BSD Regex Functions
2097 If you're writing code that has to be Berkeley Unix compatible,
2098 you'll need to use these functions whose interfaces are the same as those
2102 * BSD Regular Expression Compiling:: re_comp ()
2103 * BSD Searching:: re_exec ()
2106 @node BSD Regular Expression Compiling
2107 @subsection BSD Regular Expression Compiling
2109 With Berkeley Unix, you can only search for a given regular
2110 expression; you can't match one. To search for it, you must first
2111 compile it. Before you compile it, you must indicate the regular
2112 expression syntax you want it compiled according to by setting the
2113 variable @code{re_syntax_options} (declared in @file{regex.h} to some
2114 syntax (@pxref{Regular Expression Syntax}).
2116 To compile a regular expression use:
2121 re_comp (char *@var{regex})
2125 @var{regex} is the address of a null-terminated regular expression.
2126 @code{re_comp} uses an internal pattern buffer, so you can use only the
2127 most recently compiled pattern buffer. This means that if you want to
2128 use a given regular expression that you've already compiled---but it
2129 isn't the latest one you've compiled---you'll have to recompile it. If
2130 you call @code{re_comp} with the null string (@emph{not} the empty
2131 string) as the argument, it doesn't change the contents of the pattern
2134 If @code{re_comp} successfully compiles the regular expression, it
2135 returns zero. If it can't compile the regular expression, it returns
2136 an error string. @code{re_comp}'s error messages are identical to those
2137 of @code{re_compile_pattern} (@pxref{GNU Regular Expression
2141 @subsection BSD Searching
2143 Searching the Berkeley Unix way means searching in a string
2144 starting at its first character and trying successive positions within
2145 it to find a match. Once you've compiled a pattern using @code{re_comp}
2146 (@pxref{BSD Regular Expression Compiling}), you can ask Regex
2147 to search for that pattern in a string using:
2152 re_exec (char *@var{string})
2156 @var{string} is the address of the null-terminated string in which you
2159 @code{re_exec} returns either 1 for success or 0 for failure. It
2160 automatically uses a GNU fastmap (@pxref{Searching with Fastmaps}).