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

生物技术

开发平台:

C/C++

  1. NAME
  2.      pcre - Perl-compatible regular expressions.
  3. SYNOPSIS
  4.      #include <pcre.h>
  5.      pcre *pcre_compile(const char *pattern, int options,
  6.           const char **errptr, int *erroffset,
  7.           const unsigned char *tableptr);
  8.      pcre_extra *pcre_study(const pcre *code, int options,
  9.           const char **errptr);
  10.      int pcre_exec(const pcre *code, const pcre_extra *extra,
  11.           const char *subject, int length, int startoffset,
  12.           int options, int *ovector, int ovecsize);
  13.      int pcre_copy_substring(const char *subject, int *ovector,
  14.           int stringcount, int stringnumber, char *buffer,
  15.           int buffersize);
  16.      int pcre_get_substring(const char *subject, int *ovector,
  17.           int stringcount, int stringnumber,
  18.           const char **stringptr);
  19.      int pcre_get_substring_list(const char *subject,
  20.           int *ovector, int stringcount, const char ***listptr);
  21.      void pcre_free_substring(const char *stringptr);
  22.      void pcre_free_substring_list(const char **stringptr);
  23.      const unsigned char *pcre_maketables(void);
  24.      int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
  25.           int what, void *where);
  26.      int pcre_info(const pcre *code, int *optptr, *firstcharptr);
  27.      char *pcre_version(void);
  28.      void *(*pcre_malloc)(size_t);
  29.      void (*pcre_free)(void *);
  30. DESCRIPTION
  31.      The PCRE library is a set of functions that implement  regu-
  32.      lar  expression  pattern  matching using the same syntax and
  33.      semantics as Perl  5,  with  just  a  few  differences  (see
  34.      below).  The  current  implementation  corresponds  to  Perl
  35.      5.005, with some additional features  from  later  versions.
  36.      This  includes  some  experimental,  incomplete  support for
  37.      UTF-8 encoded strings. Details of exactly what is  and  what
  38.      is not supported are given below.
  39.      PCRE has its own native API,  which  is  described  in  this
  40.      document.  There  is  also  a  set of wrapper functions that
  41.      correspond to the POSIX regular expression API.   These  are
  42.      described in the pcreposix documentation.
  43.      The native API function prototypes are defined in the header
  44.      file  pcre.h,  and  on  Unix  systems  the library itself is
  45.      called libpcre.a, so can be accessed by adding -lpcre to the
  46.      command  for  linking  an  application  which  calls it. The
  47.      header file defines the macros PCRE_MAJOR and PCRE_MINOR  to
  48.      contain the major and minor release numbers for the library.
  49.      Applications can use these to include support for  different
  50.      releases.
  51.      The functions pcre_compile(), pcre_study(), and  pcre_exec()
  52.      are  used  for compiling and matching regular expressions. A
  53.      sample program that demonstrates the simplest way  of  using
  54.      them  is  given  in the file pcredemo.c. The last section of
  55.      this man page describes how to run it.
  56.      The functions  pcre_copy_substring(),  pcre_get_substring(),
  57.      and  pcre_get_substring_list() are convenience functions for
  58.      extracting  captured  substrings  from  a  matched   subject
  59.      string; pcre_free_substring() and pcre_free_substring_list()
  60.      are also provided, to free the  memory  used  for  extracted
  61.      strings.
  62.      The function pcre_maketables() is used (optionally) to build
  63.      a  set of character tables in the current locale for passing
  64.      to pcre_compile().
  65.      The function pcre_fullinfo() is used to find out information
  66.      about a compiled pattern; pcre_info() is an obsolete version
  67.      which returns only some of the available information, but is
  68.      retained   for   backwards   compatibility.    The  function
  69.      pcre_version() returns a pointer to a string containing  the
  70.      version of PCRE and its date of release.
  71.      The global variables  pcre_malloc  and  pcre_free  initially
  72.      contain the entry points of the standard malloc() and free()
  73.      functions respectively. PCRE  calls  the  memory  management
  74.      functions  via  these  variables,  so  a calling program can
  75.      replace them if it  wishes  to  intercept  the  calls.  This
  76.      should be done before calling any PCRE functions.
  77. MULTI-THREADING
  78.      The PCRE functions can be used in  multi-threading  applica-
  79.      tions, with the proviso that the memory management functions
  80.      pointed to by pcre_malloc and pcre_free are  shared  by  all
  81.      threads.
  82.      The compiled form of a regular  expression  is  not  altered
  83.      during  matching, so the same compiled pattern can safely be
  84.      used by several threads at once.
  85. COMPILING A PATTERN
  86.      The function pcre_compile() is called to compile  a  pattern
  87.      into  an internal form. The pattern is a C string terminated
  88.      by a binary zero, and is passed in the argument  pattern.  A
  89.      pointer  to  a  single  block of memory that is obtained via
  90.      pcre_malloc is returned. This contains the compiled code and
  91.      related  data.  The  pcre  type  is defined for the returned
  92.      block; this is a typedef for a structure whose contents  are
  93.      not  externally  defined. It is up to the caller to free the
  94.      memory when it is no longer required.
  95.      Although the compiled code of a PCRE regex  is  relocatable,
  96.      that is, it does not depend on memory location, the complete
  97.      pcre data block is not fully relocatable,  because  it  con-
  98.      tains  a  copy of the tableptr argument, which is an address
  99.      (see below).
  100.      The size of a compiled pattern is  roughly  proportional  to
  101.      the length of the pattern string, except that each character
  102.      class (other than those containing just a single  character,
  103.      negated  or  not)  requires 33 bytes, and repeat quantifiers
  104.      with a minimum greater than one or a bounded  maximum  cause
  105.      the  relevant  portions of the compiled pattern to be repli-
  106.      cated.
  107.      The options argument contains independent bits  that  affect
  108.      the  compilation.  It  should  be  zero  if  no  options are
  109.      required. Some of the options, in particular, those that are
  110.      compatible  with Perl, can also be set and unset from within
  111.      the pattern (see the detailed description of regular expres-
  112.      sions below). For these options, the contents of the options
  113.      argument specifies their initial settings at  the  start  of
  114.      compilation  and  execution. The PCRE_ANCHORED option can be
  115.      set at the time of matching as well as at compile time.
  116.      If errptr is NULL, pcre_compile() returns NULL  immediately.
  117.      Otherwise, if compilation of a pattern fails, pcre_compile()
  118.      returns NULL, and sets the variable pointed to by errptr  to
  119.      point  to a textual error message. The offset from the start
  120.      of  the  pattern  to  the  character  where  the  error  was
  121.      discovered   is   placed  in  the  variable  pointed  to  by
  122.      erroffset, which must not be NULL. If it  is,  an  immediate
  123.      error is given.
  124.      If the final  argument,  tableptr,  is  NULL,  PCRE  uses  a
  125.      default  set  of character tables which are built when it is
  126.      compiled, using the default C  locale.  Otherwise,  tableptr
  127.      must  be  the result of a call to pcre_maketables(). See the
  128.      section on locale support below.
  129.      This code fragment shows a typical straightforward  call  to
  130.      pcre_compile():
  131.        pcre *re;
  132.        const char *error;
  133.        int erroffset;
  134.        re = pcre_compile(
  135.          "^A.*Z",          /* the pattern */
  136.          0,                /* default options */
  137.          &error,           /* for error message */
  138.          &erroffset,       /* for error offset */
  139.          NULL);            /* use default character tables */
  140.      The following option bits are defined in the header file:
  141.        PCRE_ANCHORED
  142.      If this bit is set, the pattern is forced to be  "anchored",
  143.      that is, it is constrained to match only at the start of the
  144.      string which is being searched (the "subject string").  This
  145.      effect can also be achieved by appropriate constructs in the
  146.      pattern itself, which is the only way to do it in Perl.
  147.        PCRE_CASELESS
  148.      If this bit is set, letters in the pattern match both  upper
  149.      and  lower  case  letters.  It  is  equivalent  to Perl's /i
  150.      option.
  151.        PCRE_DOLLAR_ENDONLY
  152.      If this bit is set, a dollar metacharacter  in  the  pattern
  153.      matches  only at the end of the subject string. Without this
  154.      option, a dollar also matches immediately before  the  final
  155.      character  if it is a newline (but not before any other new-
  156.      lines).  The  PCRE_DOLLAR_ENDONLY  option  is   ignored   if
  157.      PCRE_MULTILINE is set. There is no equivalent to this option
  158.      in Perl.
  159.        PCRE_DOTALL
  160.      If this bit is  set,  a  dot  metacharater  in  the  pattern
  161.      matches all characters, including newlines. Without it, new-
  162.      lines are excluded. This option is equivalent to  Perl's  /s
  163.      option.  A negative class such as [^a] always matches a new-
  164.      line character, independent of the setting of this option.
  165.        PCRE_EXTENDED
  166.      If this bit is set, whitespace data characters in  the  pat-
  167.      tern  are  totally  ignored  except when escaped or inside a
  168.      character class, and characters between an unescaped #  out-
  169.      side  a  character  class  and  the  next newline character,
  170.      inclusive, are also ignored. This is equivalent to Perl's /x
  171.      option,  and  makes  it  possible to include comments inside
  172.      complicated patterns. Note, however, that this applies  only
  173.      to  data  characters. Whitespace characters may never appear
  174.      within special character sequences in a pattern, for example
  175.      within  the sequence (?( which introduces a conditional sub-
  176.      pattern.
  177.        PCRE_EXTRA
  178.      This option was invented in  order  to  turn  on  additional
  179.      functionality of PCRE that is incompatible with Perl, but it
  180.      is currently of very little use. When set, any backslash  in
  181.      a  pattern  that is followed by a letter that has no special
  182.      meaning causes an error, thus reserving  these  combinations
  183.      for  future  expansion.  By default, as in Perl, a backslash
  184.      followed by a letter with no special meaning is treated as a
  185.      literal.  There  are at present no other features controlled
  186.      by this option. It can also be set by a (?X) option  setting
  187.      within a pattern.
  188.        PCRE_MULTILINE
  189.      By default, PCRE treats the subject string as consisting  of
  190.      a  single "line" of characters (even if it actually contains
  191.      several newlines). The "start  of  line"  metacharacter  (^)
  192.      matches  only  at the start of the string, while the "end of
  193.      line" metacharacter ($) matches  only  at  the  end  of  the
  194.      string,    or   before   a   terminating   newline   (unless
  195.      PCRE_DOLLAR_ENDONLY is set). This is the same as Perl.
  196.      When PCRE_MULTILINE it is set, the "start of line" and  "end
  197.      of  line"  constructs match immediately following or immedi-
  198.      ately before any newline  in  the  subject  string,  respec-
  199.      tively,  as  well  as  at  the  very  start and end. This is
  200.      equivalent to Perl's /m option. If there are no "n" charac-
  201.      ters  in  a subject string, or no occurrences of ^ or $ in a
  202.      pattern, setting PCRE_MULTILINE has no effect.
  203.        PCRE_UNGREEDY
  204.      This option inverts the "greediness" of the  quantifiers  so
  205.      that  they  are  not greedy by default, but become greedy if
  206.      followed by "?". It is not compatible with Perl. It can also
  207.      be set by a (?U) option setting within the pattern.
  208.        PCRE_UTF8
  209.      This option causes PCRE to regard both the pattern  and  the
  210.      subject  as strings of UTF-8 characters instead of just byte
  211.      strings. However, it is available  only  if  PCRE  has  been
  212.      built  to  include  UTF-8  support.  If not, the use of this
  213.      option provokes an error. Support for UTF-8 is new,  experi-
  214.      mental,  and incomplete.  Details of exactly what it entails
  215.      are given below.
  216. STUDYING A PATTERN
  217.      When a pattern is going to be  used  several  times,  it  is
  218.      worth  spending  more time analyzing it in order to speed up
  219.      the time taken for matching. The function pcre_study() takes
  220.      a  pointer  to a compiled pattern as its first argument, and
  221.      returns a pointer to a pcre_extra block (another typedef for
  222.      a  structure  with  hidden  contents)  containing additional
  223.      information  about  the  pattern;  this  can  be  passed  to
  224.      pcre_exec(). If no additional information is available, NULL
  225.      is returned.
  226.      The second argument contains option  bits.  At  present,  no
  227.      options  are  defined  for  pcre_study(),  and this argument
  228.      should always be zero.
  229.      The third argument for pcre_study() is a pointer to an error
  230.      message. If studying succeeds (even if no data is returned),
  231.      the variable it points to  is  set  to  NULL.  Otherwise  it
  232.      points to a textual error message.
  233.      This is a typical call to pcre_study():
  234.        pcre_extra *pe;
  235.        pe = pcre_study(
  236.          re,             /* result of pcre_compile() */
  237.          0,              /* no options exist */
  238.          &error);        /* set to NULL or points to a message */
  239.      At present, studying a  pattern  is  useful  only  for  non-
  240.      anchored  patterns  that do not have a single fixed starting
  241.      character. A  bitmap  of  possible  starting  characters  is
  242.      created.
  243. LOCALE SUPPORT
  244.      PCRE handles caseless matching, and determines whether char-
  245.      acters  are  letters, digits, or whatever, by reference to a
  246.      set of tables. The library contains a default set of  tables
  247.      which  is  created in the default C locale when PCRE is com-
  248.      piled.  This  is   used   when   the   final   argument   of
  249.      pcre_compile()  is NULL, and is sufficient for many applica-
  250.      tions.
  251.      An alternative set of tables can, however, be supplied. Such
  252.      tables  are built by calling the pcre_maketables() function,
  253.      which has no arguments, in the relevant locale.  The  result
  254.      can  then be passed to pcre_compile() as often as necessary.
  255.      For example, to build and use tables  that  are  appropriate
  256.      for  the French locale (where accented characters with codes
  257.      greater than 128 are treated as letters), the following code
  258.      could be used:
  259.        setlocale(LC_CTYPE, "fr");
  260.        tables = pcre_maketables();
  261.        re = pcre_compile(..., tables);
  262.      The  tables  are  built  in  memory  that  is  obtained  via
  263.      pcre_malloc.  The  pointer that is passed to pcre_compile is
  264.      saved with the compiled pattern, and  the  same  tables  are
  265.      used  via this pointer by pcre_study() and pcre_exec(). Thus
  266.      for any single pattern, compilation, studying  and  matching
  267.      all happen in the same locale, but different patterns can be
  268.      compiled in different locales. It is the caller's  responsi-
  269.      bility  to  ensure  that  the  memory  containing the tables
  270.      remains available for as long as it is needed.
  271. INFORMATION ABOUT A PATTERN
  272.      The pcre_fullinfo() function  returns  information  about  a
  273.      compiled pattern. It replaces the obsolete pcre_info() func-
  274.      tion, which is nevertheless retained for backwards compabil-
  275.      ity (and is documented below).
  276.      The first argument for pcre_fullinfo() is a pointer  to  the
  277.      compiled  pattern.  The  second  argument  is  the result of
  278.      pcre_study(), or NULL if the pattern was  not  studied.  The
  279.      third  argument  specifies  which  piece  of  information is
  280.      required, while the fourth argument is a pointer to a  vari-
  281.      able  to receive the data. The yield of the function is zero
  282.      for success, or one of the following negative numbers:
  283.        PCRE_ERROR_NULL       the argument code was NULL
  284.                              the argument where was NULL
  285.        PCRE_ERROR_BADMAGIC   the "magic number" was not found
  286.        PCRE_ERROR_BADOPTION  the value of what was invalid
  287.      Here is a typical call of  pcre_fullinfo(),  to  obtain  the
  288.      length of the compiled pattern:
  289.        int rc;
  290.        unsigned long int length;
  291.        rc = pcre_fullinfo(
  292.          re,               /* result of pcre_compile() */
  293.          pe,               /* result of pcre_study(), or NULL */
  294.          PCRE_INFO_SIZE,   /* what is required */
  295.          &length);         /* where to put the data */
  296.      The possible values for the third argument  are  defined  in
  297.      pcre.h, and are as follows:
  298.        PCRE_INFO_OPTIONS
  299.      Return a copy of the options with which the pattern was com-
  300.      piled.  The fourth argument should point to an unsigned long
  301.      int variable. These option bits are those specified  in  the
  302.      call  to  pcre_compile(),  modified  by any top-level option
  303.      settings  within  the   pattern   itself,   and   with   the
  304.      PCRE_ANCHORED  bit  forcibly  set if the form of the pattern
  305.      implies that it can match only at the  start  of  a  subject
  306.      string.
  307.        PCRE_INFO_SIZE
  308.      Return the size of the compiled pattern, that is, the  value
  309.      that  was  passed as the argument to pcre_malloc() when PCRE
  310.      was getting memory in which to place the compiled data.  The
  311.      fourth argument should point to a size_t variable.
  312.        PCRE_INFO_CAPTURECOUNT
  313.      Return the number of capturing subpatterns in  the  pattern.
  314.      The fourth argument should point to an int variable.
  315.        PCRE_INFO_BACKREFMAX
  316.      Return the number of the highest back reference in the  pat-
  317.      tern.  The  fourth argument should point to an int variable.
  318.      Zero is returned if there are no back references.
  319.        PCRE_INFO_FIRSTCHAR
  320.      Return information about the first character of any  matched
  321.      string,  for  a  non-anchored  pattern.  If there is a fixed
  322.      first   character,   e.g.   from   a   pattern    such    as
  323.      (cat|cow|coyote),  it  is returned in the integer pointed to
  324.      by where. Otherwise, if either
  325.      (a) the pattern was compiled with the PCRE_MULTILINE option,
  326.      and every branch starts with "^", or
  327.      (b) every  branch  of  the  pattern  starts  with  ".*"  and
  328.      PCRE_DOTALL is not set (if it were set, the pattern would be
  329.      anchored),
  330.      -1 is returned, indicating that the pattern matches only  at
  331.      the  start  of a subject string or after any "n" within the
  332.      string. Otherwise -2 is returned.  For anchored patterns, -2
  333.      is returned.
  334.        PCRE_INFO_FIRSTTABLE
  335.      If the pattern was studied, and this resulted  in  the  con-
  336.      struction of a 256-bit table indicating a fixed set of char-
  337.      acters for the first character in  any  matching  string,  a
  338.      pointer   to  the  table  is  returned.  Otherwise  NULL  is
  339.      returned. The fourth argument should point  to  an  unsigned
  340.      char * variable.
  341.        PCRE_INFO_LASTLITERAL
  342.      For a non-anchored pattern, return the value of  the  right-
  343.      most  literal  character  which  must  exist  in any matched
  344.      string, other than at its start. The fourth argument  should
  345.      point  to an int variable. If there is no such character, or
  346.      if the pattern is anchored, -1 is returned. For example, for
  347.      the pattern /ad+zd+/ the returned value is 'z'.
  348.      The pcre_info() function is now obsolete because its  inter-
  349.      face  is  too  restrictive  to return all the available data
  350.      about  a  compiled  pattern.   New   programs   should   use
  351.      pcre_fullinfo()  instead.  The  yield  of pcre_info() is the
  352.      number of capturing subpatterns, or  one  of  the  following
  353.      negative numbers:
  354.        PCRE_ERROR_NULL       the argument code was NULL
  355.        PCRE_ERROR_BADMAGIC   the "magic number" was not found
  356.      If the optptr argument is not NULL, a copy  of  the  options
  357.      with which the pattern was compiled is placed in the integer
  358.      it points to (see PCRE_INFO_OPTIONS above).
  359.      If the pattern is not anchored and the firstcharptr argument
  360.      is  not  NULL, it is used to pass back information about the
  361.      first    character    of    any    matched    string    (see
  362.      PCRE_INFO_FIRSTCHAR above).
  363. MATCHING A PATTERN
  364.      The function pcre_exec() is called to match a subject string
  365. SunOS 5.8                 Last change:                          9
  366.      against  a pre-compiled pattern, which is passed in the code
  367.      argument. If the pattern has been studied, the result of the
  368.      study should be passed in the extra argument. Otherwise this
  369.      must be NULL.
  370.      Here is an example of a simple call to pcre_exec():
  371.        int rc;
  372.        int ovector[30];
  373.        rc = pcre_exec(
  374.          re,             /* result of pcre_compile() */
  375.          NULL,           /* we didn't study the pattern */
  376.          "some string",  /* the subject string */
  377.          11,             /* the length of the subject string */
  378.          0,              /* start at offset 0 in the subject */
  379.          0,              /* default options */
  380.          ovector,        /* vector for substring information */
  381.          30);            /* number of elements in the vector */
  382.      The PCRE_ANCHORED option can be passed in the options  argu-
  383.      ment,  whose unused bits must be zero. However, if a pattern
  384.      was  compiled  with  PCRE_ANCHORED,  or  turned  out  to  be
  385.      anchored  by  virtue  of  its  contents,  it  cannot be made
  386.      unachored at matching time.
  387.      There are also three further options that can be set only at
  388.      matching time:
  389.        PCRE_NOTBOL
  390.      The first character of the string is not the beginning of  a
  391.      line,  so  the  circumflex  metacharacter  should  not match
  392.      before it. Setting this without PCRE_MULTILINE  (at  compile
  393.      time) causes circumflex never to match.
  394.        PCRE_NOTEOL
  395.      The end of the string is not the end of a line, so the  dol-
  396.      lar  metacharacter should not match it nor (except in multi-
  397.      line mode) a newline immediately  before  it.  Setting  this
  398.      without PCRE_MULTILINE (at compile time) causes dollar never
  399.      to match.
  400.        PCRE_NOTEMPTY
  401.      An empty string is not considered to be  a  valid  match  if
  402.      this  option  is  set. If there are alternatives in the pat-
  403.      tern, they are tried. If  all  the  alternatives  match  the
  404.      empty  string,  the  entire match fails. For example, if the
  405.      pattern
  406.        a?b?
  407.      is applied to a string not beginning with  "a"  or  "b",  it
  408.      matches  the  empty string at the start of the subject. With
  409.      PCRE_NOTEMPTY set, this match is not valid, so PCRE searches
  410.      further into the string for occurrences of "a" or "b".
  411.      Perl has no direct equivalent of PCRE_NOTEMPTY, but it  does
  412.      make  a  special case of a pattern match of the empty string
  413.      within its split() function, and when using the /g modifier.
  414.      It  is possible to emulate Perl's behaviour after matching a
  415.      null string by first trying the  match  again  at  the  same
  416.      offset  with  PCRE_NOTEMPTY  set,  and then if that fails by
  417.      advancing the starting offset  (see  below)  and  trying  an
  418.      ordinary match again.
  419.      The subject string is passed as  a  pointer  in  subject,  a
  420.      length  in  length,  and  a  starting offset in startoffset.
  421.      Unlike the pattern string, the subject  may  contain  binary
  422.      zero  characters.  When  the  starting  offset  is zero, the
  423.      search for a match starts at the beginning of  the  subject,
  424.      and this is by far the most common case.
  425.      A non-zero starting offset  is  useful  when  searching  for
  426.      another  match  in  the  same subject by calling pcre_exec()
  427.      again after a previous success.  Setting startoffset differs
  428.      from  just  passing  over  a  shortened  string  and setting
  429.      PCRE_NOTBOL in the case of a pattern that  begins  with  any
  430.      kind of lookbehind. For example, consider the pattern
  431.        BissB
  432.      which finds occurrences of "iss" in the middle of words. (B
  433.      matches only if the current position in the subject is not a
  434.      word boundary.) When applied to the string "Mississipi"  the
  435.      first  call  to  pcre_exec()  finds the first occurrence. If
  436.      pcre_exec() is called again with just the remainder  of  the
  437.      subject,  namely  "issipi", it does not match, because B is
  438.      always false at the start of the subject, which is deemed to
  439.      be  a  word  boundary. However, if pcre_exec() is passed the
  440.      entire string again, but with startoffset set to 4, it finds
  441.      the  second  occurrence  of "iss" because it is able to look
  442.      behind the starting point to discover that it is preceded by
  443.      a letter.
  444.      If a non-zero starting offset is passed when the pattern  is
  445.      anchored, one attempt to match at the given offset is tried.
  446.      This can only succeed if the pattern does  not  require  the
  447.      match to be at the start of the subject.
  448.      In general, a pattern matches a certain portion of the  sub-
  449.      ject,  and  in addition, further substrings from the subject
  450.      may be picked out by parts of  the  pattern.  Following  the
  451.      usage  in  Jeffrey Friedl's book, this is called "capturing"
  452.      in what follows, and the phrase  "capturing  subpattern"  is
  453.      used for a fragment of a pattern that picks out a substring.
  454.      PCRE supports several other kinds of  parenthesized  subpat-
  455.      tern that do not cause substrings to be captured.
  456.      Captured substrings are returned to the caller via a  vector
  457.      of  integer  offsets whose address is passed in ovector. The
  458.      number of elements in the vector is passed in ovecsize.  The
  459.      first two-thirds of the vector is used to pass back captured
  460.      substrings, each substring using a  pair  of  integers.  The
  461.      remaining  third  of  the  vector  is  used  as workspace by
  462.      pcre_exec() while matching capturing subpatterns, and is not
  463.      available for passing back information. The length passed in
  464.      ovecsize should always be a multiple of three. If it is not,
  465.      it is rounded down.
  466.      When a match has been successful, information about captured
  467.      substrings is returned in pairs of integers, starting at the
  468.      beginning of ovector, and continuing up to two-thirds of its
  469.      length  at  the  most. The first element of a pair is set to
  470.      the offset of the first character in a  substring,  and  the
  471.      second is set to the offset of the first character after the
  472.      end of a substring. The first  pair,  ovector[0]  and  ovec-
  473.      tor[1],  identify  the portion of the subject string matched
  474.      by the entire pattern. The next pair is used for  the  first
  475.      capturing  subpattern,  and  so  on.  The  value returned by
  476.      pcre_exec() is the number of pairs that have  been  set.  If
  477.      there  are no capturing subpatterns, the return value from a
  478.      successful match is 1, indicating that just the  first  pair
  479.      of offsets has been set.
  480.      Some convenience functions are provided for  extracting  the
  481.      captured substrings as separate strings. These are described
  482.      in the following section.
  483.      It is possible for an capturing  subpattern  number  n+1  to
  484.      match  some  part  of  the subject when subpattern n has not
  485.      been used at all.  For  example,  if  the  string  "abc"  is
  486.      matched  against the pattern (a|(z))(bc) subpatterns 1 and 3
  487.      are matched, but 2 is not. When this  happens,  both  offset
  488.      values corresponding to the unused subpattern are set to -1.
  489.      If a capturing subpattern is matched repeatedly, it  is  the
  490.      last  portion  of  the  string  that  it  matched  that gets
  491.      returned.
  492.      If the vector is too small to hold  all  the  captured  sub-
  493.      strings,  it is used as far as possible (up to two-thirds of
  494.      its length), and the function returns a value  of  zero.  In
  495.      particular,  if  the  substring offsets are not of interest,
  496.      pcre_exec() may be called with ovector passed  as  NULL  and
  497.      ovecsize  as  zero.  However,  if  the pattern contains back
  498.      references and the ovector isn't big enough to remember  the
  499.      related  substrings,  PCRE  has to get additional memory for
  500.      use during matching. Thus it is usually advisable to  supply
  501.      an ovector.
  502.      Note that pcre_info() can be used to find out how many  cap-
  503.      turing  subpatterns  there  are  in  a compiled pattern. The
  504.      smallest size for ovector that will  allow  for  n  captured
  505.      substrings  in  addition  to  the  offsets  of the substring
  506.      matched by the whole pattern is (n+1)*3.
  507.      If pcre_exec() fails, it returns a negative number. The fol-
  508.      lowing are defined in the header file:
  509.        PCRE_ERROR_NOMATCH        (-1)
  510.      The subject string did not match the pattern.
  511.        PCRE_ERROR_NULL           (-2)
  512.      Either code or subject was passed as NULL,  or  ovector  was
  513.      NULL and ovecsize was not zero.
  514.        PCRE_ERROR_BADOPTION      (-3)
  515.      An unrecognized bit was set in the options argument.
  516.        PCRE_ERROR_BADMAGIC       (-4)
  517.      PCRE stores a 4-byte "magic number" at the start of the com-
  518.      piled  code,  to  catch  the  case  when it is passed a junk
  519.      pointer. This is the error it gives when  the  magic  number
  520.      isn't present.
  521.        PCRE_ERROR_UNKNOWN_NODE   (-5)
  522.      While running the pattern match, an unknown item was encoun-
  523.      tered in the compiled pattern. This error could be caused by
  524.      a bug in PCRE or by overwriting of the compiled pattern.
  525.        PCRE_ERROR_NOMEMORY       (-6)
  526.      If a pattern contains back references, but the ovector  that
  527.      is  passed  to pcre_exec() is not big enough to remember the
  528.      referenced substrings, PCRE gets a block of  memory  at  the
  529.      start  of  matching to use for this purpose. If the call via
  530.      pcre_malloc() fails, this error  is  given.  The  memory  is
  531.      freed at the end of matching.
  532. EXTRACTING CAPTURED SUBSTRINGS
  533.      Captured substrings can be accessed directly  by  using  the
  534.      offsets returned by pcre_exec() in ovector. For convenience,
  535.      the functions  pcre_copy_substring(),  pcre_get_substring(),
  536.      and  pcre_get_substring_list()  are  provided for extracting
  537.      captured  substrings  as  new,   separate,   zero-terminated
  538.      strings.   A  substring  that  contains  a  binary  zero  is
  539.      correctly extracted and has a further zero added on the end,
  540.      but the result does not, of course, function as a C string.
  541.      The first three arguments are the same for all  three  func-
  542.      tions:  subject  is  the  subject string which has just been
  543.      successfully matched, ovector is a pointer to the vector  of
  544.      integer   offsets   that  was  passed  to  pcre_exec(),  and
  545.      stringcount is the number of substrings that  were  captured
  546.      by  the  match,  including  the  substring  that matched the
  547.      entire regular expression. This is  the  value  returned  by
  548.      pcre_exec  if  it  is  greater  than  zero.  If  pcre_exec()
  549.      returned zero, indicating that it ran out of space in  ovec-
  550.      tor,  the  value passed as stringcount should be the size of
  551.      the vector divided by three.
  552.      The functions pcre_copy_substring() and pcre_get_substring()
  553.      extract a single substring, whose number is given as string-
  554.      number. A value of zero extracts the substring that  matched
  555.      the entire pattern, while higher values extract the captured
  556.      substrings. For pcre_copy_substring(), the string is  placed
  557.      in  buffer,  whose  length is given by buffersize, while for
  558.      pcre_get_substring() a new block of memory is  obtained  via
  559.      pcre_malloc,  and its address is returned via stringptr. The
  560.      yield of the function is  the  length  of  the  string,  not
  561.      including the terminating zero, or one of
  562.        PCRE_ERROR_NOMEMORY       (-6)
  563.      The buffer was too small for pcre_copy_substring(),  or  the
  564.      attempt to get memory failed for pcre_get_substring().
  565.        PCRE_ERROR_NOSUBSTRING    (-7)
  566.      There is no substring whose number is stringnumber.
  567.      The pcre_get_substring_list() function extracts  all  avail-
  568.      able  substrings  and builds a list of pointers to them. All
  569.      this is done in a single block of memory which  is  obtained
  570.      via pcre_malloc. The address of the memory block is returned
  571.      via listptr, which is also the start of the list  of  string
  572.      pointers.  The  end of the list is marked by a NULL pointer.
  573.      The yield of the function is zero if all went well, or
  574.        PCRE_ERROR_NOMEMORY       (-6)
  575.      if the attempt to get the memory block failed.
  576.      When any of these functions encounter a  substring  that  is
  577.      unset, which can happen when capturing subpattern number n+1
  578.      matches some part of the subject, but subpattern n  has  not
  579.      been  used  at all, they return an empty string. This can be
  580.      distinguished  from  a  genuine  zero-length  substring   by
  581.      inspecting the appropriate offset in ovector, which is nega-
  582.      tive for unset substrings.
  583.      The  two  convenience  functions  pcre_free_substring()  and
  584.      pcre_free_substring_list()  can  be  used to free the memory
  585.      returned by  a  previous  call  of  pcre_get_substring()  or
  586.      pcre_get_substring_list(),  respectively.  They  do  nothing
  587.      more than call the function pointed to by  pcre_free,  which
  588.      of  course  could  be called directly from a C program. How-
  589.      ever, PCRE is used in some situations where it is linked via
  590.      a  special  interface  to another programming language which
  591.      cannot use pcre_free directly; it is for  these  cases  that
  592.      the functions are provided.
  593. LIMITATIONS
  594.      There are some size limitations in PCRE but it is hoped that
  595.      they will never in practice be relevant.  The maximum length
  596.      of a compiled pattern is 65539 (sic) bytes.  All  values  in
  597.      repeating  quantifiers  must be less than 65536.  There max-
  598.      imum number of capturing subpatterns is 65535.  There is  no
  599.      limit  to  the  number of non-capturing subpatterns, but the
  600.      maximum depth of nesting of all kinds of parenthesized  sub-
  601.      pattern,  including  capturing  subpatterns, assertions, and
  602.      other types of subpattern, is 200.
  603.      The maximum length of a subject string is the largest  posi-
  604.      tive number that an integer variable can hold. However, PCRE
  605.      uses recursion to handle subpatterns and indefinite  repeti-
  606.      tion.  This  means  that the available stack space may limit
  607.      the size of a subject string that can be processed  by  cer-
  608.      tain patterns.
  609. DIFFERENCES FROM PERL
  610.      The differences described here  are  with  respect  to  Perl
  611.      5.005.
  612.      1. By default, a whitespace character is any character  that
  613.      the  C  library  function isspace() recognizes, though it is
  614.      possible to compile PCRE  with  alternative  character  type
  615.      tables. Normally isspace() matches space, formfeed, newline,
  616.      carriage return, horizontal tab, and vertical tab. Perl 5 no
  617.      longer  includes vertical tab in its set of whitespace char-
  618.      acters. The v escape that was in the Perl documentation for
  619.      a long time was never in fact recognized. However, the char-
  620.      acter itself was treated as whitespace at least up to 5.002.
  621.      In 5.004 and 5.005 it does not match s.
  622.      2. PCRE does  not  allow  repeat  quantifiers  on  lookahead
  623.      assertions. Perl permits them, but they do not mean what you
  624.      might think. For example, (?!a){3} does not assert that  the
  625.      next  three characters are not "a". It just asserts that the
  626.      next character is not "a" three times.
  627.      3. Capturing subpatterns that occur inside  negative  looka-
  628.      head  assertions  are  counted,  but  their  entries  in the
  629.      offsets vector are never set. Perl sets its numerical  vari-
  630.      ables  from  any  such  patterns that are matched before the
  631.      assertion fails to match something (thereby succeeding), but
  632.      only  if  the negative lookahead assertion contains just one
  633.      branch.
  634.      4. Though binary zero characters are supported in  the  sub-
  635.      ject  string,  they  are  not  allowed  in  a pattern string
  636.      because it is passed as a normal  C  string,  terminated  by
  637.      zero. The escape sequence "" can be used in the pattern to
  638.      represent a binary zero.
  639.      5. The following Perl escape sequences  are  not  supported:
  640.      l,  u,  L,  U,  E, Q. In fact these are implemented by
  641.      Perl's general string-handling and are not part of its  pat-
  642.      tern matching engine.
  643.      6. The Perl G assertion is  not  supported  as  it  is  not
  644.      relevant to single pattern matches.
  645.      7. Fairly obviously, PCRE does not support the (?{code}) and
  646.      (?p{code})  constructions. However, there is some experimen-
  647.      tal support for recursive patterns using the  non-Perl  item
  648.      (?R).
  649.      8. There are at the time of writing some  oddities  in  Perl
  650.      5.005_02  concerned  with  the  settings of captured strings
  651.      when part of a pattern is repeated.  For  example,  matching
  652.      "aba"  against the pattern /^(a(b)?)+$/ sets $2 to the value
  653.      "b", but matching "aabbaa" against /^(aa(bb)?)+$/ leaves  $2
  654.      unset.    However,    if   the   pattern   is   changed   to
  655.      /^(aa(b(b))?)+$/ then $2 (and $3) are set.
  656.      In Perl 5.004 $2 is set in both cases, and that is also true
  657.      of PCRE. If in the future Perl changes to a consistent state
  658.      that is different, PCRE may change to follow.
  659.      9. Another as yet unresolved discrepancy  is  that  in  Perl
  660.      5.005_02  the  pattern /^(a)?(?(1)a|b)+$/ matches the string
  661.      "a", whereas in PCRE it does not.  However, in both Perl and
  662.      PCRE /^(a)?a/ matched against "a" leaves $1 unset.
  663.      10. PCRE  provides  some  extensions  to  the  Perl  regular
  664.      expression facilities:
  665.      (a) Although lookbehind assertions must match  fixed  length
  666.      strings,  each  alternative branch of a lookbehind assertion
  667.      can match a different length of string. Perl 5.005  requires
  668.      them all to have the same length.
  669.      (b) If PCRE_DOLLAR_ENDONLY is set and PCRE_MULTILINE is  not
  670.      set,  the  $ meta- character matches only at the very end of
  671.      the string.
  672.      (c) If PCRE_EXTRA is set, a backslash followed by  a  letter
  673.      with no special meaning is faulted.
  674.      (d) If PCRE_UNGREEDY is set, the greediness of  the  repeti-
  675.      tion  quantifiers  is inverted, that is, by default they are
  676.      not greedy, but if followed by a question mark they are.
  677.      (e) PCRE_ANCHORED can be used to force a pattern to be tried
  678.      only at the start of the subject.
  679.      (f) The PCRE_NOTBOL, PCRE_NOTEOL, and PCRE_NOTEMPTY  options
  680.      for pcre_exec() have no Perl equivalents.
  681.      (g) The (?R) construct allows for recursive pattern matching
  682.      (Perl  5.6 can do this using the (?p{code}) construct, which
  683.      PCRE cannot of course support.)
  684. REGULAR EXPRESSION DETAILS
  685.      The syntax and semantics of  the  regular  expressions  sup-
  686.      ported  by PCRE are described below. Regular expressions are
  687.      also described in the Perl documentation and in a number  of
  688.      other  books,  some  of which have copious examples. Jeffrey
  689.      Friedl's  "Mastering  Regular  Expressions",  published   by
  690.      O'Reilly (ISBN 1-56592-257), covers them in great detail.
  691.      The description here is intended as reference documentation.
  692.      The basic operation of PCRE is on strings of bytes. However,
  693.      there is the beginnings of some support for UTF-8  character
  694.      strings.  To  use  this  support  you must configure PCRE to
  695.      include it, and then call pcre_compile() with the  PCRE_UTF8
  696.      option.  How  this affects the pattern matching is described
  697.      in the final section of this document.
  698.      A regular expression is a pattern that is matched against  a
  699.      subject string from left to right. Most characters stand for
  700.      themselves in a pattern, and match the corresponding charac-
  701.      ters in the subject. As a trivial example, the pattern
  702.        The quick brown fox
  703.      matches a portion of a subject string that is  identical  to
  704.      itself.  The  power  of  regular  expressions comes from the
  705.      ability to include alternatives and repetitions in the  pat-
  706.      tern.  These  are encoded in the pattern by the use of meta-
  707.      characters, which do not stand for  themselves  but  instead
  708.      are interpreted in some special way.
  709.      There are two different sets of meta-characters: those  that
  710.      are  recognized anywhere in the pattern except within square
  711.      brackets, and those that are recognized in square  brackets.
  712.      Outside square brackets, the meta-characters are as follows:
  713.              general escape character with several uses
  714.        ^      assert start of  subject  (or  line,  in  multiline
  715.      mode)
  716.        $      assert end of subject (or line, in multiline mode)
  717.        .      match any character except newline (by default)
  718.        [      start character class definition
  719.        |      start of alternative branch
  720.        (      start subpattern
  721.        )      end subpattern
  722.        ?      extends the meaning of (
  723.               also 0 or 1 quantifier
  724.               also quantifier minimizer
  725.        *      0 or more quantifier
  726.        +      1 or more quantifier
  727.        {      start min/max quantifier
  728.      Part of a pattern that is in square  brackets  is  called  a
  729.      "character  class".  In  a  character  class  the only meta-
  730.      characters are:
  731.              general escape character
  732.        ^      negate the class, but only if the first character
  733.        -      indicates character range
  734.        ]      terminates the character class
  735.      The following sections describe  the  use  of  each  of  the
  736.      meta-characters.
  737. BACKSLASH
  738.      The backslash character has several uses. Firstly, if it  is
  739.      followed  by  a  non-alphameric character, it takes away any
  740.      special  meaning  that  character  may  have.  This  use  of
  741.      backslash  as  an  escape  character applies both inside and
  742.      outside character classes.
  743.      For example, if you want to match a "*" character, you write
  744.      "*" in the pattern. This applies whether or not the follow-
  745.      ing character would otherwise  be  interpreted  as  a  meta-
  746.      character,  so it is always safe to precede a non-alphameric
  747.      with "" to specify that it stands for itself.  In  particu-
  748.      lar, if you want to match a backslash, you write "\".
  749.      If a pattern is compiled with the PCRE_EXTENDED option, whi-
  750.      tespace in the pattern (other than in a character class) and
  751.      characters between a "#" outside a character class  and  the
  752.      next  newline  character  are ignored. An escaping backslash
  753.      can be used to include a whitespace or "#" character as part
  754.      of the pattern.
  755.      A second use of backslash provides a way  of  encoding  non-
  756.      printing  characters  in patterns in a visible manner. There
  757.      is no restriction on the appearance of non-printing  charac-
  758.      ters,  apart from the binary zero that terminates a pattern,
  759.      but when a pattern is being prepared by text editing, it  is
  760.      usually  easier to use one of the following escape sequences
  761.      than the binary character it represents:
  762.        a     alarm, that is, the BEL character (hex 07)
  763.        cx    "control-x", where x is any character
  764.        e     escape (hex 1B)
  765.        f     formfeed (hex 0C)
  766.        n     newline (hex 0A)
  767.        r     carriage return (hex 0D)
  768.        t     tab (hex 09)
  769.        xhh   character with hex code hh
  770.        ddd   character with octal code ddd, or backreference
  771.      The precise effect of "cx" is as follows: if "x" is a lower
  772.      case  letter,  it  is converted to upper case. Then bit 6 of
  773.      the character (hex 40) is inverted.  Thus "cz" becomes  hex
  774.      1A, but "c{" becomes hex 3B, while "c;" becomes hex 7B.
  775.      After "x", up to two hexadecimal digits are  read  (letters
  776.      can be in upper or lower case).
  777.      After "" up to two further octal digits are read. In  both
  778.      cases,  if  there are fewer than two digits, just those that
  779.      are present are used. Thus the sequence "x7"  specifies
  780.      two binary zeros followed by a BEL character.  Make sure you
  781.      supply two digits after the initial zero  if  the  character
  782.      that follows is itself an octal digit.
  783.      The handling of a backslash followed by a digit other than 0
  784.      is  complicated.   Outside  a character class, PCRE reads it
  785.      and any following digits as a decimal number. If the  number
  786.      is  less  than  10, or if there have been at least that many
  787.      previous capturing left parentheses in the  expression,  the
  788.      entire  sequence is taken as a back reference. A description
  789.      of how this works is given later, following  the  discussion
  790.      of parenthesized subpatterns.
  791.      Inside a character  class,  or  if  the  decimal  number  is
  792.      greater  than  9 and there have not been that many capturing
  793.      subpatterns, PCRE re-reads up to three octal digits  follow-
  794.      ing  the  backslash,  and  generates  a single byte from the
  795.      least significant 8 bits of the value. Any subsequent digits
  796.      stand for themselves.  For example:
  797.        40   is another way of writing a space
  798.        40    is the same, provided there are fewer than 40
  799.                  previous capturing subpatterns
  800.        7     is always a back reference
  801.        11    might be a back reference, or another way of
  802.                  writing a tab
  803.        11   is always a tab
  804.        113  is a tab followed by the character "3"
  805.        113   is the character with octal code 113 (since there
  806.                  can be no more than 99 back references)
  807.        377   is a byte consisting entirely of 1 bits
  808.        81    is either a back reference, or a binary zero
  809.                  followed by the two characters "8" and "1"
  810.      Note that octal values of 100 or greater must not be  intro-
  811.      duced  by  a  leading zero, because no more than three octal
  812.      digits are ever read.
  813.      All the sequences that define a single  byte  value  can  be
  814.      used both inside and outside character classes. In addition,
  815.      inside a character class, the sequence "b"  is  interpreted
  816.      as  the  backspace  character  (hex 08). Outside a character
  817.      class it has a different meaning (see below).
  818.      The third use of backslash is for specifying generic charac-
  819.      ter types:
  820.        d     any decimal digit
  821.        D     any character that is not a decimal digit
  822.        s     any whitespace character
  823.        S     any character that is not a whitespace character
  824.        w     any "word" character
  825.        W     any "non-word" character
  826.      Each pair of escape sequences partitions the complete set of
  827.      characters  into  two  disjoint  sets.  Any  given character
  828.      matches one, and only one, of each pair.
  829.      A "word" character is any letter or digit or the  underscore
  830.      character,  that  is,  any  character which can be part of a
  831.      Perl "word". The definition of letters and  digits  is  con-
  832.      trolled  by PCRE's character tables, and may vary if locale-
  833.      specific matching is  taking  place  (see  "Locale  support"
  834.      above). For example, in the "fr" (French) locale, some char-
  835.      acter codes greater than 128 are used for accented  letters,
  836.      and these are matched by w.
  837.      These character type sequences can appear  both  inside  and
  838.      outside  character classes. They each match one character of
  839.      the appropriate type. If the current matching  point  is  at
  840.      the end of the subject string, all of them fail, since there
  841.      is no character to match.
  842.      The fourth use of backslash is  for  certain  simple  asser-
  843.      tions. An assertion specifies a condition that has to be met
  844.      at a particular point in  a  match,  without  consuming  any
  845.      characters  from  the subject string. The use of subpatterns
  846.      for more complicated  assertions  is  described  below.  The
  847.      backslashed assertions are
  848.        b     word boundary
  849.        B     not a word boundary
  850.        A     start of subject (independent of multiline mode)
  851.        Z     end of subject or newline at  end  (independent  of
  852.      multiline mode)
  853.        z     end of subject (independent of multiline mode)
  854.      These assertions may not appear in  character  classes  (but
  855.      note that "b" has a different meaning, namely the backspace
  856.      character, inside a character class).
  857.      A word boundary is a position in the  subject  string  where
  858.      the current character and the previous character do not both
  859.      match w or W (i.e. one matches w and  the  other  matches
  860.      W),  or the start or end of the string if the first or last
  861.      character matches w, respectively.
  862.      The A, Z, and z assertions differ  from  the  traditional
  863.      circumflex  and  dollar  (described below) in that they only
  864.      ever match at the very start and end of the subject  string,
  865.      whatever  options  are  set.  They  are  not affected by the
  866.      PCRE_NOTBOL or PCRE_NOTEOL options. If the startoffset argu-
  867.      ment  of  pcre_exec()  is  non-zero, A can never match. The
  868.      difference between Z and z is that  Z  matches  before  a
  869.      newline  that is the last character of the string as well as
  870.      at the end of the string, whereas z  matches  only  at  the
  871.      end.
  872. CIRCUMFLEX AND DOLLAR
  873.      Outside a character class, in the default matching mode, the
  874.      circumflex  character  is an assertion which is true only if
  875.      the current matching point is at the start  of  the  subject
  876.      string.  If  the startoffset argument of pcre_exec() is non-
  877.      zero, circumflex can never match. Inside a character  class,
  878.      circumflex has an entirely different meaning (see below).
  879.      Circumflex need not be the first character of the pattern if
  880.      a  number of alternatives are involved, but it should be the
  881.      first thing in each alternative in which it appears  if  the
  882.      pattern is ever to match that branch. If all possible alter-
  883.      natives start with a circumflex, that is, if the pattern  is
  884.      constrained to match only at the start of the subject, it is
  885.      said to be an "anchored" pattern. (There are also other con-
  886.      structs that can cause a pattern to be anchored.)
  887.      A dollar character is an assertion which is true only if the
  888.      current  matching point is at the end of the subject string,
  889.      or immediately before a newline character that is  the  last
  890.      character in the string (by default). Dollar need not be the
  891.      last character of the pattern if a  number  of  alternatives
  892.      are  involved,  but it should be the last item in any branch
  893.      in which it appears.  Dollar has no  special  meaning  in  a
  894.      character class.
  895.      The meaning of dollar can be changed so that it matches only
  896.      at   the   very   end   of   the   string,  by  setting  the
  897.      PCRE_DOLLAR_ENDONLY option at compile or matching time. This
  898.      does not affect the Z assertion.
  899.      The meanings of the circumflex  and  dollar  characters  are
  900.      changed  if  the  PCRE_MULTILINE option is set. When this is
  901.      the case,  they  match  immediately  after  and  immediately
  902.      before an internal "n" character, respectively, in addition
  903.      to matching at the start and end of the subject string.  For
  904.      example,  the  pattern  /^abc$/  matches  the subject string
  905.      "defnabc" in multiline  mode,  but  not  otherwise.  Conse-
  906.      quently,  patterns  that  are  anchored  in single line mode
  907.      because all branches start with "^" are not anchored in mul-
  908.      tiline mode, and a match for circumflex is possible when the
  909.      startoffset  argument  of  pcre_exec()  is   non-zero.   The
  910.      PCRE_DOLLAR_ENDONLY  option  is ignored if PCRE_MULTILINE is
  911.      set.
  912.      Note that the sequences A, Z, and z can be used to  match
  913.      the  start  and end of the subject in both modes, and if all
  914.      branches of a pattern start with A it is  always  anchored,
  915.      whether PCRE_MULTILINE is set or not.
  916. FULL STOP (PERIOD, DOT)
  917.      Outside a character class, a dot in the pattern matches  any
  918.      one character in the subject, including a non-printing char-
  919.      acter, but not (by default)  newline.   If  the  PCRE_DOTALL
  920.      option  is set, dots match newlines as well. The handling of
  921.      dot is entirely independent of the  handling  of  circumflex
  922.      and  dollar,  the  only  relationship  being  that they both
  923.      involve newline characters. Dot has no special meaning in  a
  924.      character class.
  925. SQUARE BRACKETS
  926.      An opening square bracket introduces a character class, ter-
  927.      minated  by  a  closing  square  bracket.  A  closing square
  928.      bracket on its own is  not  special.  If  a  closing  square
  929.      bracket  is  required as a member of the class, it should be
  930.      the first data character in the class (after an initial cir-
  931.      cumflex, if present) or escaped with a backslash.
  932.      A character class matches a single character in the subject;
  933.      the  character  must  be in the set of characters defined by
  934.      the class, unless the first character in the class is a cir-
  935.      cumflex,  in which case the subject character must not be in
  936.      the set defined by the class. If a  circumflex  is  actually
  937.      required  as  a  member  of  the class, ensure it is not the
  938.      first character, or escape it with a backslash.
  939.      For example, the character class [aeiou] matches  any  lower
  940.      case vowel, while [^aeiou] matches any character that is not
  941.      a lower case vowel. Note that a circumflex is  just  a  con-
  942.      venient  notation for specifying the characters which are in
  943.      the class by enumerating those that are not. It  is  not  an
  944.      assertion:  it  still  consumes a character from the subject
  945.      string, and fails if the current pointer is at  the  end  of
  946.      the string.
  947.      When caseless matching  is  set,  any  letters  in  a  class
  948.      represent  both their upper case and lower case versions, so
  949.      for example, a caseless [aeiou] matches "A" as well as  "a",
  950.      and  a caseless [^aeiou] does not match "A", whereas a case-
  951.      ful version would.
  952.      The newline character is never treated in any special way in
  953.      character  classes,  whatever the setting of the PCRE_DOTALL
  954.      or PCRE_MULTILINE options is. A  class  such  as  [^a]  will
  955.      always match a newline.
  956.      The minus (hyphen) character can be used to specify a  range
  957.      of  characters  in  a  character  class.  For example, [d-m]
  958.      matches any letter between d and m, inclusive.  If  a  minus
  959.      character  is required in a class, it must be escaped with a
  960.      backslash or appear in a position where it cannot be  inter-
  961.      preted as indicating a range, typically as the first or last
  962.      character in the class.
  963.      It is not possible to have the literal character "]" as  the
  964.      end  character  of  a  range.  A  pattern such as [W-]46] is
  965.      interpreted as a class of two characters ("W" and "-")  fol-
  966.      lowed by a literal string "46]", so it would match "W46]" or
  967.      "-46]". However, if the "]" is escaped with a  backslash  it
  968.      is  interpreted  as  the end of range, so [W-]46] is inter-
  969.      preted as a single class containing a range followed by  two
  970.      separate characters. The octal or hexadecimal representation
  971.      of "]" can also be used to end a range.
  972.      Ranges operate in ASCII collating sequence. They can also be
  973.      used  for  characters  specified  numerically,  for  example
  974.      [00-37]. If a range that includes letters is  used  when
  975.      caseless  matching  is set, it matches the letters in either
  976.      case. For example, [W-c] is equivalent  to  [][^_`wxyzabc],
  977.      matched  caselessly,  and  if  character tables for the "fr"
  978.      locale are in use, [xc8-xcb] matches accented E characters
  979.      in both cases.
  980.      The character types d, D, s, S,  w,  and  W  may  also
  981.      appear  in  a  character  class, and add the characters that
  982.      they match to the class. For example, [dABCDEF] matches any
  983.      hexadecimal  digit.  A  circumflex  can conveniently be used
  984.      with the upper case character types to specify a  more  res-
  985.      tricted set of characters than the matching lower case type.
  986.      For example, the class [^W_] matches any letter  or  digit,
  987.      but not underscore.
  988.      All non-alphameric characters other than ,  -,  ^  (at  the
  989.      start)  and  the  terminating ] are non-special in character
  990.      classes, but it does no harm if they are escaped.
  991. POSIX CHARACTER CLASSES
  992.      Perl 5.6 (not yet released at the time of writing) is  going
  993.      to  support  the POSIX notation for character classes, which
  994.      uses names enclosed by  [:  and  :]   within  the  enclosing
  995.      square brackets. PCRE supports this notation. For example,
  996.        [01[:alpha:]%]
  997.      matches "0", "1", any alphabetic character, or "%". The sup-
  998.      ported class names are
  999.        alnum    letters and digits
  1000.        alpha    letters
  1001.        ascii    character codes 0 - 127
  1002.        cntrl    control characters
  1003.        digit    decimal digits (same as d)
  1004.        graph    printing characters, excluding space
  1005.        lower    lower case letters
  1006.        print    printing characters, including space
  1007.        punct    printing characters, excluding letters and digits
  1008.        space    white space (same as s)
  1009.        upper    upper case letters
  1010.        word     "word" characters (same as w)
  1011.        xdigit   hexadecimal digits
  1012.      The names "ascii" and "word" are  Perl  extensions.  Another
  1013.      Perl  extension is negation, which is indicated by a ^ char-
  1014.      acter after the colon. For example,
  1015.        [12[:^digit:]]
  1016.      matches "1", "2", or any non-digit.  PCRE  (and  Perl)  also
  1017.      recognize the POSIX syntax [.ch.] and [=ch=] where "ch" is a
  1018.      "collating element", but these are  not  supported,  and  an
  1019.      error is given if they are encountered.
  1020. VERTICAL BAR
  1021.      Vertical bar characters are  used  to  separate  alternative
  1022.      patterns. For example, the pattern
  1023.        gilbert|sullivan
  1024.      matches either "gilbert" or "sullivan". Any number of alter-
  1025.      natives  may  appear,  and an empty alternative is permitted
  1026.      (matching the empty string).   The  matching  process  tries
  1027.      each  alternative in turn, from left to right, and the first
  1028.      one that succeeds is used. If the alternatives are within  a
  1029.      subpattern  (defined  below),  "succeeds" means matching the
  1030.      rest of the main pattern as well as the alternative  in  the
  1031.      subpattern.
  1032. INTERNAL OPTION SETTING
  1033.      The settings of PCRE_CASELESS, PCRE_MULTILINE,  PCRE_DOTALL,
  1034.      and  PCRE_EXTENDED can be changed from within the pattern by
  1035.      a sequence of Perl option letters enclosed between "(?"  and
  1036.      ")". The option letters are
  1037.        i  for PCRE_CASELESS
  1038.        m  for PCRE_MULTILINE
  1039.        s  for PCRE_DOTALL
  1040.        x  for PCRE_EXTENDED
  1041.      For example, (?im) sets caseless, multiline matching. It  is
  1042.      also possible to unset these options by preceding the letter
  1043.      with a hyphen, and a combined setting and unsetting such  as
  1044.      (?im-sx),  which sets PCRE_CASELESS and PCRE_MULTILINE while
  1045.      unsetting PCRE_DOTALL and PCRE_EXTENDED, is also  permitted.
  1046.      If  a  letter  appears both before and after the hyphen, the
  1047.      option is unset.
  1048.      The scope of these option changes depends on  where  in  the
  1049.      pattern  the  setting  occurs. For settings that are outside
  1050.      any subpattern (defined below), the effect is the same as if
  1051.      the  options were set or unset at the start of matching. The
  1052.      following patterns all behave in exactly the same way:
  1053.        (?i)abc
  1054.        a(?i)bc
  1055.        ab(?i)c
  1056.        abc(?i)
  1057.      which in turn is the same as compiling the pattern abc  with
  1058.      PCRE_CASELESS  set.   In  other words, such "top level" set-
  1059.      tings apply to the whole pattern  (unless  there  are  other
  1060.      changes  inside subpatterns). If there is more than one set-
  1061.      ting of the same option at top level, the rightmost  setting
  1062.      is used.
  1063.      If an option change occurs inside a subpattern,  the  effect
  1064.      is  different.  This is a change of behaviour in Perl 5.005.
  1065.      An option change inside a subpattern affects only that  part
  1066.      of the subpattern that follows it, so
  1067.        (a(?i)b)c
  1068.      matches  abc  and  aBc  and  no  other   strings   (assuming
  1069.      PCRE_CASELESS  is  not used).  By this means, options can be
  1070.      made to have different settings in different  parts  of  the
  1071.      pattern.  Any  changes  made  in one alternative do carry on
  1072.      into subsequent branches within  the  same  subpattern.  For
  1073.      example,
  1074.        (a(?i)b|c)
  1075.      matches "ab", "aB", "c", and "C", even though when  matching
  1076.      "C" the first branch is abandoned before the option setting.
  1077.      This is because the effects of  option  settings  happen  at
  1078.      compile  time. There would be some very weird behaviour oth-
  1079.      erwise.
  1080.      The PCRE-specific options PCRE_UNGREEDY and  PCRE_EXTRA  can
  1081.      be changed in the same way as the Perl-compatible options by
  1082.      using the characters U and X  respectively.  The  (?X)  flag
  1083.      setting  is  special in that it must always occur earlier in
  1084.      the pattern than any of the additional features it turns on,
  1085.      even when it is at top level. It is best put at the start.
  1086. SUBPATTERNS
  1087.      Subpatterns are delimited by parentheses  (round  brackets),
  1088.      which can be nested.  Marking part of a pattern as a subpat-
  1089.      tern does two things:
  1090.      1. It localizes a set of alternatives. For example, the pat-
  1091.      tern
  1092.        cat(aract|erpillar|)
  1093.      matches one of the words "cat",  "cataract",  or  "caterpil-
  1094.      lar".  Without  the  parentheses, it would match "cataract",
  1095.      "erpillar" or the empty string.
  1096.      2. It sets up the subpattern as a capturing  subpattern  (as
  1097.      defined  above).   When the whole pattern matches, that por-
  1098.      tion of the subject string that matched  the  subpattern  is
  1099.      passed  back  to  the  caller  via  the  ovector argument of
  1100.      pcre_exec(). Opening parentheses are counted  from  left  to
  1101.      right (starting from 1) to obtain the numbers of the captur-
  1102.      ing subpatterns.
  1103.      For example, if the string "the red king" is matched against
  1104.      the pattern
  1105.        the ((red|white) (king|queen))
  1106.      the captured substrings are "red king", "red",  and  "king",
  1107.      and are numbered 1, 2, and 3, respectively.
  1108.      The fact that plain parentheses fulfil two functions is  not
  1109.      always  helpful.  There are often times when a grouping sub-
  1110.      pattern is required without a capturing requirement.  If  an
  1111.      opening parenthesis is followed by "?:", the subpattern does
  1112.      not do any capturing, and is not counted when computing  the
  1113.      number of any subsequent capturing subpatterns. For example,
  1114.      if the string "the white queen" is matched against the  pat-
  1115.      tern
  1116.        the ((?:red|white) (king|queen))
  1117.      the captured substrings are "white queen" and  "queen",  and
  1118.      are  numbered  1  and 2. The maximum number of captured sub-
  1119.      strings is 99, and the maximum number  of  all  subpatterns,
  1120.      both capturing and non-capturing, is 200.
  1121.      As a  convenient  shorthand,  if  any  option  settings  are
  1122.      required  at  the  start  of a non-capturing subpattern, the
  1123.      option letters may appear between the "?" and the ":".  Thus
  1124.      the two patterns
  1125.        (?i:saturday|sunday)
  1126.        (?:(?i)saturday|sunday)
  1127.      match exactly the same set of strings.  Because  alternative
  1128.      branches  are  tried from left to right, and options are not
  1129.      reset until the end of the subpattern is reached, an  option
  1130.      setting  in  one  branch does affect subsequent branches, so
  1131.      the above patterns match "SUNDAY" as well as "Saturday".
  1132. REPETITION
  1133.      Repetition is specified by quantifiers, which can follow any
  1134.      of the following items:
  1135.        a single character, possibly escaped
  1136.        the . metacharacter
  1137.        a character class
  1138.        a back reference (see next section)
  1139.        a parenthesized subpattern (unless it is  an  assertion  -
  1140.      see below)
  1141.      The general repetition quantifier specifies  a  minimum  and
  1142.      maximum  number  of  permitted  matches,  by  giving the two
  1143.      numbers in curly brackets (braces), separated  by  a  comma.
  1144.      The  numbers  must be less than 65536, and the first must be
  1145.      less than or equal to the second. For example:
  1146.        z{2,4}
  1147.      matches "zz", "zzz", or "zzzz". A closing brace on  its  own
  1148.      is not a special character. If the second number is omitted,
  1149.      but the comma is present, there is no upper  limit;  if  the
  1150.      second number and the comma are both omitted, the quantifier
  1151.      specifies an exact number of required matches. Thus
  1152.        [aeiou]{3,}
  1153.      matches at least 3 successive vowels,  but  may  match  many
  1154.      more, while
  1155.        d{8}
  1156.      matches exactly 8 digits.  An  opening  curly  bracket  that
  1157.      appears  in a position where a quantifier is not allowed, or
  1158.      one that does not match the syntax of a quantifier, is taken
  1159.      as  a literal character. For example, {,6} is not a quantif-
  1160.      ier, but a literal string of four characters.
  1161.      The quantifier {0} is permitted, causing the  expression  to
  1162.      behave  as  if the previous item and the quantifier were not
  1163.      present.
  1164.      For convenience (and  historical  compatibility)  the  three
  1165.      most common quantifiers have single-character abbreviations:
  1166.        *    is equivalent to {0,}
  1167.        +    is equivalent to {1,}
  1168.        ?    is equivalent to {0,1}
  1169.      It is possible to construct infinite loops  by  following  a
  1170.      subpattern  that  can  match no characters with a quantifier
  1171.      that has no upper limit, for example:
  1172.        (a?)*
  1173.      Earlier versions of Perl and PCRE used to give an  error  at
  1174.      compile  time  for such patterns. However, because there are
  1175.      cases where this  can  be  useful,  such  patterns  are  now
  1176.      accepted,  but  if  any repetition of the subpattern does in
  1177.      fact match no characters, the loop is forcibly broken.
  1178.      By default, the quantifiers  are  "greedy",  that  is,  they
  1179.      match  as much as possible (up to the maximum number of per-
  1180.      mitted times), without causing the rest of  the  pattern  to
  1181.      fail. The classic example of where this gives problems is in
  1182.      trying to match comments in C programs. These appear between
  1183.      the  sequences /* and */ and within the sequence, individual
  1184.      * and / characters may appear. An attempt to  match  C  com-
  1185.      ments by applying the pattern
  1186.        /*.**/
  1187.      to the string
  1188.        /* first command */  not comment  /* second comment */
  1189.      fails, because it matches the entire  string  owing  to  the
  1190.      greediness of the .*  item.
  1191.      However, if a quantifier is followed by a question mark,  it
  1192.      ceases  to be greedy, and instead matches the minimum number
  1193.      of times possible, so the pattern
  1194.        /*.*?*/
  1195.      does the right thing with the C comments. The meaning of the
  1196.      various  quantifiers is not otherwise changed, just the pre-
  1197.      ferred number of matches.  Do not confuse this use of  ques-
  1198.      tion  mark  with  its  use as a quantifier in its own right.
  1199.      Because it has two uses, it can sometimes appear doubled, as
  1200.      in
  1201.        d??d
  1202.      which matches one digit by preference, but can match two  if
  1203.      that is the only way the rest of the pattern matches.
  1204.      If the PCRE_UNGREEDY option is set (an option which  is  not
  1205.      available  in  Perl),  the  quantifiers  are  not  greedy by
  1206.      default, but individual ones can be made greedy by following
  1207.      them  with  a  question mark. In other words, it inverts the
  1208.      default behaviour.
  1209.      When a parenthesized subpattern is quantified with a minimum
  1210.      repeat  count  that is greater than 1 or with a limited max-
  1211.      imum, more store is required for the  compiled  pattern,  in
  1212.      proportion to the size of the minimum or maximum.
  1213.      If a pattern starts with .* or  .{0,}  and  the  PCRE_DOTALL
  1214.      option (equivalent to Perl's /s) is set, thus allowing the .
  1215.      to match  newlines,  the  pattern  is  implicitly  anchored,
  1216.      because whatever follows will be tried against every charac-
  1217.      ter position in the subject string, so there is no point  in
  1218.      retrying  the overall match at any position after the first.
  1219.      PCRE treats such a pattern as though it were preceded by A.
  1220.      In  cases where it is known that the subject string contains
  1221.      no newlines, it is worth setting PCRE_DOTALL when  the  pat-
  1222.      tern begins with .* in order to obtain this optimization, or
  1223.      alternatively using ^ to indicate anchoring explicitly.
  1224.      When a capturing subpattern is repeated, the value  captured
  1225.      is the substring that matched the final iteration. For exam-
  1226.      ple, after
  1227.        (tweedle[dume]{3}s*)+
  1228.      has matched "tweedledum tweedledee" the value  of  the  cap-
  1229.      tured  substring  is  "tweedledee".  However,  if  there are
  1230.      nested capturing  subpatterns,  the  corresponding  captured
  1231.      values  may  have been set in previous iterations. For exam-
  1232.      ple, after
  1233.        /(a|(b))+/
  1234.      matches "aba" the value of the second captured substring  is
  1235.      "b".
  1236. BACK REFERENCES
  1237.      Outside a character class, a backslash followed by  a  digit
  1238.      greater  than  0  (and  possibly  further  digits) is a back
  1239. SunOS 5.8                 Last change:                         30
  1240.      reference to a capturing subpattern  earlier  (i.e.  to  its
  1241.      left)  in  the  pattern,  provided there have been that many
  1242.      previous capturing left parentheses.
  1243.      However, if the decimal number following  the  backslash  is
  1244.      less  than  10,  it is always taken as a back reference, and
  1245.      causes an error only if there are not  that  many  capturing
  1246.      left  parentheses in the entire pattern. In other words, the
  1247.      parentheses that are referenced need not be to the  left  of
  1248.      the  reference  for  numbers  less  than 10. See the section
  1249.      entitled "Backslash" above for further details of  the  han-
  1250.      dling of digits following a backslash.
  1251.      A back reference matches whatever actually matched the  cap-
  1252.      turing subpattern in the current subject string, rather than
  1253.      anything matching the subpattern itself. So the pattern
  1254.        (sens|respons)e and 1ibility
  1255.      matches "sense and sensibility" and "response and  responsi-
  1256.      bility",  but  not  "sense  and  responsibility". If caseful
  1257.      matching is in force at the time of the back reference,  the
  1258.      case of letters is relevant. For example,
  1259.        ((?i)rah)s+1
  1260.      matches "rah rah" and "RAH RAH", but  not  "RAH  rah",  even
  1261.      though  the  original  capturing subpattern is matched case-
  1262.      lessly.
  1263.      There may be more than one back reference to the  same  sub-
  1264.      pattern.  If  a  subpattern  has not actually been used in a
  1265.      particular match, any back references to it always fail. For
  1266.      example, the pattern
  1267.        (a|(bc))2
  1268.      always fails if it starts to match  "a"  rather  than  "bc".
  1269.      Because  there  may  be up to 99 back references, all digits
  1270.      following the backslash are taken as  part  of  a  potential
  1271.      back reference number. If the pattern continues with a digit
  1272.      character, some delimiter must be used to terminate the back
  1273.      reference.   If the PCRE_EXTENDED option is set, this can be
  1274.      whitespace. Otherwise an empty comment can be used.
  1275.      A back reference that occurs inside the parentheses to which
  1276.      it  refers  fails when the subpattern is first used, so, for
  1277.      example, (a1) never matches.  However, such references  can
  1278.      be useful inside repeated subpatterns. For example, the pat-
  1279.      tern
  1280.        (a|b1)+
  1281.      matches any number of "a"s and also "aba", "ababbaa" etc. At
  1282.      each iteration of the subpattern, the back reference matches
  1283.      the character string corresponding to  the  previous  itera-
  1284.      tion.  In  order  for this to work, the pattern must be such
  1285.      that the first iteration does not need  to  match  the  back
  1286.      reference.  This  can  be  done using alternation, as in the
  1287.      example above, or by a quantifier with a minimum of zero.
  1288. ASSERTIONS
  1289.      An assertion is  a  test  on  the  characters  following  or
  1290.      preceding  the current matching point that does not actually
  1291.      consume any characters. The simple assertions coded  as  b,
  1292.      B,  A,  Z,  z, ^ and $ are described above. More compli-
  1293.      cated assertions are coded as  subpatterns.  There  are  two
  1294.      kinds:  those that look ahead of the current position in the
  1295.      subject string, and those that look behind it.
  1296.      An assertion subpattern is matched in the normal way, except
  1297.      that  it  does not cause the current matching position to be
  1298.      changed. Lookahead assertions start with  (?=  for  positive
  1299.      assertions and (?! for negative assertions. For example,
  1300.        w+(?=;)
  1301.      matches a word followed by a semicolon, but does not include
  1302.      the semicolon in the match, and
  1303.        foo(?!bar)
  1304.      matches any occurrence of "foo"  that  is  not  followed  by
  1305.      "bar". Note that the apparently similar pattern
  1306.        (?!foo)bar
  1307.      does not find an occurrence of "bar"  that  is  preceded  by
  1308.      something other than "foo"; it finds any occurrence of "bar"
  1309.      whatsoever, because the assertion  (?!foo)  is  always  true
  1310.      when  the  next  three  characters  are  "bar". A lookbehind
  1311.      assertion is needed to achieve this effect.
  1312.      Lookbehind assertions start with (?<=  for  positive  asser-
  1313.      tions and (?<! for negative assertions. For example,
  1314.        (?<!foo)bar
  1315.      does find an occurrence of "bar" that  is  not  preceded  by
  1316.      "foo". The contents of a lookbehind assertion are restricted
  1317.      such that all the strings  it  matches  must  have  a  fixed
  1318.      length.  However, if there are several alternatives, they do
  1319.      not all have to have the same fixed length. Thus
  1320.        (?<=bullock|donkey)
  1321.      is permitted, but
  1322.        (?<!dogs?|cats?)
  1323.      causes an error at compile time. Branches  that  match  dif-
  1324.      ferent length strings are permitted only at the top level of
  1325.      a lookbehind assertion. This is an extension  compared  with
  1326.      Perl  5.005,  which  requires all branches to match the same
  1327.      length of string. An assertion such as
  1328.        (?<=ab(c|de))
  1329.      is not permitted, because its single  top-level  branch  can
  1330.      match two different lengths, but it is acceptable if rewrit-
  1331.      ten to use two top-level branches:
  1332.        (?<=abc|abde)
  1333.      The implementation of lookbehind  assertions  is,  for  each
  1334.      alternative,  to  temporarily move the current position back
  1335.      by the fixed width and then  try  to  match.  If  there  are
  1336.      insufficient  characters  before  the  current position, the
  1337.      match is deemed to fail.  Lookbehinds  in  conjunction  with
  1338.      once-only  subpatterns can be particularly useful for match-
  1339.      ing at the ends of strings; an example is given at  the  end
  1340.      of the section on once-only subpatterns.
  1341.      Several assertions (of any sort) may  occur  in  succession.
  1342.      For example,
  1343.        (?<=d{3})(?<!999)foo
  1344.      matches "foo" preceded by three digits that are  not  "999".
  1345.      Notice  that each of the assertions is applied independently
  1346.      at the same point in the subject string. First  there  is  a
  1347.      check that the previous three characters are all digits, and
  1348.      then there is a check that the same three characters are not
  1349.      "999".   This  pattern  does not match "foo" preceded by six
  1350.      characters, the first of which are digits and the last three
  1351.      of  which  are  not  "999".  For  example,  it doesn't match
  1352.      "123abcfoo". A pattern to do that is
  1353.        (?<=d{3}...)(?<!999)foo
  1354.      This time the first assertion looks  at  the  preceding  six
  1355.      characters,  checking  that  the first three are digits, and
  1356.      then the second assertion checks that  the  preceding  three
  1357.      characters are not "999".
  1358.      Assertions can be nested in any combination. For example,
  1359.        (?<=(?<!foo)bar)baz
  1360.      matches an occurrence of "baz" that  is  preceded  by  "bar"
  1361.      which in turn is not preceded by "foo", while
  1362.        (?<=d{3}(?!999)...)foo
  1363.      is another pattern which matches  "foo"  preceded  by  three
  1364.      digits and any three characters that are not "999".
  1365.      Assertion subpatterns are not capturing subpatterns, and may
  1366.      not  be  repeated,  because  it makes no sense to assert the
  1367.      same thing several times. If any kind of assertion  contains
  1368.      capturing  subpatterns  within it, these are counted for the
  1369.      purposes of numbering the capturing subpatterns in the whole
  1370.      pattern.   However,  substring capturing is carried out only
  1371.      for positive assertions, because it does not make sense  for
  1372.      negative assertions.
  1373.      Assertions count towards the maximum  of  200  parenthesized
  1374.      subpatterns.
  1375. ONCE-ONLY SUBPATTERNS
  1376.      With both maximizing and minimizing repetition,  failure  of
  1377.      what  follows  normally  causes  the repeated item to be re-
  1378.      evaluated to see if a different number of repeats allows the
  1379.      rest  of  the  pattern  to  match. Sometimes it is useful to
  1380.      prevent this, either to change the nature of the  match,  or
  1381.      to  cause  it fail earlier than it otherwise might, when the
  1382.      author of the pattern knows there is no  point  in  carrying
  1383.      on.
  1384.      Consider, for example, the pattern d+foo  when  applied  to
  1385.      the subject line
  1386.        123456bar
  1387.      After matching all 6 digits and then failing to match "foo",
  1388.      the normal action of the matcher is to try again with only 5
  1389.      digits matching the d+ item, and then with 4,  and  so  on,
  1390.      before ultimately failing. Once-only subpatterns provide the
  1391.      means for specifying that once a portion of the pattern  has
  1392.      matched,  it  is  not to be re-evaluated in this way, so the
  1393.      matcher would give up immediately on failing to match  "foo"
  1394.      the  first  time.  The  notation  is another kind of special
  1395.      parenthesis, starting with (?> as in this example:
  1396.        (?>d+)bar
  1397.      This kind of parenthesis "locks up" the  part of the pattern
  1398.      it  contains once it has matched, and a failure further into
  1399.      the pattern is prevented from backtracking  into  it.  Back-
  1400.      tracking  past  it to previous items, however, works as nor-
  1401.      mal.
  1402.      An alternative description is that a subpattern of this type
  1403.      matches  the  string  of  characters that an identical stan-
  1404.      dalone pattern would match, if anchored at the current point
  1405.      in the subject string.
  1406.      Once-only subpatterns are not capturing subpatterns.  Simple
  1407.      cases  such as the above example can be thought of as a max-
  1408.      imizing repeat that must  swallow  everything  it  can.  So,
  1409.      while both d+ and d+? are prepared to adjust the number of
  1410.      digits they match in order to make the rest of  the  pattern
  1411.      match, (?>d+) can only match an entire sequence of digits.
  1412.      This construction can of course contain arbitrarily  compli-
  1413.      cated subpatterns, and it can be nested.
  1414.      Once-only subpatterns can be used in conjunction with  look-
  1415.      behind  assertions  to specify efficient matching at the end
  1416.      of the subject string. Consider a simple pattern such as
  1417.        abcd$
  1418.      when applied to a long string which does not match.  Because
  1419.      matching  proceeds  from  left  to right, PCRE will look for
  1420.      each "a" in the subject and then see if what follows matches
  1421.      the rest of the pattern. If the pattern is specified as
  1422.        ^.*abcd$
  1423.      the initial .* matches the entire string at first, but  when
  1424.      this  fails  (because  there  is no following "a"), it back-
  1425.      tracks to match all but the last character, then all but the
  1426.      last  two  characters,  and so on. Once again the search for
  1427.      "a" covers the entire string, from right to left, so we  are
  1428.      no better off. However, if the pattern is written as
  1429.        ^(?>.*)(?<=abcd)
  1430.      there can be no backtracking for the .* item; it  can  match
  1431.      only  the entire string. The subsequent lookbehind assertion
  1432.      does a single test on the last four characters. If it fails,
  1433.      the match fails immediately. For long strings, this approach
  1434.      makes a significant difference to the processing time.
  1435.      When a pattern contains an unlimited repeat inside a subpat-
  1436.      tern  that  can  itself  be  repeated an unlimited number of
  1437.      times, the use of a once-only subpattern is the only way  to
  1438.      avoid  some  failing matches taking a very long time indeed.
  1439.      The pattern
  1440.        (D+|<d+>)*[!?]
  1441.      matches an unlimited number of substrings that  either  con-
  1442.      sist  of  non-digits,  or digits enclosed in <>, followed by
  1443.      either ! or ?. When it matches, it runs quickly. However, if
  1444.      it is applied to
  1445.        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  1446.      it takes a long  time  before  reporting  failure.  This  is
  1447.      because the string can be divided between the two repeats in
  1448.      a large number of ways, and all have to be tried. (The exam-
  1449.      ple  used  [!?]  rather  than a single character at the end,
  1450.      because both PCRE and Perl have an optimization that  allows
  1451.      for  fast  failure  when  a  single  character is used. They
  1452.      remember the last single character that is  required  for  a
  1453.      match,  and  fail early if it is not present in the string.)
  1454.      If the pattern is changed to
  1455.        ((?>D+)|<d+>)*[!?]
  1456.      sequences of non-digits cannot be broken, and  failure  hap-
  1457.      pens quickly.
  1458. CONDITIONAL SUBPATTERNS
  1459.      It is possible to cause the matching process to obey a  sub-
  1460.      pattern  conditionally  or to choose between two alternative
  1461.      subpatterns, depending on the result  of  an  assertion,  or
  1462.      whether  a previous capturing subpattern matched or not. The
  1463.      two possible forms of conditional subpattern are
  1464.        (?(condition)yes-pattern)
  1465.        (?(condition)yes-pattern|no-pattern)
  1466.      If the condition is satisfied, the yes-pattern is used; oth-
  1467.      erwise  the  no-pattern  (if  present) is used. If there are
  1468.      more than two alternatives in the subpattern, a compile-time
  1469.      error occurs.
  1470.      There are two kinds of condition. If the  text  between  the
  1471.      parentheses  consists of a sequence of digits, the condition
  1472.      is satisfied if the capturing subpattern of that number  has
  1473.      previously  matched.  The  number must be greater than zero.
  1474.      Consider  the  following  pattern,   which   contains   non-
  1475.      significant white space to make it more readable (assume the
  1476.      PCRE_EXTENDED option) and to divide it into three parts  for
  1477.      ease of discussion:
  1478.        ( ( )?    [^()]+    (?(1) ) )
  1479.      The first part matches an optional opening parenthesis,  and
  1480.      if  that character is present, sets it as the first captured
  1481.      substring. The second part matches one  or  more  characters
  1482.      that  are  not  parentheses. The third part is a conditional
  1483.      subpattern that tests whether the first set  of  parentheses
  1484.      matched  or  not.  If  they did, that is, if subject started
  1485.      with an opening parenthesis, the condition is true,  and  so
  1486.      the  yes-pattern  is  executed  and a closing parenthesis is
  1487.      required. Otherwise, since no-pattern is  not  present,  the
  1488.      subpattern  matches  nothing.  In  other words, this pattern
  1489.      matches a sequence of non-parentheses,  optionally  enclosed
  1490.      in parentheses.
  1491.      If the condition is not a sequence of digits, it must be  an
  1492.      assertion.  This  may be a positive or negative lookahead or
  1493.      lookbehind assertion. Consider this pattern, again  contain-
  1494.      ing  non-significant  white space, and with the two alterna-
  1495.      tives on the second line:
  1496.        (?(?=[^a-z]*[a-z])
  1497.        d{2}-[a-z]{3}-d{2}  |  d{2}-d{2}-d{2} )
  1498.      The condition is a positive lookahead assertion that matches
  1499.      an optional sequence of non-letters followed by a letter. In
  1500.      other words, it tests for  the  presence  of  at  least  one
  1501.      letter  in the subject. If a letter is found, the subject is
  1502.      matched against  the  first  alternative;  otherwise  it  is
  1503.      matched  against the second. This pattern matches strings in
  1504.      one of the two forms dd-aaa-dd or dd-dd-dd,  where  aaa  are
  1505.      letters and dd are digits.
  1506. COMMENTS
  1507.      The sequence (?# marks the start of a comment which  contin-
  1508.      ues  up  to the next closing parenthesis. Nested parentheses
  1509.      are not permitted. The characters that  make  up  a  comment
  1510.      play no part in the pattern matching at all.
  1511.      If the PCRE_EXTENDED option is set, an unescaped # character
  1512.      outside  a character class introduces a comment that contin-
  1513.      ues up to the next newline character in the pattern.
  1514. RECURSIVE PATTERNS
  1515.      Consider the problem of matching a  string  in  parentheses,
  1516.      allowing  for  unlimited nested parentheses. Without the use
  1517.      of recursion, the best that can be done is to use a  pattern
  1518.      that  matches  up  to some fixed depth of nesting. It is not
  1519.      possible to handle an arbitrary nesting depth. Perl 5.6  has
  1520.      provided   an  experimental  facility  that  allows  regular
  1521.      expressions to recurse (amongst other things). It does  this
  1522.      by  interpolating  Perl  code in the expression at run time,
  1523.      and the code can refer to the expression itself. A Perl pat-
  1524.      tern  to  solve  the parentheses problem can be created like
  1525.      this:
  1526.        $re = qr{( (?: (?>[^()]+) | (?p{$re}) )* )}x;
  1527.      The (?p{...}) item interpolates Perl code at run  time,  and
  1528.      in  this  case refers recursively to the pattern in which it
  1529.      appears. Obviously, PCRE cannot support the interpolation of
  1530.      Perl  code.  Instead,  the special item (?R) is provided for
  1531.      the specific case of recursion. This PCRE pattern solves the
  1532.      parentheses  problem (assume the PCRE_EXTENDED option is set
  1533.      so that white space is ignored):
  1534.        ( ( (?>[^()]+) | (?R) )* )
  1535.      First it matches an opening parenthesis. Then it matches any
  1536.      number  of substrings which can either be a sequence of non-
  1537.      parentheses, or a recursive  match  of  the  pattern  itself
  1538.      (i.e. a correctly parenthesized substring). Finally there is
  1539.      a closing parenthesis.
  1540.      This particular example pattern  contains  nested  unlimited
  1541.      repeats, and so the use of a once-only subpattern for match-
  1542.      ing strings of non-parentheses is  important  when  applying
  1543.      the  pattern to strings that do not match. For example, when
  1544.      it is applied to
  1545.        (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
  1546.      it yields "no match" quickly. However, if a  once-only  sub-
  1547.      pattern  is  not  used,  the match runs for a very long time
  1548.      indeed because there are so many different ways the + and  *
  1549.      repeats  can carve up the subject, and all have to be tested
  1550.      before failure can be reported.
  1551.      The values set for any capturing subpatterns are those  from
  1552.      the outermost level of the recursion at which the subpattern
  1553.      value is set. If the pattern above is matched against
  1554.        (ab(cd)ef)
  1555.      the value for the capturing parentheses is  "ef",  which  is
  1556.      the  last  value  taken  on  at the top level. If additional
  1557.      parentheses are added, giving
  1558.        ( ( ( (?>[^()]+) | (?R) )* ) )
  1559.           ^                        ^
  1560.           ^                        ^ the string they  capture  is
  1561.      "ab(cd)ef",  the  contents  of the top level parentheses. If
  1562.      there are more than 15 capturing parentheses in  a  pattern,
  1563.      PCRE  has  to  obtain  extra  memory  to store data during a
  1564.      recursion, which it does by using  pcre_malloc,  freeing  it
  1565.      via  pcre_free  afterwards. If no memory can be obtained, it
  1566.      saves data for the first 15 capturing parentheses  only,  as
  1567.      there is no way to give an out-of-memory error from within a
  1568.      recursion.
  1569. PERFORMANCE
  1570.      Certain items that may appear in patterns are more efficient
  1571.      than  others.  It is more efficient to use a character class
  1572.      like [aeiou] than a set of alternatives such as (a|e|i|o|u).
  1573.      In  general,  the  simplest  construction  that provides the
  1574.      required behaviour is usually the  most  efficient.  Jeffrey
  1575.      Friedl's  book contains a lot of discussion about optimizing
  1576.      regular expressions for efficient performance.
  1577.      When a pattern begins with .* and the PCRE_DOTALL option  is
  1578.      set,  the  pattern  is implicitly anchored by PCRE, since it
  1579.      can match only at the start of a subject string. However, if
  1580.      PCRE_DOTALL  is not set, PCRE cannot make this optimization,
  1581.      because the . metacharacter does not then match  a  newline,
  1582.      and if the subject string contains newlines, the pattern may
  1583.      match from the character immediately following one  of  them
  1584.      instead of from the very start. For example, the pattern
  1585.        (.*) second
  1586.      matches the subject "firstnand second" (where n stands for
  1587.      a newline character) with the first captured substring being
  1588.      "and". In order to do this, PCRE  has  to  retry  the  match
  1589.      starting after every newline in the subject.
  1590.      If you are using such a pattern with subject strings that do
  1591.      not  contain  newlines,  the best performance is obtained by
  1592.      setting PCRE_DOTALL, or starting the  pattern  with  ^.*  to
  1593.      indicate  explicit anchoring. That saves PCRE from having to
  1594.      scan along the subject looking for a newline to restart at.
  1595.      Beware of patterns that contain nested  indefinite  repeats.
  1596.      These  can  take a long time to run when applied to a string
  1597.      that does not match. Consider the pattern fragment
  1598.        (a+)*
  1599.      This can match "aaaa" in 33 different ways, and this  number
  1600.      increases  very  rapidly  as  the string gets longer. (The *
  1601.      repeat can match 0, 1, 2, 3, or 4 times,  and  for  each  of
  1602.      those  cases other than 0, the + repeats can match different
  1603.      numbers of times.) When the remainder of the pattern is such
  1604.      that  the entire match is going to fail, PCRE has in princi-
  1605.      ple to try every possible variation, and this  can  take  an
  1606.      extremely long time.
  1607.      An optimization catches some of the more simple  cases  such
  1608.      as
  1609.        (a+)*b
  1610.      where a literal character follows. Before embarking  on  the
  1611.      standard matching procedure, PCRE checks that there is a "b"
  1612.      later in the subject string, and if there is not,  it  fails
  1613.      the  match  immediately. However, when there is no following
  1614.      literal this optimization cannot be used. You  can  see  the
  1615.      difference by comparing the behaviour of
  1616.        (a+)*d
  1617.      with the pattern above. The former gives  a  failure  almost
  1618.      instantly  when  applied  to a whole line of "a" characters,
  1619.      whereas the latter takes an appreciable  time  with  strings
  1620.      longer than about 20 characters.
  1621. UTF-8 SUPPORT
  1622.      Starting at release 3.3, PCRE has some support for character
  1623.      strings encoded in the UTF-8 format. This is incomplete, and
  1624.      is regarded as experimental. In order to use  it,  you  must
  1625.      configure PCRE to include UTF-8 support in the code, and, in
  1626.      addition, you must call pcre_compile()  with  the  PCRE_UTF8
  1627.      option flag. When you do this, both the pattern and any sub-
  1628.      ject strings that are matched  against  it  are  treated  as
  1629.      UTF-8  strings instead of just strings of bytes, but only in
  1630.      the cases that are mentioned below.
  1631.      If you compile PCRE with UTF-8 support, but do not use it at
  1632.      run  time,  the  library will be a bit bigger, but the addi-
  1633.      tional run time overhead is limited to testing the PCRE_UTF8
  1634.      flag in several places, so should not be very large.
  1635.      PCRE assumes that the strings  it  is  given  contain  valid
  1636.      UTF-8  codes. It does not diagnose invalid UTF-8 strings. If
  1637.      you pass invalid UTF-8 strings  to  PCRE,  the  results  are
  1638.      undefined.
  1639.      Running with PCRE_UTF8 set causes these changes in  the  way
  1640.      PCRE works:
  1641.      1. In a pattern, the  escape  sequence  x{...},  where  the
  1642.      contents of the braces is a string of hexadecimal digits, is
  1643.      interpreted as a UTF-8 character whose code  number  is  the
  1644.      given   hexadecimal  number,  for  example:  x{1234}.  This
  1645.      inserts from one to six  literal  bytes  into  the  pattern,
  1646.      using the UTF-8 encoding. If a non-hexadecimal digit appears
  1647.      between the braces, the item is not recognized.
  1648.      2. The original hexadecimal escape sequence, xhh, generates
  1649.      a two-byte UTF-8 character if its value is greater than 127.
  1650.      3. Repeat quantifiers are NOT correctly handled if they fol-
  1651.      low  a  multibyte character. For example, x{100}* and xc3+
  1652.      do not work. If you want to repeat such characters, you must
  1653.      enclose  them  in  non-capturing  parentheses,  for  example
  1654.      (?:x{100}), at present.
  1655.      4. The dot metacharacter matches one UTF-8 character instead
  1656.      of a single byte.
  1657.      5. Unlike literal UTF-8 characters,  the  dot  metacharacter
  1658.      followed  by  a  repeat quantifier does operate correctly on
  1659.      UTF-8 characters instead of single bytes.
  1660.      4. Although the x{...} escape is permitted in  a  character
  1661.      class,  characters  whose values are greater than 255 cannot
  1662.      be included in a class.
  1663.      5. A class is matched against a UTF-8 character  instead  of
  1664.      just  a  single byte, but it can match only characters whose
  1665.      values are less than 256.  Characters  with  greater  values
  1666.      always fail to match a class.
  1667.      6. Repeated classes work correctly on multiple characters.
  1668.      7. Classes containing just a single character whose value is
  1669.      greater than 127 (but less than 256), for example, [x80] or
  1670.      [^x{93}], do not work because these are optimized into sin-
  1671.      gle  byte  matches.  In the first case, of course, the class
  1672.      brackets are just redundant.
  1673.      8. Lookbehind assertions move backwards in the subject by  a
  1674.      fixed  number  of  characters  instead  of a fixed number of
  1675.      bytes. Simple cases have been tested to work correctly,  but
  1676.      there may be hidden gotchas herein.
  1677.      9. The character types  such  as  d  and  w  do  not  work
  1678.      correctly  with  UTF-8  characters.  They continue to test a
  1679.      single byte.
  1680.      10. Anything not explicitly mentioned here continues to work
  1681.      in bytes rather than in characters.
  1682.      The following UTF-8 features of  Perl  5.6  are  not  imple-
  1683.      mented:
  1684.      1. The escape sequence C to match a single byte.
  1685.      2. The use of Unicode tables and properties and escapes  p,
  1686.      P, and X.
  1687. SAMPLE PROGRAM
  1688.      The code below is a simple, complete demonstration  program,
  1689.      to  get  you started with using PCRE. This code is also sup-
  1690.      plied in the file pcredemo.c in the PCRE distribution.
  1691.      The program compiles the  regular  expression  that  is  its
  1692.      first argument, and matches it against the subject string in
  1693.      its second argument. No options are set, and default charac-
  1694.      ter  tables are used. If matching succeeds, the program out-
  1695.      puts the portion of the subject that matched, together  with
  1696.      the contents of any captured substrings.
  1697.      On a Unix system that has PCRE installed in /usr/local,  you
  1698.      can  compile  the demonstration program using a command like
  1699.      this:
  1700.        gcc   -o    pcredemo    pcredemo.c    -I/usr/local/include
  1701.      -L/usr/local/lib -lpcre
  1702.      Then you can run simple tests like this:
  1703.        ./pcredemo 'cat|dog' 'the cat sat on the mat'
  1704.      Note that there is a much more comprehensive  test  program,
  1705.      called  pcretest,  which  supports  many more facilities for
  1706.      testing regular expressions. The pcredemo  program  is  pro-
  1707.      vided as a simple coding example.
  1708.      On some operating systems (e.g.  Solaris)  you  may  get  an
  1709.      error like this when you try to run pcredemo:
  1710.        ld.so.1: a.out: fatal: libpcre.so.0: open failed: No  such
  1711.      file or directory
  1712.      This is caused by the way shared library  support  works  on
  1713.      those systems. You need to add
  1714.        -R/usr/local/lib
  1715.      to the compile command to get round this problem. Here's the
  1716.      code:
  1717.        #include <stdio.h>
  1718.        #include <string.h>
  1719.        #include <pcre.h>
  1720.        #define OVECCOUNT 30    /* should be a multiple of 3 */
  1721.        int main(int argc, char **argv)
  1722.        {
  1723.        pcre *re;
  1724.        const char *error;
  1725.        int erroffset;
  1726.        int ovector[OVECCOUNT];
  1727.        int rc, i;
  1728.        if (argc != 3)
  1729.          {
  1730.          printf("Two arguments required: a regex and a "
  1731.            "subject stringn");
  1732.          return 1;
  1733.          }
  1734.        /* Compile the regular expression in the first argument */
  1735.        re = pcre_compile(
  1736.          argv[1],     /* the pattern */
  1737.          0,           /* default options */
  1738.          &error,      /* for error message */
  1739.          &erroffset,  /* for error offset */
  1740.          NULL);       /* use default character tables */
  1741.        /* Compilation failed: print the error message and exit */
  1742.        if (re == NULL)
  1743.          {
  1744.          printf("PCRE compilation failed at offset %d: %sn",
  1745.            erroffset, error);
  1746.          return 1;
  1747.          }
  1748.        /* Compilation succeeded: match the subject in the second
  1749.           argument */
  1750.        rc = pcre_exec(
  1751.          re,          /* the compiled pattern */
  1752.          NULL,        /* we didn't study the pattern */
  1753.          argv[2],     /* the subject string */
  1754.          (int)strlen(argv[2]), /* the length of the subject */
  1755.          0,           /* start at offset 0 in the subject */
  1756.          0,           /* default options */
  1757.          ovector,     /* vector for substring information */
  1758.          OVECCOUNT);  /* number of elements in the vector */
  1759.        /* Matching failed: handle error cases */
  1760.        if (rc < 0)
  1761.          {
  1762.          switch(rc)
  1763.            {
  1764.            case PCRE_ERROR_NOMATCH: printf("No matchn"); break;
  1765.            /*
  1766.            Handle other special cases if you like
  1767.            */
  1768.            default: printf("Matching error %dn", rc); break;
  1769.            }
  1770.          return 1;
  1771.          }
  1772.        /* Match succeded */
  1773.        printf("Match succeededn");
  1774.        /* The output vector wasn't big enough */
  1775.        if (rc == 0)
  1776.          {
  1777.          rc = OVECCOUNT/3;
  1778.          printf("ovector only has room for %d captured "
  1779.            substringsn", rc - 1);
  1780.          }
  1781.        /* Show substrings stored in the output vector */
  1782.        for (i = 0; i < rc; i++)
  1783.          {
  1784.          char *substring_start = argv[2] + ovector[2*i];
  1785.          int substring_length = ovector[2*i+1] - ovector[2*i];
  1786.          printf("%2d: %.*sn", i, substring_length,
  1787.            substring_start);
  1788.          }
  1789.        return 0;
  1790.        }
  1791. AUTHOR
  1792.      Philip Hazel <ph10@cam.ac.uk>
  1793.      University Computing Service,
  1794.      New Museums Site,
  1795.      Cambridge CB2 3QG, England.
  1796.      Phone: +44 1223 334714
  1797.      Last updated: 15 August 2001
  1798.      Copyright (c) 1997-2001 University of Cambridge.