Diff for /embedaddon/pcre/testdata/testoutput2 between versions 1.1.1.2 and 1.1.1.4

version 1.1.1.2, 2012/02/21 23:50:25 version 1.1.1.4, 2013/07/22 08:25:57
Line 448  Need char = '=' Line 448  Need char = '='
   
 /(?<!bar|cattle)foo/I  /(?<!bar|cattle)foo/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 6
 No options  No options
 First char = 'f'  First char = 'f'
 Need char = 'o'  Need char = 'o'
Line 630  No match Line 631  No match
   
 /\Aabc/Im  /\Aabc/Im
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 Options: anchored multiline  Options: anchored multiline
 No first char  No first char
 No need char  No need char
Line 655  No need char Line 657  No need char
   
 /(?<=foo)[ab]/IS  /(?<=foo)[ab]/IS
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 3
 No options  No options
 No first char  No first char
 No need char  No need char
Line 663  Starting byte set: a b  Line 666  Starting byte set: a b 
   
 /(?<!foo)(alpha|omega)/IS  /(?<!foo)(alpha|omega)/IS
 Capturing subpattern count = 1  Capturing subpattern count = 1
   Max lookbehind = 3
 No options  No options
 No first char  No first char
 Need char = 'a'  Need char = 'a'
Line 679  Starting byte set: a b  Line 683  Starting byte set: a b 
   
 /(?<=foo\n)^bar/Im  /(?<=foo\n)^bar/Im
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 4
 Contains explicit CR or LF match  Contains explicit CR or LF match
 Options: multiline  Options: multiline
 No first char  No first char
Line 696  No match Line 701  No match
   
 /^(?<=foo\n)bar/Im  /^(?<=foo\n)bar/Im
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 4
 Contains explicit CR or LF match  Contains explicit CR or LF match
 Options: multiline  Options: multiline
 First char at start or follows newline  First char at start or follows newline
Line 738  Failed: lookbehind assertion is not fixed length at of Line 744  Failed: lookbehind assertion is not fixed length at of
   
 /(?<=bullock|donkey)-cart/I  /(?<=bullock|donkey)-cart/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 7
 No options  No options
 First char = '-'  First char = '-'
 Need char = 't'  Need char = 't'
Line 754  No match Line 761  No match
   
 /(?<=ab(?i)x|y|z)/I  /(?<=ab(?i)x|y|z)/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 3
 No options  No options
 No first char  No first char
 No need char  No need char
   
 /(?>.*)(?<=(abcd)|(xyz))/I  /(?>.*)(?<=(abcd)|(xyz))/I
 Capturing subpattern count = 2  Capturing subpattern count = 2
   Max lookbehind = 4
 No options  No options
First char at start or follows newlineNo first char
 No need char  No need char
     alphabetabcd      alphabetabcd
  0: alphabetabcd   0: alphabetabcd
Line 773  No need char Line 782  No need char
   
 /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I  /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 4
 No options  No options
 First char = 'Z'  First char = 'Z'
 Need char = 'Z'  Need char = 'Z'
Line 801  No match Line 811  No match
   
 /(?<!(foo)a)bar/I  /(?<!(foo)a)bar/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   Max lookbehind = 4
 No options  No options
 First char = 'b'  First char = 'b'
 Need char = 'r'  Need char = 'r'
Line 813  No match Line 824  No match
     fooabar      fooabar
 No match  No match
   
 /This one is here because Perl 5.005_02 doesn't fail it/I  
 Capturing subpattern count = 0  
 No options  
 First char = 'T'  
 Need char = 't'  
   
 /^(a)?(?(1)a|b)+$/I  
 Capturing subpattern count = 1  
 Options: anchored  
 No first char  
 No need char  
     *** Failers  
 No match  
     a  
 No match  
   
 /This one is here because Perl behaves differently; see also the following/I  /This one is here because Perl behaves differently; see also the following/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
