home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Internet / onlinetriky / onlinetriky.exe / ethereal-setup-0.10.13.exe / pcrepattern.3.txt < prev    next >
Text File  |  2005-08-19  |  73KB  |  1,629 lines

  1. PCREPATTERN(3)                                   PCREPATTERN(3)
  2.  
  3.  
  4.  
  5.  
  6.  
  7. NAME
  8.        PCRE - Perl-compatible regular expressions
  9.  
  10. PCRE REGULAR EXPRESSION DETAILS
  11.  
  12.        The syntax and semantics of the regular expressions sup-
  13.        ported by PCRE are described below. Regular  expressions
  14.        are  also  described  in the Perl documentation and in a
  15.        number of books, some of which  have  copious  examples.
  16.        Jeffrey  Friedl's  "Mastering Regular Expressions", pub-
  17.        lished by O'Reilly, covers regular expressions in  great
  18.        detail.  This  description of PCRE's regular expressions
  19.        is intended as reference material.
  20.  
  21.        The original operation of PCRE was on  strings  of  one-
  22.        byte  characters. However, there is now also support for
  23.        UTF-8 character strings. To use  this,  you  must  build
  24.        PCRE  to  include UTF-8 support, and then call pcre_com-
  25.        pile() with the PCRE_UTF8 option. How this affects  pat-
  26.        tern  matching  is  mentioned  in  several places below.
  27.        There is also a summary of UTF-8 features in the section
  28.        on UTF-8 support in the main pcre page.
  29.  
  30.        The  remainder  of  this document discusses the patterns
  31.        that are supported by PCRE when its main matching  func-
  32.        tion,  pcre_exec(),  is  used.   From  release 6.0, PCRE
  33.        offers  a  second  matching  function,  pcre_dfa_exec(),
  34.        which  matches  using  a different algorithm that is not
  35.        Perl-compatible. The advantages and disadvantages of the
  36.        alternative function, and how it differs from the normal
  37.        function, are discussed in the pcrematching page.
  38.  
  39.        A regular  expression  is  a  pattern  that  is  matched
  40.        against  a subject string from left to right. Most char-
  41.        acters stand for themselves in a pattern, and match  the
  42.        corresponding  characters  in  the subject. As a trivial
  43.        example, the pattern
  44.  
  45.          The quick brown fox
  46.  
  47.        matches a portion of a subject string that is  identical
  48.        to  itself.  When  caseless  matching  is specified (the
  49.        PCRE_CASELESS option), letters are matched independently
  50.        of case. In UTF-8 mode, PCRE always understands the con-
  51.        cept of case for characters whose values are  less  than
  52.        128,  so caseless matching is always possible. For char-
  53.        acters with higher values, the concept of case  is  sup-
  54.        ported  if  PCRE  is compiled with Unicode property sup-
  55.        port, but not otherwise.  If you want  to  use  caseless
  56.        matching  for  characters 128 and above, you must ensure
  57.        that PCRE is compiled with Unicode property  support  as
  58.        well as with UTF-8 support.
  59.  
  60.        The  power of regular expressions comes from the ability
  61.        to include alternatives and repetitions in the  pattern.
  62.        These are encoded in the pattern by the use of metachar-
  63.        acters, which do not stand for  themselves  but  instead
  64.        are interpreted in some special way.
  65.  
  66.        There  are  two  different sets of metacharacters: those
  67.        that are  recognized  anywhere  in  the  pattern  except
  68.        within square brackets, and those that are recognized in
  69.        square brackets. Outside square brackets, the  metachar-
  70.        acters are as follows:
  71.  
  72.          \      general escape character with several uses
  73.          ^       assert  start of string (or line, in multiline
  74.        mode)
  75.          $      assert end of string  (or  line,  in  multiline
  76.        mode)
  77.          .      match any character except newline (by default)
  78.          [      start character class definition
  79.          |      start of alternative branch
  80.          (      start subpattern
  81.          )      end subpattern
  82.          ?      extends the meaning of (
  83.                 also 0 or 1 quantifier
  84.                 also quantifier minimizer
  85.          *      0 or more quantifier
  86.          +      1 or more quantifier
  87.                 also "possessive quantifier"
  88.          {      start min/max quantifier
  89.  
  90.        Part of a pattern that is in square brackets is called a
  91.        "character   class".  In  a  character  class  the  only
  92.        metacharacters are:
  93.  
  94.          \      general escape character
  95.          ^      negate the class, but only if the first charac-
  96.        ter
  97.          -      indicates character range
  98.          [       POSIX  character  class  (only  if followed by
  99.        POSIX
  100.                   syntax)
  101.          ]      terminates the character class
  102.  
  103.        The following sections describe the use of each  of  the
  104.        metacharacters.
  105.  
  106. BACKSLASH
  107.  
  108.        The backslash character has several uses. Firstly, if it
  109.        is followed by a non-alphanumeric  character,  it  takes
  110.        away  any  special meaning that character may have. This
  111.        use of backslash as an  escape  character  applies  both
  112.        inside and outside character classes.
  113.  
  114.        For  example,  if  you  want to match a * character, you
  115.        write \* in the pattern.  This escaping  action  applies
  116.        whether  or  not the following character would otherwise
  117.        be interpreted as a metacharacter, so it is always  safe
  118.        to  precede a non-alphanumeric with backslash to specify
  119.        that it stands for itself. In particular, if you want to
  120.        match a backslash, you write \\.
  121.  
  122.        If  a pattern is compiled with the PCRE_EXTENDED option,
  123.        whitespace in the pattern (other  than  in  a  character
  124.        class)  and  characters  between a # outside a character
  125.        class and the next newline  character  are  ignored.  An
  126.        escaping  backslash  can be used to include a whitespace
  127.        or # character as part of the pattern.
  128.  
  129.        If you  want  to  remove  the  special  meaning  from  a
  130.        sequence  of  characters,  you can do so by putting them
  131.        between \Q and \E. This is different from Perl in that $
  132.        and  @  are  handled as literals in \Q...\E sequences in
  133.        PCRE, whereas in Perl, $ and @ cause variable interpola-
  134.        tion. Note the following examples:
  135.  
  136.          Pattern            PCRE matches   Perl matches
  137.  
  138.          \Qabc$xyz\E        abc$xyz        abc followed by the
  139.                                              contents of $xyz
  140.          \Qabc\$xyz\E       abc\$xyz       abc\$xyz
  141.          \Qabc\E\$\Qxyz\E   abc$xyz        abc$xyz
  142.  
  143.        The  \Q...\E sequence is recognized both inside and out-
  144.        side character classes.
  145.  
  146.    Non-printing characters
  147.  
  148.        A second use of backslash provides  a  way  of  encoding
  149.        non-printing characters in patterns in a visible manner.
  150.        There is no restriction on the appearance of  non-print-
  151.        ing  characters,  apart from the binary zero that termi-
  152.        nates a pattern, but when a pattern is being prepared by
  153.        text  editing,  it  is  usually easier to use one of the
  154.        following escape sequences than the binary character  it
  155.        represents:
  156.  
  157.          \a        alarm, that is, the BEL character (hex 07)
  158.          \cx       "control-x", where x is any character
  159.          \e        escape (hex 1B)
  160.          \f        formfeed (hex 0C)
  161.          \n        newline (hex 0A)
  162.          \r        carriage return (hex 0D)
  163.          \t        tab (hex 09)
  164.          \ddd      character with octal code ddd, or backrefer-
  165.        ence
  166.          \xhh      character with hex code hh
  167.          \x{hhh..} character with hex code hhh...  (UTF-8  mode
  168.        only)
  169.  
  170.        The precise effect of \cx is as follows: if x is a lower
  171.        case letter, it is converted to upper case. Then  bit  6
  172.        of the character (hex 40) is inverted.  Thus \cz becomes
  173.        hex 1A, but \c{ becomes hex 3B, while  \c;  becomes  hex
  174.        7B.
  175.  
  176.        After  \x,  from zero to two hexadecimal digits are read
  177.        (letters can be in upper or lower case). In UTF-8  mode,
  178.        any  number of hexadecimal digits may appear between \x{
  179.        and }, but the value of the character code must be  less
  180.        than  2**31  (that  is, the maximum hexadecimal value is
  181.        7FFFFFFF). If characters other than  hexadecimal  digits
  182.        appear  between \x{ and }, or if there is no terminating
  183.        }, this form of escape is not recognized.  Instead,  the
  184.        initial  \x  will  be interpreted as a basic hexadecimal
  185.        escape, with no following  digits,  giving  a  character
  186.        whose value is zero.
  187.  
  188.        Characters  whose  value is less than 256 can be defined
  189.        by either of the two syntaxes for \x  when  PCRE  is  in
  190.        UTF-8  mode.  There is no difference in the way they are
  191.        handled. For  example,  \xdc  is  exactly  the  same  as
  192.        \x{dc}.
  193.  
  194.        After  \0  up  to  two further octal digits are read. In
  195.        both cases, if there are fewer  than  two  digits,  just
  196.        those  that  are  present  are  used.  Thus the sequence
  197.        \0\x\07 specifies two binary zeros  followed  by  a  BEL
  198.        character  (code value 7). Make sure you supply two dig-
  199.        its after the initial zero if the pattern character that
  200.        follows is itself an octal digit.
  201.  
  202.        The  handling  of  a backslash followed by a digit other
  203.        than 0 is complicated.  Outside a character class,  PCRE
  204.        reads  it  and any following digits as a decimal number.
  205.        If the number is less than 10, or if there have been  at
  206.        least  that  many previous capturing left parentheses in
  207.        the expression, the entire sequence is taken as  a  back
  208.        reference.  A  description  of  how  this works is given
  209.        later, following the discussion of parenthesized subpat-
  210.        terns.
  211.  
  212.        Inside  a  character  class, or if the decimal number is
  213.        greater than 9 and there have not been that many captur-
  214.        ing  subpatterns, PCRE re-reads up to three octal digits
  215.        following the backslash, and  generates  a  single  byte
  216.        from the least significant 8 bits of the value. Any sub-
  217.        sequent digits stand for themselves.  For example:
  218.  
  219.          \040   is another way of writing a space
  220.          \40    is the same, provided there are fewer than 40
  221.                    previous capturing subpatterns
  222.          \7     is always a back reference
  223.          \11    might be a back reference, or another way of
  224.                    writing a tab
  225.          \011   is always a tab
  226.          \0113  is a tab followed by the character "3"
  227.          \113   might be a back reference, otherwise the
  228.                    character with octal code 113
  229.          \377   might be a back reference, otherwise
  230.                    the byte consisting entirely of 1 bits
  231.          \81    is either a back reference, or a binary zero
  232.                    followed by the two characters "8" and "1"
  233.  
  234.        Note that octal values of 100 or  greater  must  not  be
  235.        introduced by a leading zero, because no more than three
  236.        octal digits are ever read.
  237.  
  238.        All the sequences that define a single byte value  or  a
  239.        single  UTF-8 character (in UTF-8 mode) can be used both
  240.        inside  and  outside  character  classes.  In  addition,
  241.        inside a character class, the sequence \b is interpreted
  242.        as the backspace character (hex 08), and the sequence \X
  243.        is interpreted as the character "X". Outside a character
  244.        class, these  sequences  have  different  meanings  (see
  245.        below).
  246.  
  247.    Generic character types
  248.  
  249.        The  third  use  of  backslash is for specifying generic
  250.        character types. The following are always recognized:
  251.  
  252.          \d     any decimal digit
  253.          \D     any character that is not a decimal digit
  254.          \s     any whitespace character
  255.          \S     any character that is not a whitespace  charac-
  256.        ter
  257.          \w     any "word" character
  258.          \W     any "non-word" character
  259.  
  260.        Each  pair  of  escape sequences partitions the complete
  261.        set of characters into  two  disjoint  sets.  Any  given
  262.        character matches one, and only one, of each pair.
  263.  
  264.        These  character  type  sequences can appear both inside
  265.        and outside character classes. They each match one char-
  266.        acter  of  the appropriate type. If the current matching
  267.        point is at the end of the subject string, all  of  them
  268.        fail, since there is no character to match.
  269.  
  270.        For  compatibility  with  Perl, \s does not match the VT
  271.        character (code 11).  This makes it different  from  the
  272.        the  POSIX  "space" class. The \s characters are HT (9),
  273.        LF (10), FF (12), CR (13), and space (32).
  274.  
  275.        A "word" character is an  underscore  or  any  character
  276.        less  than 256 that is a letter or digit. The definition
  277.        of letters and digits is controlled by PCRE's low-valued
  278.        character tables, and may vary if locale-specific match-
  279.        ing is taking place (see "Locale support" in the pcreapi
  280.        page). For example, in the "fr_FR" (French) locale, some
  281.        character codes greater than 128 are used  for  accented
  282.        letters, and these are matched by \w.
  283.  
  284.        In  UTF-8  mode, characters with values greater than 128
  285.        never match \d, \s, or \w, and always match \D, \S,  and
  286.        \W.  This  is  true even when Unicode character property
  287.        support is available.
  288.  
  289.    Unicode character properties
  290.  
  291.        When PCRE is built with Unicode character property  sup-
  292.        port, three additional escape sequences to match generic
  293.        character  types  are  available  when  UTF-8  mode   is
  294.        selected. They are:
  295.  
  296.         \p{xx}   a character with the xx property
  297.         \P{xx}   a character without the xx property
  298.         \X       an extended Unicode sequence
  299.  
  300.        The  property  names represented by xx above are limited
  301.        to the Unicode general category properties. Each charac-
  302.        ter  has  exactly one such property, specified by a two-
  303.        letter abbreviation. For compatibility with Perl,  nega-
  304.        tion  can be specified by including a circumflex between
  305.        the opening brace and the property  name.  For  example,
  306.        \p{^Lu} is the same as \P{Lu}.
  307.  
  308.        If  only  one  letter  is  specified  with  \p or \P, it
  309.        includes all the properties that start with that letter.
  310.        In  this  case,  in  the  absence of negation, the curly
  311.        brackets in the escape sequence are optional; these  two
  312.        examples have the same effect:
  313.  
  314.          \p{L}
  315.          \pL
  316.  
  317.        The following property codes are supported:
  318.  
  319.          C     Other
  320.          Cc    Control
  321.          Cf    Format
  322.          Cn    Unassigned
  323.          Co    Private use
  324.          Cs    Surrogate
  325.  
  326.          L     Letter
  327.          Ll    Lower case letter
  328.          Lm    Modifier letter
  329.          Lo    Other letter
  330.          Lt    Title case letter
  331.          Lu    Upper case letter
  332.  
  333.          M     Mark
  334.          Mc    Spacing mark
  335.          Me    Enclosing mark
  336.          Mn    Non-spacing mark
  337.  
  338.          N     Number
  339.          Nd    Decimal number
  340.          Nl    Letter number
  341.          No    Other number
  342.  
  343.          P     Punctuation
  344.          Pc    Connector punctuation
  345.          Pd    Dash punctuation
  346.          Pe    Close punctuation
  347.          Pf    Final punctuation
  348.          Pi    Initial punctuation
  349.          Po    Other punctuation
  350.          Ps    Open punctuation
  351.  
  352.          S     Symbol
  353.          Sc    Currency symbol
  354.          Sk    Modifier symbol
  355.          Sm    Mathematical symbol
  356.          So    Other symbol
  357.  
  358.          Z     Separator
  359.          Zl    Line separator
  360.          Zp    Paragraph separator
  361.          Zs    Space separator
  362.  
  363.        Extended  properties  such  as "Greek" or "InMusicalSym-
  364.        bols" are not supported by PCRE.
  365.  
  366.        Specifying  caseless  matching  does  not  affect  these
  367.        escape  sequences.  For  example,  \p{Lu} always matches
  368.        only upper case letters.
  369.  
  370.        The \X escape matches any number of  Unicode  characters
  371.        that form an extended Unicode sequence. \X is equivalent
  372.        to
  373.  
  374.          (?>\PM\pM*)
  375.  
  376.        That is, it matches a character without the "mark" prop-
  377.        erty,  followed  by  zero  or  more  characters with the
  378.        "mark" property, and treats the sequence  as  an  atomic
  379.        group  (see below).  Characters with the "mark" property
  380.        are typically accents that affect the preceding  charac-
  381.        ter.
  382.  
  383.        Matching  characters  by  Unicode  property is not fast,
  384.        because PCRE has to search  a  structure  that  contains
  385.        data  for  over fifteen thousand characters. That is why
  386.        the traditional escape sequences such as \d  and  \w  do
  387.        not use Unicode properties in PCRE.
  388.  
  389.    Simple assertions
  390.  
  391.        The fourth use of backslash is for certain simple asser-
  392.        tions. An assertion specifies a condition that has to be
  393.        met  at a particular point in a match, without consuming
  394.        any characters from the subject string. The use of  sub-
  395.        patterns  for  more  complicated assertions is described
  396.        below.  The backslashed assertions are:
  397.  
  398.          \b     matches at a word boundary
  399.          \B     matches when not at a word boundary
  400.          \A     matches at start of subject
  401.          \Z     matches at end of subject or before newline  at
  402.        end
  403.          \z     matches at end of subject
  404.          \G     matches at first matching position in subject
  405.  
  406.        These  assertions  may  not  appear in character classes
  407.        (but note that \b has a different  meaning,  namely  the
  408.        backspace character, inside a character class).
  409.  
  410.        A  word  boundary  is  a  position in the subject string
  411.        where the current character and the  previous  character
  412.        do  not both match \w or \W (i.e. one matches \w and the
  413.        other matches \W), or the start or end of the string  if
  414.        the first or last character matches \w, respectively.
  415.  
  416.        The  \A,  \Z,  and  \z assertions differ from the tradi-
  417.        tional circumflex and dollar (described in the next sec-
  418.        tion) in that they only ever match at the very start and
  419.        end of the subject string,  whatever  options  are  set.
  420.        Thus,  they  are  independent  of  multiline mode. These
  421.        three assertions are not affected by the PCRE_NOTBOL  or
  422.        PCRE_NOTEOL  options, which affect only the behaviour of
  423.        the circumflex and dollar  metacharacters.  However,  if
  424.        the  startoffset  argument  of  pcre_exec() is non-zero,
  425.        indicating that matching is to start at  a  point  other
  426.        than  the  beginning of the subject, \A can never match.
  427.        The difference between \Z and  \z  is  that  \Z  matches
  428.        before  a  newline  that  is  the  last character of the
  429.        string as well as at the end of the string,  whereas  \z
  430.        matches only at the end.
  431.  
  432.        The  \G assertion is true only when the current matching
  433.        position is at the start point of the match,  as  speci-
  434.        fied by the startoffset argument of pcre_exec(). It dif-
  435.        fers from \A when the value of startoffset is  non-zero.
  436.        By  calling  pcre_exec() multiple times with appropriate
  437.        arguments, you can mimic Perl's /g option, and it is  in
  438.        this kind of implementation where \G can be useful.
  439.  
  440.        Note,  however, that PCRE's interpretation of \G, as the
  441.        start of the current match,  is  subtly  different  from
  442.        Perl's,  which  defines  it  as  the end of the previous
  443.        match. In Perl, these can be different when  the  previ-
  444.        ously  matched  string was empty. Because PCRE does just
  445.        one match at a time, it cannot reproduce this behaviour.
  446.  
  447.        If  all the alternatives of a pattern begin with \G, the
  448.        expression is anchored to the starting  match  position,
  449.        and  the  "anchored" flag is set in the compiled regular
  450.        expression.
  451.  
  452. CIRCUMFLEX AND DOLLAR
  453.  
  454.        Outside a character class, in the default matching mode,
  455.        the  circumflex  character  is an assertion that is true
  456.        only if the current matching point is at  the  start  of
  457.        the  subject  string.  If  the  startoffset  argument of
  458.        pcre_exec() is non-zero, circumflex can never  match  if
  459.        the  PCRE_MULTILINE  option is unset. Inside a character
  460.        class, circumflex has an entirely different meaning (see
  461.        below).
  462.  
  463.        Circumflex  need  not be the first character of the pat-
  464.        tern if a number of alternatives are  involved,  but  it
  465.        should  be  the first thing in each alternative in which
  466.        it appears if the pattern is ever to match that  branch.
  467.        If  all  possible  alternatives start with a circumflex,
  468.        that is, if the pattern is constrained to match only  at
  469.        the start of the subject, it is said to be an "anchored"
  470.        pattern. (There are also other constructs that can cause
  471.        a pattern to be anchored.)
  472.  
  473.        A  dollar character is an assertion that is true only if
  474.        the current matching point is at the end of the  subject
  475.        string,  or  immediately before a newline character that
  476.        is the last character in the string (by default). Dollar
  477.        need  not be the last character of the pattern if a num-
  478.        ber of alternatives are involved, but it should  be  the
  479.        last item in any branch in which it appears.  Dollar has
  480.        no special meaning in a character class.
  481.  
  482.        The meaning of dollar can be changed so that it  matches
  483.        only  at  the  very  end  of  the string, by setting the
  484.        PCRE_DOLLAR_ENDONLY option at compile  time.  This  does
  485.        not affect the \Z assertion.
  486.  
  487.        The meanings of the circumflex and dollar characters are
  488.        changed if the PCRE_MULTILINE option is set.  When  this
  489.        is  the  case,  they match immediately after and immedi-
  490.        ately   before   an    internal    newline    character,
  491.        respectively,  in  addition to matching at the start and
  492.        end of the subject  string.  For  example,  the  pattern
  493.        /^abc$/  matches the subject string "def\nabc" (where \n
  494.        represents a newline character) in multiline  mode,  but
  495.        not otherwise.  Consequently, patterns that are anchored
  496.        in single line mode because all branches  start  with  ^
  497.        are not anchored in multiline mode, and a match for cir-
  498.        cumflex is possible when  the  startoffset  argument  of
  499.        pcre_exec()  is non-zero. The PCRE_DOLLAR_ENDONLY option
  500.        is ignored if PCRE_MULTILINE is set.
  501.  
  502.        Note that the sequences \A, \Z, and \z can  be  used  to
  503.        match  the  start  and end of the subject in both modes,
  504.        and if all branches of a pattern start  with  \A  it  is
  505.        always anchored, whether PCRE_MULTILINE is set or not.
  506.  
  507. FULL STOP (PERIOD, DOT)
  508.  
  509.        Outside  a character class, a dot in the pattern matches
  510.        any one character in the subject, including a non-print-
  511.        ing  character,  but not (by default) newline.  In UTF-8
  512.        mode, a dot matches any UTF-8 character, which might  be
  513.        more than one byte long, except (by default) newline. If
  514.        the PCRE_DOTALL option is set, dots  match  newlines  as
  515.        well. The handling of dot is entirely independent of the
  516.        handling of circumflex and dollar, the only relationship
  517.        being that they both involve newline characters. Dot has
  518.        no special meaning in a character class.
  519.  
  520. MATCHING A SINGLE BYTE
  521.  
  522.        Outside  a  character  class,  the  escape  sequence  \C
  523.        matches  any  one  byte,  both in and out of UTF-8 mode.
  524.        Unlike a dot, it can match a  newline.  The  feature  is
  525.        provided  in  Perl in order to match individual bytes in
  526.        UTF-8 mode. Because it breaks up UTF-8  characters  into
  527.        individual  bytes,  what  remains in the string may be a
  528.        malformed UTF-8 string. For this reason, the  \C  escape
  529.        sequence is best avoided.
  530.  
  531.        PCRE  does  not  allow \C to appear in lookbehind asser-
  532.        tions (described below),  because  in  UTF-8  mode  this
  533.        would  make it impossible to calculate the length of the
  534.        lookbehind.
  535.  
  536. SQUARE BRACKETS AND CHARACTER CLASSES
  537.  
  538.        An opening square bracket introduces a character  class,
  539.        terminated by a closing square bracket. A closing square
  540.        bracket on its own is not special. If a  closing  square
  541.        bracket  is required as a member of the class, it should
  542.        be the first data character in the class (after an  ini-
  543.        tial  circumflex,  if  present)  or escaped with a back-
  544.        slash.
  545.  
  546.        A character class matches a single character in the sub-
  547.        ject.  In UTF-8 mode, the character may occupy more than
  548.        one byte. A matched character must  be  in  the  set  of
  549.        characters  defined by the class, unless the first char-
  550.        acter in the class definition is a circumflex, in  which
  551.        case  the  subject  character  must  not  be  in the set
  552.        defined by  the  class.  If  a  circumflex  is  actually
  553.        required  as a member of the class, ensure it is not the
  554.        first character, or escape it with a backslash.
  555.  
  556.        For example, the character  class  [aeiou]  matches  any
  557.        lower  case  vowel, while [^aeiou] matches any character
  558.        that is not a lower case vowel. Note that  a  circumflex
  559.        is just a convenient notation for specifying the charac-
  560.        ters that are in the class by enumerating those that are
  561.        not.  A  class  that  starts with a circumflex is not an
  562.        assertion: it still consumes a character from  the  sub-
  563.        ject  string,  and  therefore  it  fails  if the current
  564.        pointer is at the end of the string.
  565.  
  566.        In UTF-8 mode, characters with values greater  than  255
  567.        can be included in a class as a literal string of bytes,
  568.        or by using the \x{ escaping mechanism.
  569.  
  570.        When caseless matching is set, any letters  in  a  class
  571.        represent both their upper case and lower case versions,
  572.        so for example, a caseless [aeiou] matches "A"  as  well
  573.        as  "a",  and  a  caseless  [^aeiou] does not match "A",
  574.        whereas a caseful version would.  In  UTF-8  mode,  PCRE
  575.        always  understands  the  concept of case for characters
  576.        whose values are less than 128, so caseless matching  is
  577.        always  possible. For characters with higher values, the
  578.        concept of case is supported if PCRE  is  compiled  with
  579.        Unicode  property  support,  but  not otherwise.  If you
  580.        want to use caseless matching  for  characters  128  and
  581.        above,  you  must ensure that PCRE is compiled with Uni-
  582.        code property support as well as with UTF-8 support.
  583.  
  584.        The newline character is never treated  in  any  special
  585.        way  in  character  classes, whatever the setting of the
  586.        PCRE_DOTALL or PCRE_MULTILINE options is. A  class  such
  587.        as [^a] will always match a newline.
  588.  
  589.        The  minus  (hyphen)  character can be used to specify a
  590.        range of characters in a character class.  For  example,
  591.        [d-m]  matches any letter between d and m, inclusive. If
  592.        a minus character is required in a  class,  it  must  be
  593.        escaped  with  a backslash or appear in a position where
  594.        it cannot be interpreted as indicating  a  range,  typi-
  595.        cally as the first or last character in the class.
  596.  
  597.        It  is not possible to have the literal character "]" as
  598.        the end character of a range. A pattern such as  [W-]46]
  599.        is  interpreted  as  a  class of two characters ("W" and
  600.        "-") followed by a literal string  "46]",  so  it  would
  601.        match  "W46]"  or "-46]". However, if the "]" is escaped
  602.        with a backslash it is interpreted as the end of  range,
  603.        so [W-\]46] is interpreted as a class containing a range
  604.        followed by two other characters. The octal or hexadeci-
  605.        mal  representation  of  "]"  can  also be used to end a
  606.        range.
  607.  
  608.        Ranges operate in the collating  sequence  of  character
  609.        values.  They  can also be used for characters specified
  610.        numerically, for example  [\000-\037].  In  UTF-8  mode,
  611.        ranges  can  include characters whose values are greater
  612.        than 255, for example [\x{100}-\x{2ff}].
  613.  
  614.        If a range that includes letters is used  when  caseless
  615.        matching  is set, it matches the letters in either case.
  616.        For example, [W-c] is  equivalent  to  [][\\^_`wxyzabc],
  617.        matched  caselessly, and in non-UTF-8 mode, if character
  618.        tables for the "fr_FR" locale are  in  use,  [\xc8-\xcb]
  619.        matches  accented  E  characters in both cases. In UTF-8
  620.        mode, PCRE supports the concept of case  for  characters
  621.        with  values  greater  than 128 only when it is compiled
  622.        with Unicode property support.
  623.  
  624.        The character types \d, \D, \p, \P, \s, \S, \w,  and  \W
  625.        may  also appear in a character class, and add the char-
  626.        acters that  they  match  to  the  class.  For  example,
  627.        [\dABCDEF]  matches  any hexadecimal digit. A circumflex
  628.        can conveniently be used with the upper  case  character
  629.        types  to  specify  a  more restricted set of characters
  630.        than the matching lower  case  type.  For  example,  the
  631.        class [^\W_] matches any letter or digit, but not under-
  632.        score.
  633.  
  634.        The only metacharacters that are recognized in character
  635.        classes  are  backslash,  hyphen  (only  where it can be
  636.        interpreted as specifying a range), circumflex (only  at
  637.        the  start), opening square bracket (only when it can be
  638.        interpreted as introducing a POSIX class name - see  the
  639.        next   section),  and  the  terminating  closing  square
  640.        bracket. However, escaping other non-alphanumeric  char-
  641.        acters does no harm.
  642.  
  643. POSIX CHARACTER CLASSES
  644.  
  645.        Perl  supports the POSIX notation for character classes.
  646.        This uses names enclosed by [: and :] within the enclos-
  647.        ing  square  brackets. PCRE also supports this notation.
  648.        For example,
  649.  
  650.          [01[:alpha:]%]
  651.  
  652.        matches "0", "1", any alphabetic character, or "%".  The
  653.        supported class names are
  654.  
  655.          alnum    letters and digits
  656.          alpha    letters
  657.          ascii    character codes 0 - 127
  658.          blank    space or tab only
  659.          cntrl    control characters
  660.          digit    decimal digits (same as \d)
  661.          graph    printing characters, excluding space
  662.          lower    lower case letters
  663.          print    printing characters, including space
  664.          punct     printing  characters,  excluding letters and
  665.        digits
  666.          space    white space (not quite the same as \s)
  667.          upper    upper case letters
  668.          word     "word" characters (same as \w)
  669.          xdigit   hexadecimal digits
  670.  
  671.        The "space" characters are HT (9), LF (10), VT (11),  FF
  672.        (12),  CR  (13),  and  space (32). Notice that this list
  673.        includes the VT character (code 11). This makes  "space"
  674.        different  to  \s,  which  does not include VT (for Perl
  675.        compatibility).
  676.  
  677.        The name "word" is a Perl extension, and  "blank"  is  a
  678.        GNU  extension  from Perl 5.8. Another Perl extension is
  679.        negation, which is indicated by a ^ character after  the
  680.        colon. For example,
  681.  
  682.          [12[:^digit:]]
  683.  
  684.        matches "1", "2", or any non-digit. PCRE (and Perl) also
  685.        recognize the POSIX syntax [.ch.] and [=ch=] where  "ch"
  686.        is  a  "collating element", but these are not supported,
  687.        and an error is given if they are encountered.
  688.  
  689.        In UTF-8 mode, characters with values greater  than  128
  690.        do not match any of the POSIX character classes.
  691.  
  692. VERTICAL BAR
  693.  
  694.        Vertical bar characters are used to separate alternative
  695.        patterns. For example, the pattern
  696.  
  697.          gilbert|sullivan
  698.  
  699.        matches either "gilbert" or "sullivan".  Any  number  of
  700.        alternatives  may  appear,  and  an empty alternative is
  701.        permitted (matching the  empty  string).   The  matching
  702.        process  tries  each  alternative  in turn, from left to
  703.        right, and the first one that succeeds is used.  If  the
  704.        alternatives  are  within  a subpattern (defined below),
  705.        "succeeds" means matching the rest of the  main  pattern
  706.        as well as the alternative in the subpattern.
  707.  
  708. INTERNAL OPTION SETTING
  709.  
  710.        The   settings  of  the  PCRE_CASELESS,  PCRE_MULTILINE,
  711.        PCRE_DOTALL, and PCRE_EXTENDED options  can  be  changed
  712.        from  within  the  pattern  by a sequence of Perl option
  713.        letters enclosed between "(?" and ")". The  option  let-
  714.        ters are
  715.  
  716.          i  for PCRE_CASELESS
  717.          m  for PCRE_MULTILINE
  718.          s  for PCRE_DOTALL
  719.          x  for PCRE_EXTENDED
  720.  
  721.        For example, (?im) sets caseless, multiline matching. It
  722.        is also possible to unset these options by preceding the
  723.        letter  with a hyphen, and a combined setting and unset-
  724.        ting such as  (?im-sx),  which  sets  PCRE_CASELESS  and
  725.        PCRE_MULTILINE    while    unsetting   PCRE_DOTALL   and
  726.        PCRE_EXTENDED, is also permitted. If  a  letter  appears
  727.        both before and after the hyphen, the option is unset.
  728.  
  729.        When  an option change occurs at top level (that is, not
  730.        inside subpattern parentheses), the  change  applies  to
  731.        the  remainder  of  the  pattern  that  follows.  If the
  732.        change is placed right at the start of a  pattern,  PCRE
  733.        extracts  it into the global options (and it will there-
  734.        fore show up in data extracted  by  the  pcre_fullinfo()
  735.        function).
  736.  
  737.        An  option  change within a subpattern affects only that
  738.        part of the current pattern that follows it, so
  739.  
  740.          (a(?i)b)c
  741.  
  742.        matches abc and  aBc  and  no  other  strings  (assuming
  743.        PCRE_CASELESS  is not used).  By this means, options can
  744.        be made to have different settings in different parts of
  745.        the  pattern.  Any  changes  made  in one alternative do
  746.        carry on into subsequent branches within the  same  sub-
  747.        pattern. For example,
  748.  
  749.          (a(?i)b|c)
  750.  
  751.        matches  "ab",  "aB",  "c",  and  "C",  even though when
  752.        matching "C" the first branch is  abandoned  before  the
  753.        option  setting.  This  is because the effects of option
  754.        settings happen at compile time.  There  would  be  some
  755.        very weird behaviour otherwise.
  756.  
  757.        The  PCRE-specific  options PCRE_UNGREEDY and PCRE_EXTRA
  758.        can be changed in the same way  as  the  Perl-compatible
  759.        options  by  using  the characters U and X respectively.
  760.        The (?X) flag setting is special in that it must  always
  761.        occur  earlier in the pattern than any of the additional
  762.        features it turns on, even when it is at top  level.  It
  763.        is best to put it at the start.
  764.  
  765. SUBPATTERNS
  766.  
  767.        Subpatterns  are  delimited by parentheses (round brack-
  768.        ets), which can be nested.  Turning part  of  a  pattern
  769.        into a subpattern does two things:
  770.  
  771.        1.  It localizes a set of alternatives. For example, the
  772.        pattern
  773.  
  774.          cat(aract|erpillar|)
  775.  
  776.        matches one of the words "cat", "cataract",  or  "cater-
  777.        pillar".   Without   the  parentheses,  it  would  match
  778.        "cataract", "erpillar" or the empty string.
  779.  
  780.        2. It sets up the subpattern as a capturing  subpattern.
  781.        This  means  that,  when the whole pattern matches, that
  782.        portion of the subject string that matched  the  subpat-
  783.        tern  is passed back to the caller via the ovector argu-
  784.        ment of pcre_exec().  Opening  parentheses  are  counted
  785.        from  left  to right (starting from 1) to obtain numbers
  786.        for the capturing subpatterns.
  787.  
  788.        For example, if the string "the  red  king"  is  matched
  789.        against the pattern
  790.  
  791.          the ((red|white) (king|queen))
  792.  
  793.        the  captured  substrings  are  "red  king",  "red", and
  794.        "king", and are numbered 1, 2, and 3, respectively.
  795.  
  796.        The fact that plain parentheses fulfil two functions  is
  797.        not always helpful.  There are often times when a group-
  798.        ing subpattern is required without a capturing  require-
  799.        ment.  If  an opening parenthesis is followed by a ques-
  800.        tion mark and a colon, the subpattern does  not  do  any
  801.        capturing,  and is not counted when computing the number
  802.        of any subsequent capturing subpatterns. For example, if
  803.        the string "the white queen" is matched against the pat-
  804.        tern
  805.  
  806.          the ((?:red|white) (king|queen))
  807.  
  808.        the captured substrings are "white queen"  and  "queen",
  809.        and  are numbered 1 and 2. The maximum number of captur-
  810.        ing subpatterns is 65535, and the maximum depth of nest-
  811.        ing  of  all subpatterns, both capturing and non-captur-
  812.        ing, is 200.
  813.  
  814.        As a convenient shorthand, if any  option  settings  are
  815.        required at the start of a non-capturing subpattern, the
  816.        option letters may appear between the "?" and  the  ":".
  817.        Thus the two patterns
  818.  
  819.          (?i:saturday|sunday)
  820.          (?:(?i)saturday|sunday)
  821.  
  822.        match  exactly the same set of strings. Because alterna-
  823.        tive branches are tried from left to right, and  options
  824.        are  not  reset  until  the  end  of  the  subpattern is
  825.        reached, an option setting in  one  branch  does  affect
  826.        subsequent  branches,  so the above patterns match "SUN-
  827.        DAY" as well as "Saturday".
  828.  
  829. NAMED SUBPATTERNS
  830.  
  831.        Identifying capturing parentheses by number  is  simple,
  832.        but  it can be very hard to keep track of the numbers in
  833.        complicated  regular  expressions.  Furthermore,  if  an
  834.        expression  is modified, the numbers may change. To help
  835.        with this difficulty, PCRE supports the naming  of  sub-
  836.        patterns,  something  that  Perl  does  not provide. The
  837.        Python syntax (?P<name>...) is used.  Names  consist  of
  838.        alphanumeric  characters  and  underscores,  and must be
  839.        unique within a pattern.
  840.  
  841.        Named capturing parentheses are still allocated  numbers
  842.        as  well  as names. The PCRE API provides function calls
  843.        for extracting the name-to-number translation table from
  844.        a compiled pattern. There is also a convenience function
  845.        for extracting a captured substring by name. For further
  846.        details see the pcreapi documentation.
  847.  
  848. REPETITION
  849.  
  850.        Repetition is specified by quantifiers, which can follow
  851.        any of the following items:
  852.  
  853.          a literal data character
  854.          the . metacharacter
  855.          the \C escape sequence
  856.          the \X escape sequence (in  UTF-8  mode  with  Unicode
  857.        properties)
  858.          an escape such as \d that matches a single character
  859.          a character class
  860.          a back reference (see next section)
  861.          a parenthesized subpattern (unless it is an assertion)
  862.  
  863.        The general repetition quantifier  specifies  a  minimum
  864.        and  maximum  number of permitted matches, by giving the
  865.        two numbers in curly brackets (braces), separated  by  a
  866.        comma.  The  numbers  must  be  less than 65536, and the
  867.        first must be less than or  equal  to  the  second.  For
  868.        example:
  869.  
  870.          z{2,4}
  871.  
  872.        matches  "zz",  "zzz", or "zzzz". A closing brace on its
  873.        own is not a special character. If the second number  is
  874.        omitted,  but  the  comma  is present, there is no upper
  875.        limit; if the second number and the comma are both omit-
  876.        ted,   the  quantifier  specifies  an  exact  number  of
  877.        required matches. Thus
  878.  
  879.          [aeiou]{3,}
  880.  
  881.        matches at least 3 successive vowels, but may match many
  882.        more, while
  883.  
  884.          \d{8}
  885.  
  886.        matches  exactly 8 digits. An opening curly bracket that
  887.        appears in a position where a quantifier is not allowed,
  888.        or  one  that does not match the syntax of a quantifier,
  889.        is taken as a literal character. For  example,  {,6}  is
  890.        not  a  quantifier, but a literal string of four charac-
  891.        ters.
  892.  
  893.        In UTF-8 mode, quantifiers  apply  to  UTF-8  characters
  894.        rather  than  to  individual  bytes.  Thus, for example,
  895.        \x{100}{2} matches two UTF-8 characters, each  of  which
  896.        is  represented  by a two-byte sequence. Similarly, when
  897.        Unicode property support  is  available,  \X{3}  matches
  898.        three  Unicode  extended sequences, each of which may be
  899.        several  bytes  long  (and  they  may  be  of  different
  900.        lengths).
  901.  
  902.        The  quantifier {0} is permitted, causing the expression
  903.        to behave as if the previous  item  and  the  quantifier
  904.        were not present.
  905.  
  906.        For convenience (and historical compatibility) the three
  907.        most common quantifiers have single-character  abbrevia-
  908.        tions:
  909.  
  910.          *    is equivalent to {0,}
  911.          +    is equivalent to {1,}
  912.          ?    is equivalent to {0,1}
  913.  
  914.        It  is possible to construct infinite loops by following
  915.        a subpattern that can match no characters with a quanti-
  916.        fier that has no upper limit, for example:
  917.  
  918.          (a?)*
  919.  
  920.        Earlier  versions of Perl and PCRE used to give an error
  921.        at compile time  for  such  patterns.  However,  because
  922.        there  are cases where this can be useful, such patterns
  923.        are now accepted, but if any repetition of  the  subpat-
  924.        tern  does  in  fact  match  no  characters, the loop is
  925.        forcibly broken.
  926.  
  927.        By default, the quantifiers are "greedy", that is,  they
  928.        match  as  much as possible (up to the maximum number of
  929.        permitted times), without causing the rest of  the  pat-
  930.        tern  to  fail.  The classic example of where this gives
  931.        problems is in trying to match comments in  C  programs.
  932.        These  appear  between /* and */ and within the comment,
  933.        individual * and / characters may appear. An attempt  to
  934.        match C comments by applying the pattern
  935.  
  936.          /\*.*\*/
  937.  
  938.        to the string
  939.  
  940.          /* first comment */  not comment  /* second comment */
  941.  
  942.        fails, because it matches the entire string owing to the
  943.        greediness of the .*  item.
  944.  
  945.        However, if a quantifier is followed by a question mark,
  946.        it ceases to be greedy, and instead matches the  minimum
  947.        number of times possible, so the pattern
  948.  
  949.          /\*.*?\*/
  950.  
  951.        does the right thing with the C comments. The meaning of
  952.        the various quantifiers is not otherwise  changed,  just
  953.        the  preferred  number  of matches.  Do not confuse this
  954.        use of question mark with its use as a quantifier in its
  955.        own  right.  Because  it  has two uses, it can sometimes
  956.        appear doubled, as in
  957.  
  958.          \d??\d
  959.  
  960.        which matches one digit by preference, but can match two
  961.        if that is the only way the rest of the pattern matches.
  962.  
  963.        If the PCRE_UNGREEDY option is set (an option  which  is
  964.        not  available  in Perl), the quantifiers are not greedy
  965.        by default, but individual ones can be  made  greedy  by
  966.        following  them with a question mark. In other words, it
  967.        inverts the default behaviour.
  968.  
  969.        When a parenthesized subpattern  is  quantified  with  a
  970.        minimum  repeat  count  that is greater than 1 or with a
  971.        limited maximum, more memory is required  for  the  com-
  972.        piled  pattern, in proportion to the size of the minimum
  973.        or maximum.
  974.  
  975.        If a pattern starts with .* or .{0,} and the PCRE_DOTALL
  976.        option  (equivalent  to Perl's /s) is set, thus allowing
  977.        the . to  match  newlines,  the  pattern  is  implicitly
  978.        anchored, because whatever follows will be tried against
  979.        every character position in the subject string, so there
  980.        is  no  point  in  retrying  the  overall  match  at any
  981.        position after the first. PCRE normally  treats  such  a
  982.        pattern as though it were preceded by \A.
  983.  
  984.        In  cases where it is known that the subject string con-
  985.        tains no newlines, it is worth  setting  PCRE_DOTALL  in
  986.        order  to  obtain  this  optimization,  or alternatively
  987.        using ^ to indicate anchoring explicitly.
  988.  
  989.        However, there is one situation where  the  optimization
  990.        cannot be used. When .*  is inside capturing parentheses
  991.        that are the subject of a backreference elsewhere in the
  992.        pattern,  a match at the start may fail, and a later one
  993.        succeed. Consider, for example:
  994.  
  995.          (.*)abc\1
  996.  
  997.        If the subject is "xyz123abc123" the match point is  the
  998.        fourth character. For this reason, such a pattern is not
  999.        implicitly anchored.
  1000.  
  1001.        When a capturing subpattern is repeated, the value  cap-
  1002.        tured is the substring that matched the final iteration.
  1003.        For example, after
  1004.  
  1005.          (tweedle[dume]{3}\s*)+
  1006.  
  1007.        has matched "tweedledum tweedledee"  the  value  of  the
  1008.        captured  substring  is  "tweedledee". However, if there
  1009.        are nested capturing subpatterns, the corresponding cap-
  1010.        tured  values  may have been set in previous iterations.
  1011.        For example, after
  1012.  
  1013.          /(a|(b))+/
  1014.  
  1015.        matches "aba" the value of the second captured substring
  1016.        is "b".
  1017.  
  1018. ATOMIC GROUPING AND POSSESSIVE QUANTIFIERS
  1019.  
  1020.        With  both maximizing and minimizing repetition, failure
  1021.        of what follows normally causes the repeated item to  be
  1022.        re-evaluated  to  see  if  a different number of repeats
  1023.        allows the rest of the pattern to match. Sometimes it is
  1024.        useful  to  prevent this, either to change the nature of
  1025.        the match, or to cause it fail earlier than it otherwise
  1026.        might,  when the author of the pattern knows there is no
  1027.        point in carrying on.
  1028.  
  1029.        Consider, for example, the pattern \d+foo  when  applied
  1030.        to the subject line
  1031.  
  1032.          123456bar
  1033.  
  1034.        After  matching  all  6 digits and then failing to match
  1035.        "foo", the normal action of the matcher is to try  again
  1036.        with  only 5 digits matching the \d+ item, and then with
  1037.        4, and so on, before ultimately failing. "Atomic  group-
  1038.        ing"  (a term taken from Jeffrey Friedl's book) provides
  1039.        the means for specifying  that  once  a  subpattern  has
  1040.        matched, it is not to be re-evaluated in this way.
  1041.  
  1042.        If  we use atomic grouping for the previous example, the
  1043.        matcher would give up immediately on  failing  to  match
  1044.        "foo"  the first time. The notation is a kind of special
  1045.        parenthesis, starting with (?> as in this example:
  1046.  
  1047.          (?>\d+)foo
  1048.  
  1049.        This kind of parenthesis "locks up"  the   part  of  the
  1050.        pattern  it  contains once it has matched, and a failure
  1051.        further into the pattern is prevented from  backtracking
  1052.        into  it.  Backtracking  past it to previous items, how-
  1053.        ever, works as normal.
  1054.  
  1055.        An alternative description is that a subpattern of  this
  1056.        type  matches the string of characters that an identical
  1057.        standalone pattern would match, if anchored at the  cur-
  1058.        rent point in the subject string.
  1059.  
  1060.        Atomic  grouping  subpatterns  are not capturing subpat-
  1061.        terns. Simple cases such as the  above  example  can  be
  1062.        thought  of  as  a  maximizing  repeat that must swallow
  1063.        everything it can. So, while both \d+ and \d+? are  pre-
  1064.        pared to adjust the number of digits they match in order
  1065.        to make the rest of the pattern match, (?>\d+) can  only
  1066.        match an entire sequence of digits.
  1067.  
  1068.        Atomic groups in general can of course contain arbitrar-
  1069.        ily complicated subpatterns, and can be nested. However,
  1070.        when the subpattern for an atomic group is just a single
  1071.        repeated item, as in the example above, a simpler  nota-
  1072.        tion, called a "possessive quantifier" can be used. This
  1073.        consists of an additional + character following a  quan-
  1074.        tifier. Using this notation, the previous example can be
  1075.        rewritten as
  1076.  
  1077.          \d++foo
  1078.  
  1079.        Possessive quantifiers are always greedy; the setting of
  1080.        the  PCRE_UNGREEDY  option is ignored. They are a conve-
  1081.        nient notation for the simpler forms  of  atomic  group.
  1082.        However,  there  is no difference in the meaning or pro-
  1083.        cessing of a possessive quantifier  and  the  equivalent
  1084.        atomic group.
  1085.  
  1086.        The  possessive quantifier syntax is an extension to the
  1087.        Perl syntax. It originates in Sun's Java package.
  1088.  
  1089.        When a pattern contains an  unlimited  repeat  inside  a
  1090.        subpattern that can itself be repeated an unlimited num-
  1091.        ber of times, the use of an atomic group is the only way
  1092.        to  avoid  some  failing matches taking a very long time
  1093.        indeed. The pattern
  1094.  
  1095.          (\D+|<\d+>)*[!?]
  1096.  
  1097.        matches an unlimited number of  substrings  that  either
  1098.        consist  of  non-digits,  or digits enclosed in <>, fol-
  1099.        lowed by either  !  or  ?.  When  it  matches,  it  runs
  1100.        quickly. However, if it is applied to
  1101.  
  1102.          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  1103.  
  1104.        it  takes  a long time before reporting failure. This is
  1105.        because the string can be divided between  the  internal
  1106.        \D+  repeat  and the external * repeat in a large number
  1107.        of ways, and all have to be  tried.  (The  example  uses
  1108.        [!?]  rather than a single character at the end, because
  1109.        both PCRE and Perl have an optimization that allows  for
  1110.        fast  failure  when  a  single  character  is used. They
  1111.        remember the last single character that is required  for
  1112.        a  match,  and  fail  early  if it is not present in the
  1113.        string.) If the pattern is changed so that  it  uses  an
  1114.        atomic group, like this:
  1115.  
  1116.          ((?>\D+)|<\d+>)*[!?]
  1117.  
  1118.        sequences  of  non-digits  cannot be broken, and failure
  1119.        happens quickly.
  1120.  
  1121. BACK REFERENCES
  1122.  
  1123.        Outside a character class, a  backslash  followed  by  a
  1124.        digit  greater than 0 (and possibly further digits) is a
  1125.        back reference to a capturing subpattern  earlier  (that
  1126.        is,  to  its  left)  in the pattern, provided there have
  1127.        been that many previous capturing left parentheses.
  1128.  
  1129.        However, if the decimal number following  the  backslash
  1130.        is less than 10, it is always taken as a back reference,
  1131.        and causes an error only if there are not that many cap-
  1132.        turing  left parentheses in the entire pattern. In other
  1133.        words, the parentheses that are referenced need  not  be
  1134.        to  the  left of the reference for numbers less than 10.
  1135.        See the subsection  entitled  "Non-printing  characters"
  1136.        above for further details of the handling of digits fol-
  1137.        lowing a backslash.
  1138.  
  1139.        A back reference matches whatever actually  matched  the
  1140.        capturing  subpattern  in  the  current  subject string,
  1141.        rather than anything matching the subpattern itself (see
  1142.        "Subpatterns  as  subroutines"  below for a way of doing
  1143.        that). So the pattern
  1144.  
  1145.          (sens|respons)e and \1ibility
  1146.  
  1147.        matches  "sense  and  sensibility"  and  "response   and
  1148.        responsibility",  but not "sense and responsibility". If
  1149.        caseful matching is in force at the  time  of  the  back
  1150.        reference, the case of letters is relevant. For example,
  1151.  
  1152.          ((?i)rah)\s+\1
  1153.  
  1154.        matches "rah rah" and "RAH RAH", but not "RAH rah", even
  1155.        though  the  original  capturing  subpattern  is matched
  1156.        caselessly.
  1157.  
  1158.        Back references to named subpatterns use the Python syn-
  1159.        tax  (?P=name).  We  could  rewrite the above example as
  1160.        follows:
  1161.  
  1162.          (?<p1>(?i)rah)\s+(?P=p1)
  1163.  
  1164.        There may be more than one back reference  to  the  same
  1165.        subpattern.  If  a subpattern has not actually been used
  1166.        in a particular match, any back references to it  always
  1167.        fail. For example, the pattern
  1168.  
  1169.          (a|(bc))\2
  1170.  
  1171.        always fails if it starts to match "a" rather than "bc".
  1172.        Because there may be many  capturing  parentheses  in  a
  1173.        pattern, all digits following the backslash are taken as
  1174.        part of a potential back reference number. If  the  pat-
  1175.        tern  continues  with  a digit character, some delimiter
  1176.        must be used to terminate the  back  reference.  If  the
  1177.        PCRE_EXTENDED  option  is  set,  this can be whitespace.
  1178.        Otherwise an empty comment (see "Comments" below) can be
  1179.        used.
  1180.  
  1181.        A  back  reference that occurs inside the parentheses to
  1182.        which it refers fails when the subpattern is first used,
  1183.        so,  for  example,  (a\1)  never matches.  However, such
  1184.        references can be useful  inside  repeated  subpatterns.
  1185.        For example, the pattern
  1186.  
  1187.          (a|b\1)+
  1188.  
  1189.        matches  any  number  of  "a"s and also "aba", "ababbaa"
  1190.        etc. At each  iteration  of  the  subpattern,  the  back
  1191.        reference  matches the character string corresponding to
  1192.        the previous iteration. In order for this to  work,  the
  1193.        pattern  must  be such that the first iteration does not
  1194.        need to match the back reference. This can be done using
  1195.        alternation, as in the example above, or by a quantifier
  1196.        with a minimum of zero.
  1197.  
  1198. ASSERTIONS
  1199.  
  1200.        An assertion is a test on the  characters  following  or
  1201.        preceding the current matching point that does not actu-
  1202.        ally consume any characters. The simple assertions coded
  1203.        as  \b, \B, \A, \G, \Z, \z, ^ and $ are described above.
  1204.  
  1205.        More complicated assertions are  coded  as  subpatterns.
  1206.        There  are  two kinds: those that look ahead of the cur-
  1207.        rent position in the subject string, and those that look
  1208.        behind  it.  An  assertion  subpattern is matched in the
  1209.        normal way, except that it does not  cause  the  current
  1210.        matching position to be changed.
  1211.  
  1212.        Assertion subpatterns are not capturing subpatterns, and
  1213.        may not be repeated, because it makes no sense to assert
  1214.        the  same  thing several times. If any kind of assertion
  1215.        contains capturing  subpatterns  within  it,  these  are
  1216.        counted for the purposes of numbering the capturing sub-
  1217.        patterns in the whole pattern.  However, substring  cap-
  1218.        turing  is  carried  out  only  for positive assertions,
  1219.        because it does not make sense for negative  assertions.
  1220.  
  1221.    Lookahead assertions
  1222.  
  1223.        Lookahead  assertions start with (?= for positive asser-
  1224.        tions and (?! for negative assertions. For example,
  1225.  
  1226.          \w+(?=;)
  1227.  
  1228.        matches a word followed by a  semicolon,  but  does  not
  1229.        include the semicolon in the match, and
  1230.  
  1231.          foo(?!bar)
  1232.  
  1233.        matches  any occurrence of "foo" that is not followed by
  1234.        "bar". Note that the apparently similar pattern
  1235.  
  1236.          (?!foo)bar
  1237.  
  1238.        does not find an occurrence of "bar" that is preceded by
  1239.        something  other  than "foo"; it finds any occurrence of
  1240.        "bar"  whatsoever,  because  the  assertion  (?!foo)  is
  1241.        always  true when the next three characters are "bar". A
  1242.        lookbehind assertion is  needed  to  achieve  the  other
  1243.        effect.
  1244.  
  1245.        If you want to force a matching failure at some point in
  1246.        a pattern, the most convenient way to do it is with (?!)
  1247.        because  an empty string always matches, so an assertion
  1248.        that requires there not  to  be  an  empty  string  must
  1249.        always fail.
  1250.  
  1251.    Lookbehind assertions
  1252.  
  1253.        Lookbehind  assertions  start  with  (?<=  for  positive
  1254.        assertions and (?<! for negative assertions.  For  exam-
  1255.        ple,
  1256.  
  1257.          (?<!foo)bar
  1258.  
  1259.        does find an occurrence of "bar" that is not preceded by
  1260.        "foo".  The  contents  of  a  lookbehind  assertion  are
  1261.        restricted  such  that  all  the strings it matches must
  1262.        have a fixed  length.  However,  if  there  are  several
  1263.        alternatives,  they  do  not  all  have to have the same
  1264.        fixed length. Thus
  1265.  
  1266.          (?<=bullock|donkey)
  1267.  
  1268.        is permitted, but
  1269.  
  1270.          (?<!dogs?|cats?)
  1271.  
  1272.        causes an error at compile  time.  Branches  that  match
  1273.        different  length  strings are permitted only at the top
  1274.        level of a lookbehind assertion. This  is  an  extension
  1275.        compared  with  Perl  (at least for 5.8), which requires
  1276.        all branches to match the  same  length  of  string.  An
  1277.        assertion such as
  1278.  
  1279.          (?<=ab(c|de))
  1280.  
  1281.        is  not  permitted,  because its single top-level branch
  1282.        can match two different lengths, but it is acceptable if
  1283.        rewritten to use two top-level branches:
  1284.  
  1285.          (?<=abc|abde)
  1286.  
  1287.        The implementation of lookbehind assertions is, for each
  1288.        alternative, to temporarily move  the  current  position
  1289.        back  by the fixed width and then try to match. If there
  1290.        are insufficient characters before the current position,
  1291.        the match is deemed to fail.
  1292.  
  1293.        PCRE  does not allow the \C escape (which matches a sin-
  1294.        gle byte in UTF-8 mode) to appear in  lookbehind  asser-
  1295.        tions,  because  it makes it impossible to calculate the
  1296.        length of the lookbehind. The \X escape, which can match
  1297.        different numbers of bytes, is also not permitted.
  1298.  
  1299.        Atomic groups can be used in conjunction with lookbehind
  1300.        assertions to specify efficient matching at the  end  of
  1301.        the subject string. Consider a simple pattern such as
  1302.  
  1303.          abcd$
  1304.  
  1305.        when  applied  to  a  long  string  that does not match.
  1306.        Because matching proceeds from left to right, PCRE  will
  1307.        look  for  each  "a" in the subject and then see if what
  1308.        follows matches the rest of the pattern. If the  pattern
  1309.        is specified as
  1310.  
  1311.          ^.*abcd$
  1312.  
  1313.        the  initial  .* matches the entire string at first, but
  1314.        when this fails (because there is no following "a"),  it
  1315.        backtracks to match all but the last character, then all
  1316.        but the last two characters, and so on. Once  again  the
  1317.        search  for  "a" covers the entire string, from right to
  1318.        left, so we are no better off. However, if  the  pattern
  1319.        is written as
  1320.  
  1321.          ^(?>.*)(?<=abcd)
  1322.  
  1323.        or,  equivalently,  using the possessive quantifier syn-
  1324.        tax,
  1325.  
  1326.          ^.*+(?<=abcd)
  1327.  
  1328.        there can be no backtracking for the  .*  item;  it  can
  1329.        match  only the entire string. The subsequent lookbehind
  1330.        assertion  does  a  single  test  on   the   last   four
  1331.        characters.  If  it  fails, the match fails immediately.
  1332.        For long strings, this approach makes a significant dif-
  1333.        ference to the processing time.
  1334.  
  1335.    Using multiple assertions
  1336.  
  1337.        Several  assertions  (of  any sort) may occur in succes-
  1338.        sion. For example,
  1339.  
  1340.          (?<=\d{3})(?<!999)foo
  1341.  
  1342.        matches "foo" preceded by  three  digits  that  are  not
  1343.        "999".  Notice  that  each  of the assertions is applied
  1344.        independently at the same point in the  subject  string.
  1345.        First  there  is a check that the previous three charac-
  1346.        ters are all digits, and then there is a check that  the
  1347.        same  three characters are not "999".  This pattern does
  1348.        not match "foo" preceded by six characters, the first of
  1349.        which  are  digits  and  the last three of which are not
  1350.        "999". For example, it doesn't match "123abcfoo". A pat-
  1351.        tern to do that is
  1352.  
  1353.          (?<=\d{3}...)(?<!999)foo
  1354.  
  1355.        This time the first assertion looks at the preceding six
  1356.        characters, checking that the first  three  are  digits,
  1357.        and  then the second assertion checks that the preceding
  1358.        three characters are not "999".
  1359.  
  1360.        Assertions can be nested in any combination.  For  exam-
  1361.        ple,
  1362.  
  1363.          (?<=(?<!foo)bar)baz
  1364.  
  1365.        matches an occurrence of "baz" that is preceded by "bar"
  1366.        which in turn is not preceded by "foo", while
  1367.  
  1368.          (?<=\d{3}(?!999)...)foo
  1369.  
  1370.        is another pattern that matches "foo" preceded by  three
  1371.        digits and any three characters that are not "999".
  1372.  
  1373. CONDITIONAL SUBPATTERNS
  1374.  
  1375.        It  is  possible to cause the matching process to obey a
  1376.        subpattern conditionally or to choose between two alter-
  1377.        native subpatterns, depending on the result of an asser-
  1378.        tion, or whether a previous capturing subpattern matched
  1379.        or not. The two possible forms of conditional subpattern
  1380.        are
  1381.  
  1382.          (?(condition)yes-pattern)
  1383.          (?(condition)yes-pattern|no-pattern)
  1384.  
  1385.        If the condition is satisfied, the yes-pattern is  used;
  1386.        otherwise  the no-pattern (if present) is used. If there
  1387.        are more than two alternatives in the subpattern, a com-
  1388.        pile-time error occurs.
  1389.  
  1390.        There  are three kinds of condition. If the text between
  1391.        the parentheses consists of a sequence  of  digits,  the
  1392.        condition  is  satisfied  if the capturing subpattern of
  1393.        that number has previously matched. The number  must  be
  1394.        greater than zero. Consider the following pattern, which
  1395.        contains non-significant white space  to  make  it  more
  1396.        readable (assume the PCRE_EXTENDED option) and to divide
  1397.        it into three parts for ease of discussion:
  1398.  
  1399.          ( \( )?    [^()]+    (?(1) \) )
  1400.  
  1401.        The first part matches an optional opening  parenthesis,
  1402.        and  if  that character is present, sets it as the first
  1403.        captured substring. The second part matches one or  more
  1404.        characters that are not parentheses. The third part is a
  1405.        conditional subpattern that tests whether the first  set
  1406.        of  parentheses matched or not. If they did, that is, if
  1407.        subject started with an opening parenthesis, the  condi-
  1408.        tion  is  true, and so the yes-pattern is executed and a
  1409.        closing parenthesis is required.  Otherwise,  since  no-
  1410.        pattern  is not present, the subpattern matches nothing.
  1411.        In other words, this pattern matches a sequence of  non-
  1412.        parentheses, optionally enclosed in parentheses.
  1413.  
  1414.        If the condition is the string (R), it is satisfied if a
  1415.        recursive call to the pattern  or  subpattern  has  been
  1416.        made. At "top level", the condition is false.  This is a
  1417.        PCRE extension. Recursive patterns are described in  the
  1418.        next section.
  1419.  
  1420.        If  the condition is not a sequence of digits or (R), it
  1421.        must be an assertion.  This may be a positive  or  nega-
  1422.        tive  lookahead  or  lookbehind assertion. Consider this
  1423.        pattern, again containing non-significant  white  space,
  1424.        and with the two alternatives on the second line:
  1425.  
  1426.          (?(?=[^a-z]*[a-z])
  1427.          \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )
  1428.  
  1429.        The  condition  is  a  positive lookahead assertion that
  1430.        matches an optional sequence of non-letters followed  by
  1431.        a  letter.  In other words, it tests for the presence of
  1432.        at least one letter in  the  subject.  If  a  letter  is
  1433.        found, the subject is matched against the first alterna-
  1434.        tive; otherwise it is matched against the  second.  This
  1435.        pattern  matches strings in one of the two forms dd-aaa-
  1436.        dd or dd-dd-dd, where aaa are letters and dd are digits.
  1437.  
  1438. COMMENTS
  1439.  
  1440.        The  sequence (?# marks the start of a comment that con-
  1441.        tinues up to the next closing parenthesis. Nested paren-
  1442.        theses  are not permitted. The characters that make up a
  1443.        comment play no part in the pattern matching at all.
  1444.  
  1445.        If the PCRE_EXTENDED option is set, an unescaped # char-
  1446.        acter  outside  a  character  class introduces a comment
  1447.        that continues up to the next newline character  in  the
  1448.        pattern.
  1449.  
  1450. RECURSIVE PATTERNS
  1451.  
  1452.        Consider  the  problem of matching a string in parenthe-
  1453.        ses, allowing for unlimited nested parentheses.  Without
  1454.        the  use  of  recursion, the best that can be done is to
  1455.        use a pattern that matches up to  some  fixed  depth  of
  1456.        nesting. It is not possible to handle an arbitrary nest-
  1457.        ing depth. Perl provides a facility that allows  regular
  1458.        expressions  to  recurse (amongst other things). It does
  1459.        this by interpolating Perl code in the expression at run
  1460.        time, and the code can refer to the expression itself. A
  1461.        Perl pattern to solve the  parentheses  problem  can  be
  1462.        created like this:
  1463.  
  1464.          $re = qr{\( (?: (?>[^()]+) | (?p{$re}) )* \)}x;
  1465.  
  1466.        The  (?p{...})  item interpolates Perl code at run time,
  1467.        and in this case refers recursively to  the  pattern  in
  1468.        which  it  appears.  Obviously,  PCRE cannot support the
  1469.        interpolation of Perl code. Instead,  it  supports  some
  1470.        special  syntax for recursion of the entire pattern, and
  1471.        also for individual subpattern recursion.
  1472.  
  1473.        The special item that consists of (? followed by a  num-
  1474.        ber  greater  than  zero  and a closing parenthesis is a
  1475.        recursive call of the subpattern of  the  given  number,
  1476.        provided that it occurs inside that subpattern. (If not,
  1477.        it is a "subroutine" call, which  is  described  in  the
  1478.        next section.) The special item (?R) is a recursive call
  1479.        of the entire regular expression.
  1480.  
  1481.        For example, this PCRE pattern solves the nested  paren-
  1482.        theses  problem  (assume the PCRE_EXTENDED option is set
  1483.        so that white space is ignored):
  1484.  
  1485.          \( ( (?>[^()]+) | (?R) )* \)
  1486.  
  1487.        First it matches an opening parenthesis. Then it matches
  1488.        any  number of substrings which can either be a sequence
  1489.        of non-parentheses, or a recursive match of the  pattern
  1490.        itself  (that  is  a correctly parenthesized substring).
  1491.        Finally there is a closing parenthesis.
  1492.  
  1493.        If this were part of a larger  pattern,  you  would  not
  1494.        want to recurse the entire pattern, so instead you could
  1495.        use this:
  1496.  
  1497.          ( \( ( (?>[^()]+) | (?1) )* \) )
  1498.  
  1499.        We have put the pattern into parentheses, and caused the
  1500.        recursion to refer to them instead of the whole pattern.
  1501.        In a larger pattern, keeping track of  parenthesis  num-
  1502.        bers  can  be  tricky.  It may be more convenient to use
  1503.        named  parentheses  instead.   For   this,   PCRE   uses
  1504.        (?P>name),  which  is  an extension to the Python syntax
  1505.        that PCRE uses for named parentheses (Perl does not pro-
  1506.        vide  named  parentheses).  We  could  rewrite the above
  1507.        example as follows:
  1508.  
  1509.          (?P<pn> \( ( (?>[^()]+) | (?P>pn) )* \) )
  1510.  
  1511.        This particular example pattern contains  nested  unlim-
  1512.        ited  repeats,  and  so  the  use of atomic grouping for
  1513.        matching strings of non-parentheses  is  important  when
  1514.        applying  the  pattern to strings that do not match. For
  1515.        example, when this pattern is applied to
  1516.  
  1517.          (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
  1518.  
  1519.        it  yields "no match" quickly. However, if atomic group-
  1520.        ing is not used, the match runs for  a  very  long  time
  1521.        indeed  because  there  are so many different ways the +
  1522.        and * repeats can carve up the subject, and all have  to
  1523.        be tested before failure can be reported.
  1524.  
  1525.        At  the end of a match, the values set for any capturing
  1526.        subpatterns are those from the outermost  level  of  the
  1527.        recursion  at which the subpattern value is set.  If you
  1528.        want to obtain intermediate values, a  callout  function
  1529.        can  be  used  (see the next section and the pcrecallout
  1530.        documentation). If the pattern above is matched against
  1531.  
  1532.          (ab(cd)ef)
  1533.  
  1534.        the value for the capturing parentheses is  "ef",  which
  1535.        is  the  last  value taken on at the top level. If addi-
  1536.        tional parentheses are added, giving
  1537.  
  1538.          \( ( ( (?>[^()]+) | (?R) )* ) \)
  1539.             ^                        ^
  1540.             ^                        ^
  1541.  
  1542.        the string they capture is "ab(cd)ef", the  contents  of
  1543.        the  top  level  parentheses.  If there are more than 15
  1544.        capturing parentheses in a pattern, PCRE has  to  obtain
  1545.        extra  memory to store data during a recursion, which it
  1546.        does by using  pcre_malloc,  freeing  it  via  pcre_free
  1547.        afterwards.  If  no  memory  can  be obtained, the match
  1548.        fails with the PCRE_ERROR_NOMEMORY error.
  1549.  
  1550.        Do not confuse the (?R) item  with  the  condition  (R),
  1551.        which tests for recursion.  Consider this pattern, which
  1552.        matches text in angle brackets, allowing  for  arbitrary
  1553.        nesting.  Only  digits  are  allowed  in nested brackets
  1554.        (that is, when recursing), whereas  any  characters  are
  1555.        permitted at the outer level.
  1556.  
  1557.          < (?: (?(R) \d++  | [^<>]*+) | (?R)) * >
  1558.  
  1559.        In  this  pattern,  (?(R)  is the start of a conditional
  1560.        subpattern, with  two  different  alternatives  for  the
  1561.        recursive  and non-recursive cases. The (?R) item is the
  1562.        actual recursive call.
  1563.  
  1564. SUBPATTERNS AS SUBROUTINES
  1565.  
  1566.        If the  syntax  for  a  recursive  subpattern  reference
  1567.        (either by number or by name) is used outside the paren-
  1568.        theses to which it refers, it operates like a subroutine
  1569.        in  a  programming  language. An earlier example pointed
  1570.        out that the pattern
  1571.  
  1572.          (sens|respons)e and \1ibility
  1573.  
  1574.        matches  "sense  and  sensibility"  and  "response   and
  1575.        responsibility",  but not "sense and responsibility". If
  1576.        instead the pattern
  1577.  
  1578.          (sens|respons)e and (?1)ibility
  1579.  
  1580.        is used, it does match  "sense  and  responsibility"  as
  1581.        well  as  the  other  two strings. Such references must,
  1582.        however, follow the subpattern to which they refer.
  1583.  
  1584. CALLOUTS
  1585.  
  1586.        Perl has a feature whereby using the  sequence  (?{...})
  1587.        causes arbitrary Perl code to be obeyed in the middle of
  1588.        matching a regular expression. This makes  it  possible,
  1589.        amongst  other  things,  to extract different substrings
  1590.        that match the same pair of parentheses when there is  a
  1591.        repetition.
  1592.  
  1593.        PCRE provides a similar feature, but of course it cannot
  1594.        obey arbitrary Perl code. The feature is  called  "call-
  1595.        out".  The  caller of PCRE provides an external function
  1596.        by putting  its  entry  point  in  the  global  variable
  1597.        pcre_callout.   By default, this variable contains NULL,
  1598.        which disables all calling out.
  1599.  
  1600.        Within a regular expression, (?C) indicates  the  points
  1601.        at  which  the external function is to be called. If you
  1602.        want to identify different callout points, you can put a
  1603.        number  less  than  256  after the letter C. The default
  1604.        value is zero.  For example, this pattern has two  call-
  1605.        out points:
  1606.  
  1607.          (?C1)abc(?C2)def
  1608.  
  1609.        If  the  PCRE_AUTO_CALLOUT  flag  is passed to pcre_com-
  1610.        pile(), callouts are automatically installed before each
  1611.        item in the pattern. They are all numbered 255.
  1612.  
  1613.        During  matching, when PCRE reaches a callout point (and
  1614.        pcre_callout is set), the external function  is  called.
  1615.        It is provided with the number of the callout, the posi-
  1616.        tion in the pattern, and, optionally, one item  of  data
  1617.        originally  supplied  by  the caller of pcre_exec(). The
  1618.        callout function may cause matching to proceed, to back-
  1619.        track,  or to fail altogether. A complete description of
  1620.        the interface to the callout function is  given  in  the
  1621.        pcrecallout documentation.
  1622.  
  1623. Last updated: 28 February 2005
  1624. Copyright (c) 1997-2005 University of Cambridge.
  1625.  
  1626.  
  1627.  
  1628.                                                  PCREPATTERN(3)
  1629.