home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 September / PCWorld_2005-09_cd.bin / software / vyzkuste / microsoft / microsoft.exe / ethereal-setup-0.10.11.exe / pcrepattern.3.txt < prev    next >
Text File  |  2003-08-28  |  66KB  |  1,474 lines

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