Line 1202  No need char Line 1197  No need char
   
 /\Biss\B/I+  /\Biss\B/I+
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
Line 1222  Need char = 's' Line 1218  Need char = 's'
   
 /\Biss\B/IG+  /\Biss\B/IG+
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
Line 1231  Need char = 's' Line 1228  Need char = 's'
   
 /\Biss\B/Ig+  /\Biss\B/Ig+
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
Line 1246  No match Line 1244  No match
   
 /(?<=[Ms])iss/Ig+  /(?<=[Ms])iss/Ig+
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
Line 1257  Need char = 's' Line 1256  Need char = 's'
   
 /(?<=[Ms])iss/IG+  /(?<=[Ms])iss/IG+
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
Line 1437  Need char = 'r' Line 1437  Need char = 'r'
   
 /...(?<=abc)/I  /...(?<=abc)/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 3
 No options  No options
 No first char  No first char
 No need char  No need char
Line 3217  No match Line 3218  No match
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = '8'  First char = '8'
 Need char = 'X'  Need char = 'X'
Line 3230  Need char = 'X' Line 3232  Need char = 'X'
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = '$'  First char = '$'
 Need char = 'X'  Need char = 'X'
Line 3745  Callout 2: last capture = -1 Line 3748  Callout 2: last capture = -1
   
 /(?<=(abc)(?C))xyz/I  /(?<=(abc)(?C))xyz/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   Max lookbehind = 3
 No options  No options
 First char = 'x'  First char = 'x'
 Need char = 'z'  Need char = 'z'
Line 4344  Minimum match() recursion limit = 6 Line 4348  Minimum match() recursion limit = 6
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   aaaaaaaaaaaaaz\M    aaaaaaaaaaaaaz\M
 Minimum match() limit = 32768  Minimum match() limit = 32768
Minimum match() recursion limit = 42Minimum match() recursion limit = 29
 No match  No match
   
 /(aaa(?C1)bbb|ab)/I  /(aaa(?C1)bbb|ab)/I
Line 5392  Need char = '3' Line 5396  Need char = '3'
   
 /\b.*/I  /\b.*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 No first char  No first char
 No need char  No need char
Line 5400  No need char Line 5405  No need char
   
 /\b.*/Is  /\b.*/Is
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 Options: dotall  Options: dotall
 No first char  No first char
 No need char  No need char
Line 8782  No match Line 8788  No match
  1: \x0a   1: \x0a
   
 /a(*CR)b/  /a(*CR)b/
Failed: (*VERB) not recognized at offset 5Failed: (*VERB) not recognized or malformed at offset 5
   
 /(*CR)a.b/  /(*CR)a.b/
     a\nb      a\nb
Line 9255  No need char Line 9261  No need char
  +7 ^ ^     b   +7 ^ ^     b
  +7 ^^      b   +7 ^^      b
  +7 ^       b   +7 ^       b
   +11 ^       ^
 +12 ^       )  +12 ^       )
 +13 ^         +13 ^       
  0:    0: 
Line 9385  No match Line 9392  No match
  +3 ^ ^      (?(?=[a])[^"])   +3 ^ ^      (?(?=[a])[^"])
  +5 ^ ^      (?=[a])   +5 ^ ^      (?=[a])
  +8 ^ ^      [a]   +8 ^ ^      [a]
   +17 ^ ^      |
 +21 ^ ^      "  +21 ^ ^      "
 +18 ^ ^      b  +18 ^ ^      b
 +19 ^  ^     )  +19 ^  ^     )
  +3 ^  ^     (?(?=[a])[^"])   +3 ^  ^     (?(?=[a])[^"])
  +5 ^  ^     (?=[a])   +5 ^  ^     (?=[a])
  +8 ^  ^     [a]   +8 ^  ^     [a]
   +17 ^  ^     |
 +21 ^  ^     "  +21 ^  ^     "
 +22 ^   ^    $  +22 ^   ^    $
 +23 ^   ^      +23 ^   ^    
Line 9698  Partial match: abc12 Line 9707  Partial match: abc12
     xyzabc123pqr       xyzabc123pqr 
  0: 123   0: 123
     xyzabc12\P      xyzabc12\P
Partial match: abc12Partial match at offset 6: abc12
     xyzabc12\P\P      xyzabc12\P\P
Partial match: abc12Partial match at offset 6: abc12
   
 /\babc\b/  /\babc\b/
     +++abc+++      +++abc+++
  0: abc   0: abc
     +++ab\P      +++ab\P
Partial match: +abPartial match at offset 3: +ab
     +++ab\P\P        +++ab\P\P  
