pcreposix.txt
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
源码类别:

生物技术

开发平台:

C/C++

  1. NAME
  2.      pcreposix - POSIX API for  Perl-compatible  regular  expres-
  3.      sions.
  4. SYNOPSIS
  5.      #include <pcreposix.h>
  6.      int regcomp(regex_t *preg, const char *pattern,
  7.           int cflags);
  8.      int regexec(regex_t *preg, const char *string,
  9.           size_t nmatch, regmatch_t pmatch[], int eflags);
  10.      size_t regerror(int errcode, const regex_t *preg,
  11.           char *errbuf, size_t errbuf_size);
  12.      void regfree(regex_t *preg);
  13. DESCRIPTION
  14.      This set of functions provides a POSIX-style API to the PCRE
  15.      regular expression package. See the pcre documentation for a
  16.      description of the native  API,  which  contains  additional
  17.      functionality.
  18.      The functions described here are just wrapper functions that
  19.      ultimately call the native API. Their prototypes are defined
  20.      in the pcreposix.h header file,  and  on  Unix  systems  the
  21.      library  itself is called pcreposix.a, so can be accessed by
  22.      adding -lpcreposix to the command for linking an application
  23.      which uses them. Because the POSIX functions call the native
  24.      ones, it is also necessary to add -lpcre.
  25.      I have implemented only those option bits that can  be  rea-
  26.      sonably  mapped  to  PCRE  native  options. In addition, the
  27.      options REG_EXTENDED and  REG_NOSUB  are  defined  with  the
  28.      value zero. They have no effect, but since programs that are
  29.      written to the POSIX interface often use them, this makes it
  30.      easier to slot in PCRE as a replacement library. Other POSIX
  31.      options are not even defined.
  32.      When PCRE is called via these functions, it is only the  API
  33.      that is POSIX-like in style. The syntax and semantics of the
  34.      regular expressions themselves are still those of Perl, sub-
  35.      ject  to  the  setting of various PCRE options, as described
  36.      below.
  37.      The header for these functions is supplied as pcreposix.h to
  38.      avoid  any  potential  clash  with other POSIX libraries. It
  39.      can, of course, be renamed or aliased as regex.h,  which  is
  40.      the "correct" name. It provides two structure types, regex_t
  41.      for compiled internal forms, and  regmatch_t  for  returning
  42.      captured  substrings.  It  also defines some constants whose
  43.      names start with "REG_"; these are used for setting  options
  44.      and identifying error codes.
  45. COMPILING A PATTERN
  46.      The function regcomp() is called to compile a  pattern  into
  47.      an  internal form. The pattern is a C string terminated by a
  48.      binary zero, and is passed in the argument pattern. The preg
  49.      argument  is  a pointer to a regex_t structure which is used
  50.      as a base for storing information about the compiled expres-
  51.      sion.
  52.      The argument cflags is either zero, or contains one or  more
  53.      of the bits defined by the following macros:
  54.        REG_ICASE
  55.      The PCRE_CASELESS option  is  set  when  the  expression  is
  56.      passed for compilation to the native function.
  57.        REG_NEWLINE
  58.      The PCRE_MULTILINE option is  set  when  the  expression  is
  59.      passed for compilation to the native function.
  60.      In the absence of these flags, no options are passed to  the
  61.      native  function.  This means the the regex is compiled with
  62.      PCRE default semantics. In particular, the  way  it  handles
  63.      newline  characters  in  the subject string is the Perl way,
  64.      not the POSIX way. Note that setting PCRE_MULTILINE has only
  65.      some  of  the effects specified for REG_NEWLINE. It does not
  66.      affect the way newlines are matched by . (they aren't) or  a
  67.      negative class such as [^a] (they are).
  68.      The yield of regcomp() is zero on success, and non-zero oth-
  69.      erwise.  The preg structure is filled in on success, and one
  70.      member of the structure is publicized: re_nsub contains  the
  71.      number  of  capturing subpatterns in the regular expression.
  72.      Various error codes are defined in the header file.
  73. MATCHING A PATTERN
  74.      The function regexec() is called  to  match  a  pre-compiled
  75.      pattern  preg against a given string, which is terminated by
  76.      a zero byte, subject to the options in eflags. These can be:
  77.        REG_NOTBOL
  78.      The PCRE_NOTBOL option is set when  calling  the  underlying
  79.      PCRE matching function.
  80.        REG_NOTEOL
  81.      The PCRE_NOTEOL option is set when  calling  the  underlying
  82.      PCRE matching function.
  83.      The portion of the string that was  matched,  and  also  any
  84.      captured  substrings,  are returned via the pmatch argument,
  85.      which points to  an  array  of  nmatch  structures  of  type
  86.      regmatch_t,  containing  the  members rm_so and rm_eo. These
  87.      contain the offset to the first character of each  substring
  88.      and  the offset to the first character after the end of each
  89.      substring, respectively.  The  0th  element  of  the  vector
  90.      relates  to  the  entire portion of string that was matched;
  91.      subsequent elements relate to the capturing  subpatterns  of
  92.      the  regular  expression.  Unused  entries in the array have
  93.      both structure members set to -1.
  94.      A successful match yields a zero return; various error codes
  95.      are  defined in the header file, of which REG_NOMATCH is the
  96.      "expected" failure code.
  97. ERROR MESSAGES
  98.      The regerror()  function  maps  a  non-zero  errorcode  from
  99.      either regcomp or regexec to a printable message. If preg is
  100.      not NULL, the error should have arisen from the use of  that
  101.      structure.  A  message terminated by a binary zero is placed
  102.      in errbuf. The length of the message, including the zero, is
  103.      limited  to  errbuf_size.  The  yield of the function is the
  104.      size of buffer needed to hold the whole message.
  105. STORAGE
  106.      Compiling a regular expression causes memory to be allocated
  107.      and  associated  with  the preg structure. The function reg-
  108.      free() frees all such memory, after which preg may no longer
  109.      be used as a compiled expression.
  110. AUTHOR
  111.      Philip Hazel <ph10@cam.ac.uk>
  112.      University Computing Service,
  113.      New Museums Site,
  114.      Cambridge CB2 3QG, England.
  115.      Phone: +44 1223 334714
  116.      Copyright (c) 1997-2000 University of Cambridge.