Annotation of GNUtools/emacs/info/regex, revision 1.1.1.1

1.1       root        1: Info file regex, produced by Makeinfo, -*- Text -*- from input file
                      2: regex.texinfo.
                      3: 
                      4: 
                      5: 
                      6: File: regex,  Node: top,  Next: syntax,  Up: (dir)
                      7: 
                      8: "regex" regular expression matching library.
                      9: ********************************************
                     10: 
                     11: Overview
                     12: ========
                     13: 
                     14: Regular expression matching allows you to test whether a string fits
                     15: into a specific syntactic shape.  You can also search a string for a
                     16: substring that fits a pattern.
                     17: 
                     18: A regular expression describes a set of strings.  The simplest case
                     19: is one that describes a particular string; for example, the string
                     20: `foo' when regarded as a regular expression matches `foo' and nothing
                     21: else.  Nontrivial regular expressions use certain special constructs
                     22: so that they can match more than one string.  For example, the
                     23: regular expression `foo\|bar' matches either the string `foo' or the
                     24: string `bar'; the regular expression `c[ad]*r' matches any of the
                     25: strings `cr', `car', `cdr', `caar', `cadddar' and all other such
                     26: strings with any number of `a''s and `d''s.
                     27: 
                     28: The first step in matching a regular expression is to compile it. 
                     29: You must supply the pattern string and also a pattern buffer to hold
                     30: the compiled result.  That result contains the pattern in an internal
                     31: format that is easier to use in matching.
                     32: 
                     33: Having compiled a pattern, you can match it against strings.  You can
                     34: match the compiled pattern any number of times against different
                     35: strings.
                     36: 
                     37: * Menu:
                     38: 
                     39: * syntax::     Syntax of regular expressions
                     40: * directives:: Meaning of characters as regex string directives.
                     41: * emacs::      Additional character directives available
                     42:                  only for use within Emacs.
                     43: * programming:: Using the regex library from C programs
                     44: * unix::       Unix-compatible entry-points to regex library
                     45: 
                     46: 
                     47: 
                     48: File: regex,  Node: syntax,  Next: directives,  Prev: top,  Up: top
                     49: 
                     50: Syntax of Regular Expressions
                     51: =============================
                     52: 
                     53: Regular expressions have a syntax in which a few characters are
                     54: special constructs and the rest are "ordinary".  An ordinary
                     55: character is a simple regular expression which matches that character
                     56: and nothing else.  The special characters are `$', `^', `.', `*',
                     57: `+', `?', `[', `]' and `\'.  Any other character appearing in a
                     58: regular expression is ordinary, unless a `\' precedes it.
                     59: 
                     60: For example, `f' is not a special character, so it is ordinary, and
                     61: therefore `f' is a regular expression that matches the string `f' and
                     62: no other string.  (It does *not* match the string `ff'.)  Likewise,
                     63: `o' is a regular expression that matches only `o'.
                     64: 
                     65: Any two regular expressions A and B can be concatenated.  The result
                     66: is a regular expression which matches a string if A matches some
                     67: amount of the beginning of that string and B matches the rest of the
                     68: string.
                     69: 
                     70: As a simple example, we can concatenate the regular expressions `f'
                     71: and `o' to get the regular expression `fo', which matches only the
                     72: string `fo'.  Still trivial.
                     73: 
                     74: Note: for Unix compatibility, special characters are treated as
                     75: ordinary ones if they are in contexts where their special meanings
                     76: make no sense.  For example, `*foo' treats `*' as ordinary since
                     77: there is no preceding expression on which the `*' can act.  It is
                     78: poor practice to depend on this behavior; better to quote the special
                     79: character anyway, regardless of where is appears.
                     80: 
                     81: 
                     82: 
                     83: File: regex,  Node: directives,  Next: emacs,  Prev: syntax,  Up: top
                     84: 
                     85: The following are the characters and character sequences which have
                     86: special meaning within regular expressions.  Any character not
                     87: mentioned here is not special; it stands for exactly itself for the
                     88: purposes of searching and matching.  *Note syntax::.
                     89: 
                     90: `.'
                     91:      is a special character that matches anything except a newline. 
                     92:      Using concatenation, we can make regular expressions like `a.b'
                     93:      which matches any three-character string which begins with `a'
                     94:      and ends with `b'.
                     95: 
                     96: `*'
                     97:      is not a construct by itself; it is a suffix, which means the
                     98:      preceding regular expression is to be repeated as many times as
                     99:      possible.  In `fo*', the `*' applies to the `o', so `fo*'
                    100:      matches `f' followed by any number of `o''s.
                    101: 
                    102:      The case of zero `o''s is allowed: `fo*' does match `f'.
                    103: 
                    104:      `*' always applies to the *smallest* possible preceding
                    105:      expression.  Thus, `fo*' has a repeating `o', not a repeating
                    106:      `fo'.
                    107: 
                    108:      The matcher processes a `*' construct by matching, immediately,
                    109:      as many repetitions as can be found.  Then it continues with the
                    110:      rest of the pattern.  If that fails, backtracking occurs,
                    111:      discarding some of the matches of the `*''d construct in case
                    112:      that makes it possible to match the rest of the pattern.  For
                    113:      example, matching `c[ad]*ar' against the string `caddaar', the
                    114:      `[ad]*' first matches `addaa', but this does not allow the next
                    115:      `a' in the pattern to match.  So the last of the matches of
                    116:      `[ad]' is undone and the following `a' is tried again.  Now it
                    117:      succeeds.
                    118: 
                    119: `+'
                    120:      `+' is like `*' except that at least one match for the preceding
                    121:      pattern is required for `+'.  Thus, `c[ad]+r' does not match
                    122:      `cr' but does match anything else that `c[ad]*r' would match.
                    123: 
                    124: `?'
                    125:      `?' is like `*' except that it allows either zero or one match
                    126:      for the preceding pattern.  Thus, `c[ad]?r' matches `cr' or
                    127:      `car' or `cdr', and nothing else.
                    128: 
                    129: `[ ... ]'
                    130:      `[' begins a "character set", which is terminated by a `]'.  In
                    131:      the simplest case, the characters between the two form the set. 
                    132:      Thus, `[ad]' matches either `a' or `d', and `[ad]*' matches any
                    133:      string of `a''s and `d''s (including the empty string), from
                    134:      which it follows that `c[ad]*r' matches `car', etc.
                    135: 
                    136:      Character ranges can also be included in a character set, by
                    137:      writing two characters with a `-' between them.  Thus, `[a-z]'
                    138:      matches any lower-case letter.  Ranges may be intermixed freely
                    139:      with individual characters, as in `[a-z$%.]', which matches any
                    140:      lower case letter or `$', `%' or period.
                    141: 
                    142:      Note that the usual special characters are not special any more
                    143:      inside a character set.  A completely different set of special
                    144:      characters exists inside character sets: `]', `-' and `^'.
                    145: 
                    146:      To include a `]' in a character set, you must make it the first
                    147:      character.  For example, `[]a]' matches `]' or `a'.  To include
                    148:      a `-', you must use it in a context where it cannot possibly
                    149:      indicate a range: that is, as the first character, or
                    150:      immediately after a range.
                    151: 
                    152: `[^ ... ]'
                    153:      `[^' begins a "complement character set", which matches any
                    154:      character except the ones specified.  Thus, `[^a-z0-9A-Z]'
                    155:      matches all characters *except* letters and digits.
                    156: 
                    157:      `^' is not special in a character set unless it is the first
                    158:      character.  The character following the `^' is treated as if it
                    159:      were first (it may be a `-' or a `]').
                    160: 
                    161: `^'
                    162:      is a special character that matches the empty string -- but only
                    163:      if at the beginning of a line in the text being matched. 
                    164:      Otherwise it fails to match anything.  Thus, `^foo' matches a
                    165:      `foo' which occurs at the beginning of a line.
                    166: 
                    167: `$'
                    168:      is similar to `^' but matches only at the end of a line.  Thus,
                    169:      `xx*$' matches a string of one or more `x''s at the end of a line.
                    170: 
                    171: `\'
                    172:      has two functions: it quotes the above special characters
                    173:      (including `\'), and it introduces additional special constructs.
                    174: 
                    175:      Because `\' quotes special characters, `\$' is a regular
                    176:      expression which matches only `$', and `\[' is a regular
                    177:      expression which matches only `[', and so on.
                    178: 
                    179:      For the most part, `\' followed by any character matches only
                    180:      that character.  However, there are several exceptions:
                    181:      characters which, when preceded by `\', are special constructs. 
                    182:      Such characters are always ordinary when encountered on their own.
                    183: 
                    184:      No new special characters will ever be defined.  All extensions
                    185:      to the regular expression syntax are made by defining new
                    186:      two-character constructs that begin with `\'.
                    187: 
                    188: `\|'
                    189:      specifies an alternative.  Two regular expressions A and B with
                    190:      `\|' in between form an expression that matches anything that
                    191:      either A or B will match.
                    192: 
                    193:      Thus, `foo\|bar' matches either `foo' or `bar' but no other
                    194:      string.
                    195: 
                    196:      `\|' applies to the largest possible surrounding expressions. 
                    197:      Only a surrounding `\( ... \)' grouping can limit the grouping
                    198:      power of `\|'.
                    199: 
                    200:      Full backtracking capability exists when multiple `\|''s are used.
                    201: 
                    202: `\( ... \)'
                    203:      is a grouping construct that serves three purposes:
                    204: 
                    205:        1. To enclose a set of `\|' alternatives for other operations.
                    206:           Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
                    207: 
                    208:        2. To enclose a complicated expression for the postfix `*' to
                    209:           operate on.  Thus, `ba\(na\)*' matches `bananana', etc.,
                    210:           with any (zero or more) number of `na''s.
                    211: 
                    212:        3. To mark a matched substring for future reference.
                    213: 
                    214:      This last application is not a consequence of the idea of a
                    215:      parenthetical grouping; it is a separate feature which happens
                    216:      to be assigned as a second meaning to the same `\( ... \)'
                    217:      construct because there is no conflict in practice between the
                    218:      two meanings.  Here is an explanation of this feature:
                    219: 
                    220: `\DIGIT'
                    221:      After the end of a `\( ... \)' construct, the matcher remembers
                    222:      the beginning and end of the text matched by that construct. 
                    223:      Then, later on in the regular expression, you can use `\'
                    224:      followed by DIGIT to mean "match the same text matched the
                    225:      DIGIT'th time by the `\( ... \)' construct."  The `\( ... \)'
                    226:      constructs are numbered in order of commencement in the regexp.
                    227: 
                    228:      The strings matching the first nine `\( ... \)' constructs
                    229:      appearing in a regular expression are assigned numbers 1 through
                    230:      9 in order of their beginnings.  `\1' through `\9' may be used
                    231:      to refer to the text matched by the corresponding `\( ... \)'
                    232:      construct.
                    233: 
                    234:      For example, `\(.*\)\1' matches any string that is composed of
                    235:      two identical halves.  The `\(.*\)' matches the first half,
                    236:      which may be anything, but the `\1' that follows must match the
                    237:      same exact text.
                    238: 
                    239: `\b'
                    240:      matches the empty string, but only if it is at the beginning or
                    241:      end of a word.  Thus, `\bfoo\b' matches any occurrence of `foo'
                    242:      as a separate word.  `\bball\(s\|\)\b' matches `ball' or `balls'
                    243:      as a separate word.
                    244: 
                    245: `\B'
                    246:      matches the empty string, provided it is *not* at the beginning
                    247:      or end of a word.
                    248: 
                    249: `\<'
                    250:      matches the empty string, but only if it is at the beginning of
                    251:      a word.
                    252: 
                    253: `\>'
                    254:      matches the empty string, but only if it is at the end of a word.
                    255: 
                    256: `\w'
                    257:      matches any word-constituent character.
                    258: 
                    259: `\W'
                    260:      matches any character that is not a word-constituent.
                    261: 
                    262: There are a number of additional `\' regexp directives available for
                    263: use within Emacs only.
                    264: 
                    265: (*note emacs::.).
                    266: 
                    267: 
                    268: 
                    269: File: regex,  Node: emacs,  Next: programming,  Prev: directives,  Up: top
                    270: 
                    271: Constructs Available in Emacs Only
                    272: ----------------------------------
                    273: 
                    274: `\`'
                    275:      matches the empty string, but only if it is at the beginning of
                    276:      the buffer.
                    277: 
                    278: `\''
                    279:      matches the empty string, but only if it is at the end of the
                    280:      buffer.
                    281: 
                    282: `\sCODE'
                    283:      matches any character whose syntax is CODE.  CODE is a letter
                    284:      which represents a syntax code: thus, `w' for word constituent,
                    285:      `-' for whitespace, `(' for open-parenthesis, etc.  See the
                    286:      documentation for the Emacs function `modify-syntax-entry' for
                    287:      further details.
                    288: 
                    289:      Thus, `\s(' matches any character with open-parenthesis syntax.
                    290: 
                    291: `\SCODE'
                    292:      matches any character whose syntax is not CODE.
                    293: 
                    294: 
                    295: 
                    296: File: regex,  Node: programming,  Next: compiling,  Prev: emacs,  Up: top
                    297: 
                    298: Programming using the `regex' library
                    299: =====================================
                    300: 
                    301: The subnodes accessible from this menu give information on entry
                    302: points and data structures which C programs need to interface to the
                    303: `regex' library.
                    304: 
                    305: * Menu:
                    306: 
                    307: * compiling::  How to compile regular expressions
                    308: * matching::   Matching compiled regular expressions
                    309: * searching::  Searching for compiled regular expressions
                    310: * translation::        Translating characters into other characters
                    311:                  (for both compilation and matching)
                    312: * registers::  determining what was matched
                    313: * split::      matching data which is split into two pieces
                    314: * unix::       Unix-compatible entry-points to regex library
                    315: 
                    316: 
                    317: 
                    318: File: regex,  Node: compiling,  Next: matching,  Prev: programming,  Up: programming
                    319: 
                    320: Compiling a Regular Expression
                    321: ------------------------------
                    322: 
                    323: To compile a regular expression, you must supply a pattern buffer. 
                    324: This is a structure defined, in the include file `regex.h', as
                    325: follows:
                    326: 
                    327:      struct re_pattern_buffer
                    328:        {
                    329:          char *buffer   /* Space holding the compiled pattern commands. */
                    330:          int allocated  /* Size of space that  buffer  points to */
                    331:          int used       /* Length of portion of buffer actually occupied */
                    332:          char *fastmap; /* Pointer to fastmap, if any, or zero if none. */
                    333:                         /* re_search uses the fastmap, if there is one,
                    334:                            to skip quickly over totally implausible
                    335:                            characters */
                    336:          char *translate;
                    337:                         /* Translate table to apply to characters before
                    338:                            comparing, or zero for no translation.
                    339:                            The translation is applied to a pattern when
                    340:                            it is compiled and to data when it is matched. */
                    341:          char fastmap_accurate;
                    342:                         /* Set to zero when a new pattern is stored,
                    343:                            set to one when the fastmap is updated from it. */
                    344:        };
                    345: 
                    346: Before compiling a pattern, you must initialize the `buffer' field to
                    347: point to a block of memory obtained with `malloc', and the
                    348: `allocated' field to the size of that block, in bytes.  The pattern
                    349: compiler will replace this block with a larger one if necessary.
                    350: 
                    351: You must also initialize the `translate' field to point to the
                    352: translate table that you will use when you match the compiled
                    353: pattern, or to zero if you will use no translate table when you
                    354: match.  *Note translation::.
                    355: 
                    356: Then call `re_compile_pattern' to compile a regular expression into
                    357: the buffer:
                    358: 
                    359:      re_compile_pattern (REGEX, REGEX_SIZE, BUF)
                    360: 
                    361: REGEX is the address of the regular expression (`char *'), REGEX_SIZE
                    362: is its length (`int'), BUF is the address of the buffer (`struct
                    363: re_pattern_buffer *').
                    364: 
                    365: `re_compile_pattern' returns zero if it succeeds in compiling the
                    366: regular expression.  In that case, `*buf' now contains the results. 
                    367: Otherwise, `re_compile_pattern' returns a string which serves as an
                    368: error message.
                    369: 
                    370: After compiling, if you wish to search for the pattern, you must
                    371: initialize the `fastmap' component of the pattern buffer.  *Note
                    372: searching::.
                    373: 
                    374: 
                    375: 
                    376: File: regex,  Node: matching,  Next: searching,  Prev: compiling,  Up: programming
                    377: 
                    378: Matching a Compiled Pattern
                    379: ---------------------------
                    380: 
                    381: Once a regular expression has been compiled into a pattern buffer,
                    382: you can match the pattern buffer against a string with `re_match'.
                    383: 
                    384:      re_match (BUF, STRING, SIZE, POS, REGS)
                    385: 
                    386: BUF is, once again, the address of the buffer (`struct
                    387: re_pattern_buffer *').  STRING is the string to be matched (`char *').
                    388: sIZE is the length of that string (`int').  POS is the position
                    389: within the string at which to begin matching (`int').  The beginning
                    390: of the string is position 0.  REGS is described below.  Normally it
                    391: is zero.  *Note registers::.
                    392: 
                    393: `re_match' returns `-1' if the pattern does not match; otherwise, it
                    394: returns the length of the portion of `string' which was matched.
                    395: 
                    396: For example, suppose that BUF points to a buffer containing the
                    397: result of compiling `x*', STRING points to `xxxxxy', and SIZE is `6'.
                    398: Suppose that POS is `2'.  Then the last three `x''s will be matched,
                    399: so `re_match' will return `3'.  If POS is zero, the value will be `5'.
                    400: If POS is `5' or `6', the value will be zero, meaning that the null
                    401: string was successfully matched.  Note that since `x*' matches the
                    402: empty string, it will never entirely fail.
                    403: 
                    404: It is up to the caller to avoid passing a value of POS that results
                    405: in matching outside the specified string.  POS must not be negative
                    406: and must not be greater than SIZE.
                    407: 
                    408: 
                    409: 
                    410: File: regex,  Node: searching,  Next: translation,  Prev: matching,  Up: programming
                    411: 
                    412: Searching for a Match
                    413: ---------------------
                    414: 
                    415: Searching means trying successive starting positions for a match
                    416: until a match is found.  To search, you supply a compiled pattern
                    417: buffer.  Before searching you must initialize the `fastmap' field of
                    418: the pattern buffer (see below).
                    419: 
                    420:      re_search (BUF, STRING, SIZE, STARTPOS, RANGE, REGS)
                    421: 
                    422: is called like `re_match' except that the POS argument is replaced by
                    423: two arguments STARTPOS and RANGE.  `re_search' tests for a match
                    424: starting at index STARTPOS, then at `STARTPOS + 1', and so on.  It
                    425: tries RANGE consecutive positions before giving up and returning
                    426: `-1'.  If a match is found, `re_search' returns the index at which
                    427: the match was found.
                    428: 
                    429: If RANGE is negative, RE_SEARCH tries starting positions STARTPOS,
                    430: `STARTPOS - 1', ... in that order.  `|RANGE|' is the number of tries
                    431: made.
                    432: 
                    433: It is up to the caller to avoid passing value of STARTPOS and RANGE
                    434: that result in matching outside the specified string.  STARTPOS must
                    435: be between zero and SIZE, inclusive, and so must `STARTPOS + RANGE -
                    436: 1' (if RANGE is positive) or `STARTPOS + RANGE + 1' (if RANGE is
                    437: negative).
                    438: 
                    439: If you may be searching over a long distance (that is, trying many
                    440: different match starting points) with a compiled pattern, you should
                    441: use a "fastmap" in it.  This is a block of 256 bytes, whose address
                    442: is placed in the `fastmap' component of the pattern buffer.  The
                    443: first time you search for a particular compiled pattern, the fastmap
                    444: is set so that `FASTMAP[CH]' is nonzero if the character CH might
                    445: possibly start a match for this pattern.  `re_search' checks each
                    446: character against the fastmap so that it can skip more quickly over
                    447: non-matches.
                    448: 
                    449: If you do not want a fastmap, store zero in the `fastmap' component
                    450: of the pattern buffer before calling `re_search'.
                    451: 
                    452: In either case, you must initialize this component in a pattern
                    453: buffer before you can use that buffer in a search; but you can choose
                    454: as an initial value either zero or the address of a suitable block of
                    455: memory.
                    456: 
                    457: If you compile a new pattern in an existing pattern buffer, it is not
                    458: necessary to reinitialize the `fastmap' component (unless you wish to
                    459: override your previous choice).
                    460: 
                    461: 
                    462: 
                    463: File: regex,  Node: translation,  Next: registers,  Prev: searching,  Up: programming
                    464: 
                    465: Translate Tables
                    466: ----------------
                    467: 
                    468: With a translate table, you can apply a transformation to all
                    469: characters before they are compared.  For example, a table that maps
                    470: lower case letters into upper case (or vice versa) causes differences
                    471: in case to be ignored by matching.
                    472: 
                    473: A translate table is a block of 256 bytes.  Each character of raw
                    474: data is used as an index in the translate table.  The value found
                    475: there is used instead of the original character.  Each character in a
                    476: regular expression, except for the syntactic constructs, is
                    477: translated when the expression is compiled.  Each character of a
                    478: string being matched is translated whenever it is compared or tested.
                    479: 
                    480: A suitable translate table to ignore differences in case maps all
                    481: characters into themselves, except for lower case letters, which are
                    482: mapped into the corresponding upper case letters.  It could be
                    483: initialized by:
                    484: 
                    485:      for (i = 0; i < 0400; i++)
                    486:        table[i] = i;
                    487:      for (i = 'a'; i <= 'z'; i++)
                    488:        table[i] = i - 040;
                    489: 
                    490: You specify the use of a translate table by putting its address in
                    491: the TRANSLATE component of the compiled pattern buffer.  If this
                    492: component is zero, no translation is done.  Since both compilation
                    493: and matching use the translate table, you must use the same table
                    494: contents for both operations or confusing things will happen.
                    495: 
                    496: 
                    497: 
                    498: File: regex,  Node: registers,  Next: split,  Prev: translation,  Up: programming
                    499: 
                    500: Registers: or "What Did the `\( ... \)' Groupings Actually Match?"
                    501: ------------------------------------------------------------------
                    502: 
                    503: If you want to find out, after the match, what each of the first nine
                    504: `\( ... \)' groupings actually matched, you can pass the REGS
                    505: argument to the match or search function.  Pass the address of a
                    506: structure of this type:
                    507: 
                    508:      struct re_registers
                    509:        {
                    510:          int start[RE_NREGS];
                    511:          int end[RE_NREGS];
                    512:        };
                    513: 
                    514:   `re_match' and `re_search' will store into this structure the data
                    515: you want.  `REGS->start[REG]' will be the index in STRING of the
                    516: beginning of the data matched by the REG'th `\( ... \)' grouping, and
                    517: `REGS->end[REG]' will be the index of the end of that data (the index
                    518: of the first character beyond those matched).  The values in the
                    519: start and end arrays at indexes greater than the number of `\( ...
                    520: \)' groupings present in the regular expression will be set to the
                    521: value -1.  Register numbers start at 1 and run to `RE_NREGS - 1'
                    522: (normally `9').  `REGS->start[0]' and `REGS->end[0]' are similar but
                    523: describe the extent of the substring matched by the entire pattern.
                    524: 
                    525:   Both `struct re_registers' and `RE_NREGS' are defined in `regex.h'.
                    526: 
                    527: 
                    528: 
                    529: File: regex,  Node: split,  Next: unix,  Prev: registers,  Up: programming
                    530: 
                    531: Matching against Split Data
                    532: ---------------------------
                    533: 
                    534: The functions `re_match_2' and `re_search_2' allow one to match in or
                    535: search data which is divided into two strings.
                    536: 
                    537: `re_match_2' works like `re_match' except that two data strings and
                    538: sizes must be given.
                    539: 
                    540:      re_match_2 (BUF, STRING1, SIZE1, STRING2, SIZE2, POS, REGS)
                    541: 
                    542: The matcher regards the contents of STRING1 as effectively followed
                    543: by the contents of STRING2, and matches the combined string against
                    544: the pattern in BUF.
                    545: 
                    546: `re_search_2' is likewise similar to `re_search':
                    547: 
                    548:      re_search_2 (BUF, STRING1, SIZE1, STRING2, SIZE2, STARTPOS, RANGE, REGS)
                    549: 
                    550: The value returned by RE_SEARCH_2 is an index into the combined data
                    551: made up of STRING1 and STRING2.  It never exceeds `SIZE1 + SIZE2'. 
                    552: The values returned in the REGS structure (if there is one) are
                    553: likewise indices in the combined data.
                    554: 
                    555: 
                    556: 
                    557: File: regex,  Node: unix,  Prev: split,  Up: programming
                    558: 
                    559: Unix-Compatible Entry Points
                    560: ----------------------------
                    561: 
                    562: The standard Berkeley Unix way to compile a regular expression is to
                    563: call `re_comp'.  This function takes a single argument, the address
                    564: of the regular expression, which is assumed to be terminated by a
                    565: null character.
                    566: 
                    567: `re_comp' does not ask you to specify a pattern buffer because it has
                    568: its own pattern buffer -- just one.  Using `re_comp', one may match
                    569: only the most recently compiled regular expression.
                    570: 
                    571: The value of `re_comp' is zero for success or else an error message
                    572: string, as for `re_compile_pattern'.
                    573: 
                    574: Calling `re_comp' with the null string as argument it has no effect;
                    575: the contents of the buffer remain unchanged.
                    576: 
                    577: The standard Berkeley Unix way to match the last regular expression
                    578: compiled is to call `re_exec'.  This takes a single argument, the
                    579: address of the string to be matched.  This string is assumed to be
                    580: terminated by a null character.  Matching is tried starting at each
                    581: position in the string.  `re_exec' returns `1' for success or `0' for
                    582: failure.  One cannot find out how long a substring was matched, nor
                    583: what the `\( ... \)' groupings matched.
                    584: 
                    585: 
                    586: 
                    587: Tag Table:
                    588: Node: top85
                    589: Node: syntax1706
                    590: Node: directives3241
                    591: Node: emacs10891
                    592: Node: programming11653
                    593: Node: compiling12381
                    594: Node: matching14827
                    595: Node: searching16269
                    596: Node: translation18534
                    597: Node: registers19952
                    598: Node: split21245
                    599: Node: unix22183
                    600: 
                    601: End Tag Table

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.