Partial match: +abPartial match at offset 3: +ab
   
 /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 10089  No set of starting bytes Line 10098  No set of starting bytes
 "(?>.*/)foo"SI  "(?>.*/)foo"SI
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
First char at start or follows newlineNo first char
 Need char = 'o'  Need char = 'o'
 Subject length lower bound = 4  Subject length lower bound = 4
 No set of starting bytes  No set of starting bytes
Line 10332  Partial match: abca Line 10341  Partial match: abca
     xxxxabcde\P\P      xxxxabcde\P\P
 Partial match: abcde  Partial match: abcde
   
/-- This is not in the Perl >= 5.10 test because Perl seems currently to be/-- This is not in the Perl-compatible test because Perl seems currently to be
     broken and not behaving as specified in that it *does* bumpalong after      broken and not behaving as specified in that it *does* bumpalong after
     hitting (*COMMIT). --/      hitting (*COMMIT). --/
   
Line 10528  No match Line 10537  No match
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
   
/ -- The first four of these are not in the Perl >= 5.10 test because Perl / -- This one is here because Perl gives the match as "b" rather than "ab". I
     documents that the use of \K in assertions is "not well defined". The 
     last is here because Perl gives the match as "b" rather than "ab". I 
      believe this to be a Perl bug. --/         believe this to be a Perl bug. --/  
               
 /(?=a\Kb)ab/  
     ab   
  0: b  
   
 /(?!a\Kb)ac/  
     ac   
  0: ac  
       
 /^abc(?<=b\Kc)d/  
     abcd  
  0: cd  
   
 /^abc(?<!b\Kq)d/  
     abcd  
  0: abcd  
   
 /(?>a\Kb)z|(ab)/  /(?>a\Kb)z|(ab)/
     ab       ab 
  0: ab   0: ab
  1: ab   1: ab
   
 /----------------------/  
   
 /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
 Failed: recursive call could loop indefinitely at offset 31  Failed: recursive call could loop indefinitely at offset 31
   
Line 10575  Failed: an argument is not allowed for (*ACCEPT), (*FA Line 10564  Failed: an argument is not allowed for (*ACCEPT), (*FA
     ACABX      ACABX
 No match  No match
   
/--- These should be different, but in Perl 5.11 are not, which I think/--- These should be different, but in Perl they are not, which I think
      is a bug in Perl. ---/       is a bug in Perl. ---/
   
 /A(*THEN)B|A(*THEN)C/K  /A(*THEN)B|A(*THEN)C/K
Line 10586  No match Line 10575  No match
     AC      AC
 No match  No match
           
 /--- This should fail; the SKIP advances by one, but when we get to AC, the  
      PRUNE kills it. Perl behaves differently. ---/   
       
 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK  
     AAAC  
 No match, mark = A  
   
 /--- Mark names can be duplicated. Perl doesn't give a mark for this one,  /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
 though PCRE does. ---/  though PCRE does. ---/
   
Line 10626  No match Line 10608  No match
     abcccd        abcccd  
 No match  No match
           
/--- Perl 5.11 gets some of these wrong ---/ /--- Perl gets some of these wrong ---/ 
   
 /(?>.(*ACCEPT))*?5/  /(?>.(*ACCEPT))*?5/
     abcde      abcde
Line 10734  No match Line 10716  No match
 /\s*\R/BZ  /\s*\R/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        \s*+        \s*
         \R          \R
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
       \x20\x0a
    0:  \x0a
       \x20\x0d
    0:  \x0d
       \x20\x0d\x0a
    0:  \x0d\x0a
   
/-- Perl treats this one differently, not failing the second string. I believe/\S*\R/BZ
    that is a bug in Perl. --/------------------------------------------------------------------
         Bra
         \S*+
         \R
         Ket
         End
 ------------------------------------------------------------------
     a\x0a
  0: a\x0a
   
/^((abc|abcx)(*THEN)y|abcd)//X\h*\R/BZ
    abcd------------------------------------------------------------------
 0: abcd        Bra
 1: abcd        X
    *** Failers         \h*+
         \R
         Ket
         End
 ------------------------------------------------------------------
     X\x20\x0a
  0: X \x0a
 
 /X\H*\R/BZ
 ------------------------------------------------------------------
         Bra
         X
         \H*
         \R
         Ket
         End
 ------------------------------------------------------------------
     X\x0d\x0a
  0: X\x0d\x0a
 
 /X\H+\R/BZ
 ------------------------------------------------------------------
         Bra
         X
         \H+
         \R
         Ket
         End
 ------------------------------------------------------------------
     X\x0d\x0a
  0: X\x0d\x0a
 
 /X\H++\R/BZ
 ------------------------------------------------------------------
         Bra
         X
         \H++
         \R
         Ket
         End
 ------------------------------------------------------------------
     X\x0d\x0a
 No match  No match
     abcxy   
 No match  
   
 /(?<=abc)def/  /(?<=abc)def/
     abc\P\P      abc\P\P
Partial match: abcPartial match at offset 3: abc
   
 /abc$/  /abc$/
     abc      abc
Line 11233  No match Line 11268  No match
   
 /(a)b|ac/++SS  /(a)b|ac/++SS
     ac\O3      ac\O3
 Matched, but too many substrings  
  0: ac   0: ac
  0+    0+ 
           
Line 11593  No match Line 11627  No match
   
 /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS  /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 First char = 't'  First char = 't'
 Need char = 't'  Need char = 't'
Line 11601  No set of starting bytes Line 11636  No set of starting bytes
   
 /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS  /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
 No options  No options
 No first char  No first char
 No need char  No need char
 Subject length lower bound = 8  Subject length lower bound = 8
 Starting byte set: < o t u   Starting byte set: < o t u 
   
/a(*SKIP)c|b(*ACCEPT)|/+SI/a(*SKIP)c|b(*ACCEPT)|/+S!I
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
Study returned NULLSubject length lower bound = -1
 No set of starting bytes
     a      a
  0:    0: 
  0+    0+ 
Line 11673  Minimum match() limit = 86 Line 11710  Minimum match() limit = 86
 Minimum match() recursion limit = 45  Minimum match() recursion limit = 45
  0: abbbbbbbbbbbbbbbbbbbbba   0: abbbbbbbbbbbbbbbbbbbbba
   
 /-- These tests are in agreement with development Perl 5.015, which has fixed  
     some things, but they don't all work with 5.012, so they aren't in the  
     Perl-compatible tests. Those after the first come from Perl's own test  
     files. --/  
       
 /^((yes|no)(*THEN)(*F))?/  
   yes  
 No match  
   
 /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   C? (*THEN)  | A D) z/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   C? (*THEN)  | A D) \s* z/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   (?:C|) (*THEN)  | A D) z/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   C{0,6} (*THEN)  | A D) z/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x  
 AbcdCEBefgBhiBqz  
 No match  
   
 /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x  
 AbcdCEBefgBhiBqz  
 No match  
   
 /(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x  
 AbcdCBefgBhiBqz  
 No match  
   
 /-----------------------------------------------/    
   
 /^(?>a+)(?>(z+))\w/BZ  /^(?>a+)(?>(z+))\w/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
Line 12010  MK: x Line 11988  MK: x
  0:    0: 
  0+ ab   0+ ab
 MK: x  MK: x
   
   /(..)\1/
       ab\P
   Partial match: ab
       aba\P
   Partial match: aba
       abab\P
    0: abab
    1: ab
   
   /(..)\1/i
       ab\P
   Partial match: ab
       abA\P
   Partial match: abA
       aBAb\P
    0: aBAb
    1: aB
   
   /(..)\1{2,}/
       ab\P
   Partial match: ab
       aba\P
   Partial match: aba
       abab\P
   Partial match: abab
       ababa\P
   Partial match: ababa
       ababab\P
    0: ababab
    1: ab
       ababab\P\P
   Partial match: ababab
       abababa\P
    0: ababab
    1: ab
       abababa\P\P
   Partial match: abababa
   
   /(..)\1{2,}/i
       ab\P
   Partial match: ab
       aBa\P
   Partial match: aBa
       aBAb\P
   Partial match: aBAb
       AbaBA\P
   Partial match: AbaBA
       abABAb\P
    0: abABAb
    1: ab
       aBAbaB\P\P
   Partial match: aBAbaB
       abABabA\P
    0: abABab
    1: ab
       abaBABa\P\P
   Partial match: abaBABa
   
   /(..)\1{2,}?x/i
       ab\P
   Partial match: ab
       abA\P
   Partial match: abA
       aBAb\P
   Partial match: aBAb
       abaBA\P
   Partial match: abaBA
       abAbaB\P
   Partial match: abAbaB
       abaBabA\P
   Partial match: abaBabA
       abAbABaBx\P
    0: abAbABaBx
    1: ab
   
   /^(..)\1/
       aba\P
   Partial match: aba
   
   /^(..)\1{2,3}x/
       aba\P
   Partial match: aba
       ababa\P
   Partial match: ababa
       ababa\P\P
   Partial match: ababa
       abababx
    0: abababx
    1: ab
       ababababx  
    0: ababababx
    1: ab
   
   /^(..)\1{2,3}?x/
       aba\P
   Partial match: aba
       ababa\P
   Partial match: ababa
       ababa\P\P
   Partial match: ababa
       abababx
    0: abababx
    1: ab
       ababababx  
    0: ababababx
    1: ab
       
   /^(..)(\1{2,3})ab/
       abababab
    0: abababab
    1: ab
    2: abab
   
   /^\R/
       \r\P
    0: \x0d
       \r\P\P
   Partial match: \x0d
       
   /^\R{2,3}x/
       \r\P
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P 
   Partial match: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P  
   Partial match: \x0d\x0d\x0d
       \r\r\r\P\P
   Partial match: \x0d\x0d\x0d
       \r\rx
    0: \x0d\x0dx
       \r\r\rx    
    0: \x0d\x0d\x0dx
   
   /^\R{2,3}?x/
       \r\P
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P 
   Partial match: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P  
   Partial match: \x0d\x0d\x0d
       \r\r\r\P\P
   Partial match: \x0d\x0d\x0d
       \r\rx
    0: \x0d\x0dx
       \r\r\rx    
    0: \x0d\x0d\x0dx
       
   /^\R?x/
       \r\P
   Partial match: \x0d
       \r\P\P 
   Partial match: \x0d
       x
    0: x
       \rx  
    0: \x0dx
   
   /^\R+x/
       \r\P
   Partial match: \x0d
       \r\P\P 
   Partial match: \x0d
       \r\n\P
   Partial match: \x0d\x0a
       \r\n\P\P  
   Partial match: \x0d\x0a
       \rx  
    0: \x0dx
   
   /^a$/<CRLF>
       a\r\P
   Partial match: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^a$/m<CRLF>
       a\r\P
   Partial match: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^(a$|a\r)/<CRLF>
       a\r\P
    0: a\x0d
    1: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^(a$|a\r)/m<CRLF>
       a\r\P
    0: a\x0d
    1: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /./<CRLF>
       \r\P
    0: \x0d
       \r\P\P 
   Partial match: \x0d
     
   /.{2,3}/<CRLF>
       \r\P 
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P
    0: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P
    0: \x0d\x0d\x0d
       \r\r\r\P\P     
   Partial match: \x0d\x0d\x0d
   
   /.{2,3}?/<CRLF>
       \r\P 
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P
    0: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P
    0: \x0d\x0d
       \r\r\r\P\P     
    0: \x0d\x0d
   
   "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
       ABCDGHI\O03
   Matched, but too many substrings
    0: ABCD
       
   /-- These are all run as real matches in test 1; here we are just checking the
   settings of the anchored and startline bits. --/ 
   
   /(?>.*?a)(?<=ba)/I
   Capturing subpattern count = 0
   Max lookbehind = 2
   No options
   No first char
   Need char = 'a'
   
   /(?:.*?a)(?<=ba)/I
   Capturing subpattern count = 0
   Max lookbehind = 2
   No options
   First char at start or follows newline
   Need char = 'a'
   
   /.*?a(*PRUNE)b/I
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'b'
   
   /.*?a(*PRUNE)b/sI
   Capturing subpattern count = 0
   Options: dotall
   No first char
   Need char = 'b'
   
   /^a(*PRUNE)b/sI
   Capturing subpattern count = 0
   Options: anchored dotall
   No first char
   No need char
   
   /.*?a(*SKIP)b/I
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'b'
   
   /(?>.*?a)b/sI
   Capturing subpattern count = 0
   Options: dotall
   No first char
   Need char = 'b'
   
   /(?>.*?a)b/I
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'b'
   
   /(?>^a)b/sI
   Capturing subpattern count = 0
   Options: anchored dotall
   No first char
   No need char
   
   /(?>.*?)(?<=(abcd)|(wxyz))/I
   Capturing subpattern count = 2
   Max lookbehind = 4
   No options
   No first char
   No need char
   
   /(?>.*)(?<=(abcd)|(wxyz))/I
   Capturing subpattern count = 2
   Max lookbehind = 4
   No options
   No first char
   No need char
   
   "(?>.*)foo"I
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'o'
   
   "(?>.*?)foo"I
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'o'
   
   /(?>^abc)/mI
   Capturing subpattern count = 0
   Options: multiline
   First char at start or follows newline
   Need char = 'c'
   
   /(?>.*abc)/mI
   Capturing subpattern count = 0
   Options: multiline
   No first char
   Need char = 'c'
   
   /(?:.*abc)/mI
   Capturing subpattern count = 0
   Options: multiline
   First char at start or follows newline
   Need char = 'c'
   
   /-- Check PCRE_STUDY_EXTRA_NEEDED --/
   
   /.?/S-I
   Capturing subpattern count = 0
   No options
   No first char
   No need char
   Study returned NULL
   
   /.?/S!I
   Capturing subpattern count = 0
   No options
   No first char
   No need char
   Subject length lower bound = -1
   No set of starting bytes
   
   /(?:(a)+(?C1)bb|aa(?C2)b)/
       aab\C+
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^ ^     b
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^^      b
   Callout 2: last capture = -1
    0: <unset>
   --->aab
       ^ ^     b
    0: aab
      
   /(?:(a)++(?C1)bb|aa(?C2)b)/
       aab\C+ 
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^ ^     b
   Callout 2: last capture = -1
    0: <unset>
   --->aab
       ^ ^     b
    0: aab
       
   /(?:(?>(a))(?C1)bb|aa(?C2)b)/
       aab\C+ 
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^^      b
   Callout 2: last capture = -1
    0: <unset>
   --->aab
       ^ ^     b
    0: aab
   
   /(?:(?1)(?C1)x|ab(?C2))((a)){0}/                                                
       aab\C+ 
   Callout 1: last capture = -1
    0: <unset>
   --->aab
       ^^      x
   Callout 1: last capture = -1
    0: <unset>
   --->aab
        ^^     x
   Callout 2: last capture = -1
    0: <unset>
   --->aab
        ^ ^    )
    0: ab
   
   /(?1)(?C1)((a)(?C2)){0}/   
       aab\C+ 
   Callout 2: last capture = 2
    0: <unset>
    1: <unset>
    2: a
   --->aab
       ^^      )
   Callout 1: last capture = -1
    0: <unset>
   --->aab
       ^^      ((a)(?C2)){0}
    0: a
   
   /(?:(a)+(?C1)bb|aa(?C2)b)++/
       aab\C+
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^ ^     b
   Callout 1: last capture = 1
    0: <unset>
    1: a
   --->aab
       ^^      b
   Callout 2: last capture = -1
    0: <unset>
   --->aab
       ^ ^     b
    0: aab
       aab\C+\O2
   Callout 1: last capture = 1
    0: <unset>
   --->aab
       ^ ^     b
   Callout 1: last capture = 1
    0: <unset>
   --->aab
       ^^      b
   Callout 2: last capture = -1
    0: <unset>
   --->aab
       ^ ^     b
    0: aab
   
   /(ab)x|ab/
       ab\O3
    0: ab
       ab\O2 
    0: ab
     
   /(ab)/
       ab\O3
   Matched, but too many substrings
    0: ab
       ab\O2 
   Matched, but too many substrings
    0: ab
       
   /(?<=123)(*MARK:xx)abc/K
       xxxx123a\P\P
   Partial match at offset 7, mark=xx: 123a
       xxxx123a\P
   Partial match at offset 7, mark=xx: 123a
       
   /123\Kabc/
       xxxx123a\P\P
   Partial match: 123a
       xxxx123a\P
   Partial match: 123a
   
   /^(?(?=a)aa|bb)/C
       bb
   --->bb
    +0 ^      ^
    +1 ^      (?(?=a)aa|bb)
    +3 ^      (?=a)
    +6 ^      a
   +11 ^      b
   +12 ^^     b
   +13 ^ ^    )
   +14 ^ ^    
    0: bb
   
   /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
       bb
   --->bb
     1 ^      ^
     2 ^      (?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))
    99 ^      (?=(?C3)a(?C4))
     3 ^      a
     8 ^      b
     9 ^^     b
    10 ^ ^    )
    11 ^ ^    
    0: bb
   
   /-- Perl seems to have a bug with this one --/
   
   /aaaaa(*COMMIT)(*PRUNE)b|a+c/
       aaaaaac
    0: aaaac
       
   /-- Here are some that Perl treats differently because of the way it handles
   backtracking verbs. --/
   
    /(?!a(*COMMIT)b)ac|ad/
        ac
    0: ac
        ad 
    0: ad
   
   /^(?!a(*THEN)b|ac)../
        ac
   No match
        ad 
    0: ad
   
   /^(?=a(*THEN)b|ac)/
       ac
    0: 
       
   /\A.*?(?:a|b(*THEN)c)/
       ba
    0: ba
   
   /\A.*?(?:a|b(*THEN)c)++/
       ba
    0: ba
   
   /\A.*?(?:a|b(*THEN)c|d)/
       ba
    0: ba
   
   /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
       aac 
    0: aac
   
   /\A.*?(a|b(*THEN)c)/
       ba
    0: ba
    1: a
   
   /^(A(*THEN)B|A(*THEN)D)/
       AD           
    0: AD
    1: AD
       
   /(?!b(*THEN)a)bn|bnn/
       bnn
    0: bn
   
   /(?(?=b(*SKIP)a)bn|bnn)/
       bnn
   No match
   
   /(?=b(*THEN)a|)bn|bnn/
       bnn
    0: bn
   
   /-------------------------/ 
   
   /(*LIMIT_MATCH=12bc)abc/
   Failed: (*VERB) not recognized or malformed at offset 7
   
   /(*LIMIT_MATCH=4294967290)abc/
   Failed: (*VERB) not recognized or malformed at offset 7
   
   /(*LIMIT_RECURSION=4294967280)abc/I
   Capturing subpattern count = 0
   Recursion limit = 4294967280
   No options
   First char = 'a'
   Need char = 'c'
   
   /(a+)*zz/
       aaaaaaaaaaaaaz
   No match
       aaaaaaaaaaaaaz\q3000
   Error -8 (match limit exceeded)
   
   /(a+)*zz/S-
       aaaaaaaaaaaaaz\Q10 
   Error -21 (recursion limit exceeded)
   
   /(*LIMIT_MATCH=3000)(a+)*zz/I
   Capturing subpattern count = 1
   Match limit = 3000
   No options
   No first char
   Need char = 'z'
       aaaaaaaaaaaaaz
   Error -8 (match limit exceeded)
       aaaaaaaaaaaaaz\q60000
   Error -8 (match limit exceeded)
   
   /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
   Capturing subpattern count = 1
   Match limit = 3000
   No options
   No first char
   Need char = 'z'
       aaaaaaaaaaaaaz
   Error -8 (match limit exceeded)
   
   /(*LIMIT_MATCH=60000)(a+)*zz/I
   Capturing subpattern count = 1
   Match limit = 60000
   No options
   No first char
   Need char = 'z'
       aaaaaaaaaaaaaz
   No match
       aaaaaaaaaaaaaz\q3000
   Error -8 (match limit exceeded)
   
   /(*LIMIT_RECURSION=10)(a+)*zz/IS-
   Capturing subpattern count = 1
   Recursion limit = 10
   No options
   No first char
   Need char = 'z'
   Subject length lower bound = 2
   Starting byte set: a z 
       aaaaaaaaaaaaaz
   Error -21 (recursion limit exceeded)
       aaaaaaaaaaaaaz\Q1000
   Error -21 (recursion limit exceeded)
   
   /(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/IS-
   Capturing subpattern count = 1
   Recursion limit = 10
   No options
   No first char
   Need char = 'z'
   Subject length lower bound = 2
   Starting byte set: a z 
       aaaaaaaaaaaaaz
   Error -21 (recursion limit exceeded)
   
   /(*LIMIT_RECURSION=1000)(a+)*zz/IS-
   Capturing subpattern count = 1
   Recursion limit = 1000
   No options
   No first char
   Need char = 'z'
   Subject length lower bound = 2
   Starting byte set: a z 
       aaaaaaaaaaaaaz
   No match
       aaaaaaaaaaaaaz\Q10
   Error -21 (recursion limit exceeded)
   
 /-- End of testinput2 --/  /-- End of testinput2 --/

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>