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

version 1.1.1.2, 2012/02/21 23:50:25 version 1.1.1.5, 2014/06/15 19:46:05
Line 7 Line 7
           
     NOTE: This is a non-UTF set of tests. When UTF support is needed, use      NOTE: This is a non-UTF set of tests. When UTF support is needed, use
     test 5, and if Unicode Property Support is needed, use test 7. --/      test 5, and if Unicode Property Support is needed, use test 7. --/
       
   < forbid 8W 
       
 /(a)b|/I  /(a)b|/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 228  No options Line 231  No options
 No first char  No first char
 No need char  No need char
 Subject length lower bound = 1  Subject length lower bound = 1
Starting byte set: \x09 \x0a \x0c \x0d \x20 a b Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 a b 
   
 /(ab\2)/  /(ab\2)/
 Failed: reference to non-existent subpattern at offset 6  Failed: reference to non-existent subpattern at offset 6
Line 448  Need char = '=' Line 451  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 497  No need char Line 501  No need char
   
 /(?s).*/I  /(?s).*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options: anchored dotall  Options: anchored dotall
 No first char  No first char
 No need char  No need char
Line 544  Failed: conditional group contains more than two branc Line 549  Failed: conditional group contains more than two branc
 Failed: conditional group contains more than two branches at offset 12  Failed: conditional group contains more than two branches at offset 12
   
 /(?(1a)/  /(?(1a)/
Failed: missing ) at offset 6Failed: malformed number or name after (?( at offset 4
   
 /(?(1a))/  /(?(1a))/
Failed: reference to non-existent subpattern at offset 6Failed: malformed number or name after (?( at offset 4
   
 /(?(?i))/  /(?(?i))/
 Failed: assertion expected after (?( at offset 3  Failed: assertion expected after (?( at offset 3
Line 630  No match Line 635  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 661  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 670  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 687  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 705  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 748  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 765  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
   May match empty string
 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
   May match empty string
 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 788  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 817  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 830  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 1203  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 1224  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 1234  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 1250  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 1262  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 1377  Need char = 'c' Line 1383  Need char = 'c'
   
 /a*/I  /a*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 1395  Need char = 'a' Line 1402  Need char = 'a'
   
 /a{0,3}/I  /a{0,3}/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 1437  Need char = 'r' Line 1445  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 1593  Need char = 'e' Line 1602  Need char = 'e'
   
 /a?b?/I  /a?b?/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 1611  No match Line 1621  No match
   
 /|-/I  /|-/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 2624  Need char = '-' Line 2635  Need char = '-'
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options: extended  Options: extended
 No first char  No first char
 No need char  No need char
Line 2643  No need char Line 2655  No need char
 /[\s]/DZ  /[\s]/DZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        [\x09\x0a\x0c\x0d ]        [\x09-\x0d ]
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 2655  No need char Line 2667  No need char
 /[\S]/DZ  /[\S]/DZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg)        [\x00-\x08\x0e-\x1f!-\xff] (neg)
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 2766  Need char = '0' Line 2778  Need char = '0'
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 2865  No match Line 2878  No match
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 2881  No options Line 2895  No options
 First char = 'x'  First char = 'x'
 No need char  No need char
   
/x{1,3}+/DZ/x{1,3}+/BZO
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
         Once  
         x          x
        x{0,2}        x{0,2}+
         Ket          Ket
           End
   ------------------------------------------------------------------
   
   /x{1,3}+/BZOi
   ------------------------------------------------------------------
           Bra
        /i x
        /i x{0,2}+
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  
 No options  
 First char = 'x'  
 No need char  
   
   /[^x]{1,3}+/BZO
   ------------------------------------------------------------------
           Bra
           [^x]
           [^x]{0,2}+
           Ket
           End
   ------------------------------------------------------------------
   
   /[^x]{1,3}+/BZOi
   ------------------------------------------------------------------
           Bra
        /i [^x]
        /i [^x]{0,2}+
           Ket
           End
   ------------------------------------------------------------------
   
 /(x)*+/DZ  /(x)*+/DZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
Line 2907  No need char Line 2942  No need char
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
   
 /^(\w++|\s++)*$/I  /^(\w++|\s++)*$/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
Line 3074  Need char = 'b' Line 3111  Need char = 'b'
         [bc]+          [bc]+
         Ket          Ket
         CBra 5          CBra 5
        \w*        \w*+
         Ket          Ket
         Ket          Ket
         Ket          Ket
Line 3153  Failed: missing terminating ] for character class at o Line 3190  Failed: missing terminating ] for character class at o
 /[\s]/IDZ  /[\s]/IDZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        [\x09\x0a\x0c\x0d ]        [\x09-\x0d ]
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 3217  No match Line 3254  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 3268  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 3286  Need char = 'b' Line 3325  Need char = 'b'
   
 /(?=a).*/I  /(?=a).*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 First char = 'a'  First char = 'a'
 No need char  No need char
Line 3304  Need char = 'z' (caseless) Line 3344  Need char = 'z' (caseless)
   
 /(?=a)(?=b)/I  /(?=a)(?=b)/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 First char = 'a'  First char = 'a'
 No need char  No need char
Line 3370  Need char = 'a' Line 3411  Need char = 'a'
   
 /(a)*/I  /(a)*/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 3598  No match Line 3640  No match
   
 /(?C0)(abc(?C1))*/I  /(?C0)(abc(?C1))*/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 3631  No need char Line 3674  No need char
   
 /(\d{3}(?C))*/I  /(\d{3}(?C))*/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 3745  Callout 2: last capture = -1 Line 3789  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 3766  Need char = 'b' Line 3811  Need char = 'b'
 --->abbbbbccc  --->abbbbbccc
   1 ^        ^        1 ^        ^    
 Callout data = 1  Callout data = 1
   1 ^       ^       
 Callout data = 1  
   1 ^      ^        
 Callout data = 1  
   1 ^     ^         
 Callout data = 1  
   1 ^    ^          
 Callout data = 1  
   1 ^   ^           
 Callout data = 1  
   1 ^  ^            
 Callout data = 1  
   1 ^ ^             
 Callout data = 1  
 No match  No match
   
 /a(b+?)(c*?)(?C1)/I  /a(b+?)(c*?)(?C1)/I
Line 3876  Failed: recursive call could loop indefinitely at offs Line 3907  Failed: recursive call could loop indefinitely at offs
   
 /^([^()]|\((?1)*\))*$/I  /^([^()]|\((?1)*\))*$/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
Line 4155  Named capturing subpatterns: Line 4187  Named capturing subpatterns:
   one     1    one     1
   three   3    three   3
   two     2    two     2
   May match empty string
 Options: anchored caseless  Options: anchored caseless
 No first char  No first char
 No need char  No need char
Line 4254  Need char = 'z' Line 4287  Need char = 'z'
   
 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
 Capturing subpattern count = 31  Capturing subpattern count = 31
   May match empty string
 Options: anchored dotall  Options: anchored dotall
 No first char  No first char
 No need char  No need char
Line 4261  No need char Line 4295  No need char
 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
 Capturing subpattern count = 31  Capturing subpattern count = 31
 Max back reference = 31  Max back reference = 31
   May match empty string
 Options: dotall  Options: dotall
 No first char  No first char
 No need char  No need char
Line 4268  No need char Line 4303  No need char
 /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
 Capturing subpattern count = 32  Capturing subpattern count = 32
 Max back reference = 32  Max back reference = 32
   May match empty string
 Options: dotall  Options: dotall
 No first char  No first char
 No need char  No need char
Line 4344  Minimum match() recursion limit = 6 Line 4380  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 4419  Capturing subpattern count = 2 Line 4455  Capturing subpattern count = 2
 Named capturing subpatterns:  Named capturing subpatterns:
   Tes    1    Tes    1
   Test   2    Test   2
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 4437  Capturing subpattern count = 2 Line 4474  Capturing subpattern count = 2
 Named capturing subpatterns:  Named capturing subpatterns:
   Tes    2    Tes    2
   Test   1    Test   1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 4514  Need char = ']' Line 4552  Need char = ']'
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 2  Capturing subpattern count = 2
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 4534  No need char Line 4573  No need char
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 2  Capturing subpattern count = 2
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 4565  No need char Line 4605  No need char
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 2  Capturing subpattern count = 2
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 4572  No need char Line 4613  No need char
 /[ab]{1}+/DZ  /[ab]{1}+/DZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        Once        [ab]{1,1}+
        [ab]{1,1} 
         Ket          Ket
         Ket  
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
 Capturing subpattern count = 0  Capturing subpattern count = 0
Line 5286  No match Line 5325  No match
         Callout 255 0 21          Callout 255 0 21
         CBra 1          CBra 1
         Callout 255 1 9          Callout 255 1 9
        [ab]{1,4}        [ab]{1,4}+
         Callout 255 10 1          Callout 255 10 1
         c          c
         Callout 255 11 0          Callout 255 11 0
Line 5299  No match Line 5338  No match
         Ket          Ket
         CBra 1          CBra 1
         Callout 255 1 9          Callout 255 1 9
        [ab]{1,4}        [ab]{1,4}+
         Callout 255 10 1          Callout 255 10 1
         c          c
         Callout 255 11 0          Callout 255 11 0
Line 5312  No match Line 5351  No match
         Ket          Ket
         CBra 1          CBra 1
         Callout 255 1 9          Callout 255 1 9
        [ab]{1,4}        [ab]{1,4}+
         Callout 255 10 1          Callout 255 10 1
         c          c
         Callout 255 11 0          Callout 255 11 0
Line 5325  No match Line 5364  No match
         Ket          Ket
         CBra 1          CBra 1
         Callout 255 1 9          Callout 255 1 9
        [ab]{1,4}        [ab]{1,4}+
         Callout 255 10 1          Callout 255 10 1
         c          c
         Callout 255 11 0          Callout 255 11 0
Line 5339  No match Line 5378  No match
         Braminzero          Braminzero
         CBra 1          CBra 1
         Callout 255 1 9          Callout 255 1 9
        [ab]{1,4}        [ab]{1,4}+
         Callout 255 10 1          Callout 255 10 1
         c          c
         Callout 255 11 0          Callout 255 11 0
Line 5392  Need char = '3' Line 5431  Need char = '3'
   
 /\b.*/I  /\b.*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 5400  No need char Line 5441  No need char
   
 /\b.*/Is  /\b.*/Is
 Capturing subpattern count = 0  Capturing subpattern count = 0
   Max lookbehind = 1
   May match empty string
 Options: dotall  Options: dotall
 No first char  No first char
 No need char  No need char
Line 5408  No need char Line 5451  No need char
   
 /(?!.bcd).*/I  /(?!.bcd).*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 5996  Matched, but too many substrings Line 6040  Matched, but too many substrings
   
 /[^()]*(?:\((?R)\)[^()]*)*/I  /[^()]*(?:\((?R)\)[^()]*)*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 6008  No need char Line 6053  No need char
   
 /[^()]*(?:\((?>(?R))\)[^()]*)*/I  /[^()]*(?:\((?>(?R))\)[^()]*)*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 6018  No need char Line 6064  No need char
   
 /[^()]*(?:\((?R)\))*[^()]*/I  /[^()]*(?:\((?R)\))*[^()]*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 6028  No need char Line 6075  No need char
   
 /(?:\((?R)\))*[^()]*/I  /(?:\((?R)\))*[^()]*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 6040  No need char Line 6088  No need char
   
 /(?:\((?R)\))|[^()]*/I  /(?:\((?R)\))|[^()]*/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 6089  no parentheses with name "Z" Line 6138  no parentheses with name "Z"
  2: a1   2: a1
 copy substring Z failed -7  copy substring Z failed -7
   C a1 (2) A    C a1 (2) A
       
   /(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/IJ
   Capturing subpattern count = 3
   Named capturing subpatterns:
     a   1
     a   3
     b   2
   May match empty string
   Options: dupnames
   No first char
   No need char
   
 /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
 Capturing subpattern count = 2  Capturing subpattern count = 2
Line 6299  Need char = 'X' Line 6359  Need char = 'X'
  1: X   1: X
   
 /(?:(?(2y)a|b)(X))+/I  /(?:(?(2y)a|b)(X))+/I
Failed: reference to non-existent subpattern at offset 9Failed: malformed number or name after (?( at offset 7
   
 /(?:(?(ZA)a|b)(?P<ZZ>X))+/I  /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
 Failed: reference to non-existent subpattern at offset 9  Failed: reference to non-existent subpattern at offset 9
Line 6371  No options Line 6431  No options
 No first char  No first char
 Need char = ','  Need char = ','
 Subject length lower bound = 1  Subject length lower bound = 1
Starting byte set: \x09 \x0a \x0c \x0d \x20 , Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 , 
     \x0b,\x0b      \x0b,\x0b
 0: , 0: \x0b,\x0b
     \x0c,\x0d      \x0c,\x0d
  0: \x0c,\x0d   0: \x0c,\x0d
   
Line 6482  No match Line 6542  No match
 No match  No match
   
 /^abc/Im<bad>  /^abc/Im<bad>
Unknown newline type at: <bad>Unknown modifier at: <bad>
   
   
 /abc/I  /abc/I
Line 6491  No options Line 6551  No options
 First char = 'a'  First char = 'a'
 Need char = 'c'  Need char = 'c'
     xyz\rabc\<bad>      xyz\rabc\<bad>
Unknown newline type at: <bad>Unknown escape sequence at: <bad>
     abc      abc
  0: abc   0: abc
   
 /.*/I<lf>  /.*/I<lf>
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options:  Options:
 Forced newline sequence: LF  Forced newline sequence: LF
 First char at start or follows newline  First char at start or follows newline
Line 6538  Need char = 'f' Line 6599  Need char = 'f'
   
 +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I  +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 No first char  No first char
 No need char  No need char
Line 7461  Matched, but too many substrings Line 7523  Matched, but too many substrings
 /a*[^a]/BZ  /a*[^a]/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        a*        a*+
         [^a]          [^a]
         Ket          Ket
         End          End
Line 7603  No match Line 7665  No match
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
         ^          ^
        [a-z]+        [a-z]++
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 7644  No match Line 7706  No match
         ^          ^
         CBra 1          CBra 1
         Cond          Cond
      2 Cond nref      2 Cond ref
         y          y
         Ket          Ket
         [()]          [()]
Line 7704  Named capturing subpatterns: Line 7766  Named capturing subpatterns:
   one     1    one     1
   three   3    three   3
   two     2    two     2
   May match empty string
 Options: anchored caseless  Options: anchored caseless
 No first char  No first char
 No need char  No need char
Line 7803  Failed: reference to non-existent subpattern at offset Line 7866  Failed: reference to non-existent subpattern at offset
  1: abcabc1Xabc2XabcX   1: abcabc1Xabc2XabcX
  2: abcabc1Xabc2XabcX   2: abcabc1Xabc2XabcX
   
/(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x/(?<A> (?'B' abc (?(R) (?(R&C)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
 Failed: reference to non-existent subpattern at offset 29  Failed: reference to non-existent subpattern at offset 29
   
 /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x  
     abcabc1Xabc2XabcXabcabc  
  0: abcabc1Xabc2XabcX  
  1: abcabc1Xabc2XabcX  
  2: abcabc1Xabc2XabcX  
   
 /^(?(DEFINE) abc | xyz ) /x  /^(?(DEFINE) abc | xyz ) /x
 Failed: DEFINE group contains more than one branch at offset 22  Failed: DEFINE group contains more than one branch at offset 22
   
Line 8035  Failed: a numbered reference must not be zero at offse Line 8092  Failed: a numbered reference must not be zero at offse
 /^(a)\g{3/  /^(a)\g{3/
 Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8  Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8
   
/^(a)\g{4a}//^(a)\g{aa}/
 Failed: reference to non-existent subpattern at offset 9  Failed: reference to non-existent subpattern at offset 9
   
 /^a.b/<lf>  /^a.b/<lf>
Line 8540  No match Line 8597  No match
         \d          \d
         \v++          \v++
         \w          \w
        \v+        \v++
         \S          \S
         \v++          \v++
         \V          \V
Line 8638  No match Line 8695  No match
  +6 ^      ^    (*FAIL)   +6 ^      ^    (*FAIL)
  +6 ^     ^     (*FAIL)   +6 ^     ^     (*FAIL)
  +6 ^    ^      (*FAIL)   +6 ^    ^      (*FAIL)
  +4 ^  ^        c+  
  +2 ^ ^         b?  
  +4 ^ ^         c+  
  +2 ^^          b?  
  +4 ^^          c+  
  +0  ^          a+   +0  ^          a+
  +2  ^ ^        b?   +2  ^ ^        b?
  +4  ^  ^       c+   +4  ^  ^       c+
  +6  ^     ^    (*FAIL)   +6  ^     ^    (*FAIL)
  +6  ^    ^     (*FAIL)   +6  ^    ^     (*FAIL)
  +6  ^   ^      (*FAIL)   +6  ^   ^      (*FAIL)
  +4  ^ ^        c+  
  +2  ^^         b?  
  +4  ^^         c+  
  +0   ^         a+   +0   ^         a+
  +2   ^^        b?   +2   ^^        b?
  +4   ^ ^       c+   +4   ^ ^       c+
  +6   ^    ^    (*FAIL)   +6   ^    ^    (*FAIL)
  +6   ^   ^     (*FAIL)   +6   ^   ^     (*FAIL)
  +6   ^  ^      (*FAIL)   +6   ^  ^      (*FAIL)
  +4   ^^        c+  
 No match  No match
   
 /a+b?(*PRUNE)c+(*FAIL)/C  /a+b?(*PRUNE)c+(*FAIL)/C
Line 8782  No match Line 8830  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 9227  No match Line 9275  No match
     ab        ab  
 No match  No match
   
/a(?!)+b//a(?!)b/BZ
Failed: nothing to repeat at offset 5------------------------------------------------------------------
         Bra
         a
         *FAIL
         b
         Ket
         End
 ------------------------------------------------------------------
   
   /(?!)?a/BZ
   ------------------------------------------------------------------
           Bra
           Brazero
           Assert not
           Ket
           a
           Ket
           End
   ------------------------------------------------------------------
       ab
    0: a
   
 /a(*FAIL)+b/  /a(*FAIL)+b/
 Failed: nothing to repeat at offset 8  Failed: nothing to repeat at offset 8
   
Line 9243  Starting byte set: x y z  Line 9311  Starting byte set: x y z 
   
 /(?(?=.*b)b|^)/CI  /(?(?=.*b)b|^)/CI
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options:  Options:
 No first char  No first char
 No need char  No need char
Line 9255  No need char Line 9324  No need char
  +7 ^ ^     b   +7 ^ ^     b
  +7 ^^      b   +7 ^^      b
  +7 ^       b   +7 ^       b
   +11 ^       ^
 +12 ^       )  +12 ^       )
 +13 ^         +13 ^       
  0:    0: 
Line 9346  No match Line 9416  No match
 No match  No match
       
 /(*NO_START_OPT)xyz/C  /(*NO_START_OPT)xyz/C
  abcxyz   abcxyz
 --->abcxyz  --->abcxyz
 +15 ^          x  +15 ^          x
 +15  ^         x  +15  ^         x
Line 9356  No match Line 9426  No match
 +17    ^ ^     z  +17    ^ ^     z
 +18    ^  ^      +18    ^  ^    
  0: xyz   0: xyz
     
   /(*NO_AUTO_POSSESS)a+b/BZ  
   ------------------------------------------------------------------
           Bra
           a+
           b
           Ket
           End
   ------------------------------------------------------------------
   
 /xyz/CY  /xyz/CY
   abcxyz     abcxyz 
Line 9385  No match Line 9464  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 9779  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 10170  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 10151  No set of starting bytes Line 10232  No set of starting bytes
 Capturing subpattern count = 1  Capturing subpattern count = 1
 Named capturing subpatterns:  Named capturing subpatterns:
   a   1    a   1
   a   1  
 No options  No options
 No first char  No first char
 No need char  No need char
Line 10224  No match Line 10304  No match
         Ket          Ket
         Ket          Ket
         Cond          Cond
      4 Cond nref        Cond ref <D>2
         X          X
         Alt          Alt
         Y          Y
Line 10270  No match Line 10350  No match
         CBra 4          CBra 4
         d          d
         Cond          Cond
        Cond nrecurse 1        Cond recurse <A>2
         $          $
         Alt          Alt
         Recurse          Recurse
Line 10332  Partial match: abca Line 10412  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 10608  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 10635  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 10646  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 10679  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 10787  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 11001  No need char Line 11107  No need char
   
 /(^ab|^)+/I  /(^ab|^)+/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
   
 /(^ab|^)++/I  /(^ab|^)++/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
Line 11025  No need char Line 11133  No need char
   
 /(?:^ab|^)+/I  /(?:^ab|^)+/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
   
 /(?:^ab|^)++/I  /(?:^ab|^)++/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 Options: anchored  Options: anchored
 No first char  No first char
 No need char  No need char
Line 11049  Need char = 'b' Line 11159  Need char = 'b'
   
 /(.*ab|.*)+/I  /(.*ab|.*)+/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
   
 /(.*ab|.*)++/I  /(.*ab|.*)++/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
   May match empty string
 No options  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
Line 11073  Need char = 'b' Line 11185  Need char = 'b'
   
 /(?:.*ab|.*)+/I  /(?:.*ab|.*)+/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
   
 /(?:.*ab|.*)++/I  /(?:.*ab|.*)++/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
   May match empty string
 No options  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
Line 11233  No match Line 11347  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 11485  Matched, but too many substrings Line 11598  Matched, but too many substrings
         Assert not          Assert not
         a          a
         Ket          Ket
        \w+        \w++
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 11593  No match Line 11706  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 11715  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
   May match empty string
 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 11790  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
         ^          ^
         Once_NC          Once_NC
        a+        a++
         Ket          Ket
         Once          Once
         CBra 1          CBra 1
        z+        z++
         Ket          Ket
         Ket          Ket
         \w          \w
Line 11800  No match Line 11858  No match
   
 /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/  /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
      \Maabbccddee       \Maabbccddee
Minimum match() limit = 12Minimum match() limit = 7
Minimum match() recursion limit = 3Minimum match() recursion limit = 2
  0: aabbccddee   0: aabbccddee
   
 /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/  /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
      \Maabbccddee       \Maabbccddee
Minimum match() limit = 22Minimum match() limit = 17
Minimum match() recursion limit = 21Minimum match() recursion limit = 16
  0: aabbccddee   0: aabbccddee
  1: aa   1: aa
  2: bb   2: bb
Line 11817  Minimum match() recursion limit = 21 Line 11875  Minimum match() recursion limit = 21
   
 /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/  /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
      \Maabbccddee       \Maabbccddee
Minimum match() limit = 18Minimum match() limit = 13
Minimum match() recursion limit = 13Minimum match() recursion limit = 10
  0: aabbccddee   0: aabbccddee
  1: aa   1: aa
  2: cc   2: cc
Line 11909  No match Line 11967  No match
 Failed: \N is not supported in a class at offset 3  Failed: \N is not supported in a class at offset 3
   
 /a[B-\Nc]/   /a[B-\Nc]/ 
Failed: \N is not supported in a class at offset 5Failed: invalid range in character class at offset 5
   
   /a[B\Nc]/ 
   Failed: \N is not supported in a class at offset 4
   
 /(a)(?2){0,1999}?(b)/  /(a)(?2){0,1999}?(b)/
   
 /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/  /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
Line 12010  MK: x Line 12071  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
   May match empty string
   No options
   No first char
   No need char
   
   /(?>.*)(?<=(abcd)|(wxyz))/I
   Capturing subpattern count = 2
   Max lookbehind = 4
   May match empty string
   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
   May match empty string
   No options
   No first char
   No need char
   Study returned NULL
   
   /.?/S!I
   Capturing subpattern count = 0
   May match empty string
   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)
   
   /-- This test causes a segfault with Perl 5.18.0 --/
   
   /^(?=(a)){0}b(?1)/
       backgammon
    0: ba
   
   /(?|(?<n>f)|(?<n>b))/JI
   Capturing subpattern count = 1
   Named capturing subpatterns:
     n   1
   Options: dupnames
   No first char
   No need char
   
   /(?<a>abc)(?<a>z)\k<a>()/JDZS
   ------------------------------------------------------------------
           Bra
           CBra 1
           abc
           Ket
           CBra 2
           z
           Ket
           \k<a>2
           CBra 3
           Ket
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 3
   Max back reference = 2
   Named capturing subpatterns:
     a   1
     a   2
   Options: dupnames
   First char = 'a'
   Need char = 'z'
   Subject length lower bound = 5
   No set of starting bytes
   
   /a*[bcd]/BZ
   ------------------------------------------------------------------
           Bra
           a*+
           [b-d]
           Ket
           End
   ------------------------------------------------------------------
   
   /[bcd]*a/BZ
   ------------------------------------------------------------------
           Bra
           [b-d]*+
           a
           Ket
           End
   ------------------------------------------------------------------
   
   /-- A complete set of tests for auto-possessification of character types --/
   
   /\D+\D \D+\d \D+\S \D+\s \D+\W \D+\w \D+. \D+\C \D+\R \D+\H \D+\h \D+\V \D+\v \D+\Z \D+\z \D+$/BZx
   ------------------------------------------------------------------
           Bra
           \D+
           \D
           \D++
           \d
           \D+
           \S
           \D+
           \s
           \D+
           \W
           \D+
           \w
           \D+
           Any
           \D+
           AllAny
           \D+
           \R
           \D+
           \H
           \D+
           \h
           \D+
           \V
           \D+
           \v
           \D+
           \Z
           \D++
           \z
           \D+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\d+\D \d+\d \d+\S \d+\s \d+\W \d+\w \d+. \d+\C \d+\R \d+\H \d+\h \d+\V \d+\v \d+\Z \d+\z \d+$/BZx
   ------------------------------------------------------------------
           Bra
           \d++
           \D
           \d+
           \d
           \d+
           \S
           \d++
           \s
           \d++
           \W
           \d+
           \w
           \d+
           Any
           \d+
           AllAny
           \d++
           \R
           \d+
           \H
           \d++
           \h
           \d+
           \V
           \d++
           \v
           \d++
           \Z
           \d++
           \z
           \d++
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\S+\D \S+\d \S+\S \S+\s \S+\W \S+\w \S+. \S+\C \S+\R \S+\H \S+\h \S+\V \S+\v \S+\Z \S+\z \S+$/BZx
   ------------------------------------------------------------------
           Bra
           \S+
           \D
           \S+
           \d
           \S+
           \S
           \S++
           \s
           \S+
           \W
           \S+
           \w
           \S+
           Any
           \S+
           AllAny
           \S++
           \R
           \S+
           \H
           \S++
           \h
           \S+
           \V
           \S++
           \v
           \S++
           \Z
           \S++
           \z
           \S++
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\s+\D \s+\d \s+\S \s+\s \s+\W \s+\w \s+. \s+\C \s+\R \s+\H \s+\h \s+\V \s+\v \s+\Z \s+\z \s+$/BZx
   ------------------------------------------------------------------
           Bra
           \s+
           \D
           \s++
           \d
           \s++
           \S
           \s+
           \s
           \s+
           \W
           \s++
           \w
           \s+
           Any
           \s+
           AllAny
           \s+
           \R
           \s+
           \H
           \s+
           \h
           \s+
           \V
           \s+
           \v
           \s+
           \Z
           \s++
           \z
           \s+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\W+\D \W+\d \W+\S \W+\s \W+\W \W+\w \W+. \W+\C \W+\R \W+\H \W+\h \W+\V \W+\v \W+\Z \W+\z \W+$/BZx
   ------------------------------------------------------------------
           Bra
           \W+
           \D
           \W++
           \d
           \W+
           \S
           \W+
           \s
           \W+
           \W
           \W++
           \w
           \W+
           Any
           \W+
           AllAny
           \W+
           \R
           \W+
           \H
           \W+
           \h
           \W+
           \V
           \W+
           \v
           \W+
           \Z
           \W++
           \z
           \W+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\w+\D \w+\d \w+\S \w+\s \w+\W \w+\w \w+. \w+\C \w+\R \w+\H \w+\h \w+\V \w+\v \w+\Z \w+\z \w+$/BZx
   ------------------------------------------------------------------
           Bra
           \w+
           \D
           \w+
           \d
           \w+
           \S
           \w++
           \s
           \w++
           \W
           \w+
           \w
           \w+
           Any
           \w+
           AllAny
           \w++
           \R
           \w+
           \H
           \w++
           \h
           \w+
           \V
           \w++
           \v
           \w++
           \Z
           \w++
           \z
           \w++
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\C+\D \C+\d \C+\S \C+\s \C+\W \C+\w \C+. \C+\C \C+\R \C+\H \C+\h \C+\V \C+\v \C+\Z \C+\z \C+$/BZx
   ------------------------------------------------------------------
           Bra
           AllAny+
           \D
           AllAny+
           \d
           AllAny+
           \S
           AllAny+
           \s
           AllAny+
           \W
           AllAny+
           \w
           AllAny+
           Any
           AllAny+
           AllAny
           AllAny+
           \R
           AllAny+
           \H
           AllAny+
           \h
           AllAny+
           \V
           AllAny+
           \v
           AllAny+
           \Z
           AllAny++
           \z
           AllAny+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\R+\D \R+\d \R+\S \R+\s \R+\W \R+\w \R+. \R+\C \R+\R \R+\H \R+\h \R+\V \R+\v \R+\Z \R+\z \R+$/BZx
   ------------------------------------------------------------------
           Bra
           \R+
           \D
           \R++
           \d
           \R+
           \S
           \R++
           \s
           \R+
           \W
           \R++
           \w
           \R++
           Any
           \R+
           AllAny
           \R+
           \R
           \R+
           \H
           \R++
           \h
           \R+
           \V
           \R+
           \v
           \R+
           \Z
           \R++
           \z
           \R+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\H+\D \H+\d \H+\S \H+\s \H+\W \H+\w \H+. \H+\C \H+\R \H+\H \H+\h \H+\V \H+\v \H+\Z \H+\z \H+$/BZx
   ------------------------------------------------------------------
           Bra
           \H+
           \D
           \H+
           \d
           \H+
           \S
           \H+
           \s
           \H+
           \W
           \H+
           \w
           \H+
           Any
           \H+
           AllAny
           \H+
           \R
           \H+
           \H
           \H++
           \h
           \H+
           \V
           \H+
           \v
           \H+
           \Z
           \H++
           \z
           \H+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\h+\D \h+\d \h+\S \h+\s \h+\W \h+\w \h+. \h+\C \h+\R \h+\H \h+\h \h+\V \h+\v \h+\Z \h+\z \h+$/BZx
   ------------------------------------------------------------------
           Bra
           \h+
           \D
           \h++
           \d
           \h++
           \S
           \h+
           \s
           \h+
           \W
           \h++
           \w
           \h+
           Any
           \h+
           AllAny
           \h++
           \R
           \h++
           \H
           \h+
           \h
           \h+
           \V
           \h++
           \v
           \h+
           \Z
           \h++
           \z
           \h+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\V+\D \V+\d \V+\S \V+\s \V+\W \V+\w \V+. \V+\C \V+\R \V+\H \V+\h \V+\V \V+\v \V+\Z \V+\z \V+$/BZx
   ------------------------------------------------------------------
           Bra
           \V+
           \D
           \V+
           \d
           \V+
           \S
           \V+
           \s
           \V+
           \W
           \V+
           \w
           \V+
           Any
           \V+
           AllAny
           \V++
           \R
           \V+
           \H
           \V+
           \h
           \V+
           \V
           \V++
           \v
           \V+
           \Z
           \V++
           \z
           \V+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\v+\D \v+\d \v+\S \v+\s \v+\W \v+\w \v+. \v+\C \v+\R \v+\H \v+\h \v+\V \v+\v \v+\Z \v+\z \v+$/BZx
   ------------------------------------------------------------------
           Bra
           \v+
           \D
           \v++
           \d
           \v++
           \S
           \v+
           \s
           \v+
           \W
           \v++
           \w
           \v+
           Any
           \v+
           AllAny
           \v+
           \R
           \v+
           \H
           \v++
           \h
           \v++
           \V
           \v+
           \v
           \v+
           \Z
           \v++
           \z
           \v+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   / a+\D  a+\d  a+\S  a+\s  a+\W  a+\w  a+.  a+\C  a+\R  a+\H  a+\h  a+\V  a+\v  a+\Z  a+\z  a+$/BZx
   ------------------------------------------------------------------
           Bra
           a+
           \D
           a++
           \d
           a+
           \S
           a++
           \s
           a++
           \W
           a+
           \w
           a+
           Any
           a+
           AllAny
           a++
           \R
           a+
           \H
           a++
           \h
           a+
           \V
           a++
           \v
           a++
           \Z
           a++
           \z
           a++
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\n+\D \n+\d \n+\S \n+\s \n+\W \n+\w \n+. \n+\C \n+\R \n+\H \n+\h \n+\V \n+\v \n+\Z \n+\z \n+$/BZx
   ------------------------------------------------------------------
           Bra
           \x0a+
           \D
           \x0a++
           \d
           \x0a++
           \S
           \x0a+
           \s
           \x0a+
           \W
           \x0a++
           \w
           \x0a+
           Any
           \x0a+
           AllAny
           \x0a+
           \R
           \x0a+
           \H
           \x0a++
           \h
           \x0a++
           \V
           \x0a+
           \v
           \x0a+
           \Z
           \x0a++
           \z
           \x0a+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   / .+\D  .+\d  .+\S  .+\s  .+\W  .+\w  .+.  .+\C  .+\R  .+\H  .+\h  .+\V  .+\v  .+\Z  .+\z  .+$/BZx
   ------------------------------------------------------------------
           Bra
           Any+
           \D
           Any+
           \d
           Any+
           \S
           Any+
           \s
           Any+
           \W
           Any+
           \w
           Any+
           Any
           Any+
           AllAny
           Any++
           \R
           Any+
           \H
           Any+
           \h
           Any+
           \V
           Any+
           \v
           Any+
           \Z
           Any++
           \z
           Any+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   / .+\D  .+\d  .+\S  .+\s  .+\W  .+\w  .+.  .+\C  .+\R  .+\H  .+\h  .+\V  .+\v  .+\Z  .+\z  .+$/BZxs
   ------------------------------------------------------------------
           Bra
           AllAny+
           \D
           AllAny+
           \d
           AllAny+
           \S
           AllAny+
           \s
           AllAny+
           \W
           AllAny+
           \w
           AllAny+
           AllAny
           AllAny+
           AllAny
           AllAny+
           \R
           AllAny+
           \H
           AllAny+
           \h
           AllAny+
           \V
           AllAny+
           \v
           AllAny+
           \Z
           AllAny++
           \z
           AllAny+
           $
           Ket
           End
   ------------------------------------------------------------------
   
   /\D+$  \d+$  \S+$  \s+$  \W+$  \w+$  \C+$  \R+$  \H+$  \h+$  \V+$  \v+$   a+$  \n+$   .+$  .+$/BZxm
   ------------------------------------------------------------------
           Bra
           \D+
        /m $
           \d++
        /m $
           \S++
        /m $
           \s+
        /m $
           \W+
        /m $
           \w++
        /m $
           AllAny+
        /m $
           \R+
        /m $
           \H+
        /m $
           \h+
        /m $
           \V+
        /m $
           \v+
        /m $
           a+
        /m $
           \x0a+
        /m $
           Any+
        /m $
           Any+
        /m $
           Ket
           End
   ------------------------------------------------------------------
   
   /(?=a+)a(a+)++a/BZ
   ------------------------------------------------------------------
           Bra
           Assert
           a++
           Ket
           a
           CBraPos 1
           a++
           KetRpos
           a
           Ket
           End
   ------------------------------------------------------------------
   
   /a+(bb|cc)a+(?:bb|cc)a+(?>bb|cc)a+(?:bb|cc)+a+(aa)a+(?:bb|aa)/BZ
   ------------------------------------------------------------------
           Bra
           a++
           CBra 1
           bb
           Alt
           cc
           Ket
           a++
           Bra
           bb
           Alt
           cc
           Ket
           a++
           Once_NC
           bb
           Alt
           cc
           Ket
           a++
           Bra
           bb
           Alt
           cc
           KetRmax
           a+
           CBra 2
           aa
           Ket
           a+
           Bra
           bb
           Alt
           aa
           Ket
           Ket
           End
   ------------------------------------------------------------------
   
   /a+(bb|cc)?#a+(?:bb|cc)??#a+(?:bb|cc)?+#a+(?:bb|cc)*#a+(bb|cc)?a#a+(?:aa)?/BZ
   ------------------------------------------------------------------
           Bra
           a++
           Brazero
           CBra 1
           bb
           Alt
           cc
           Ket
           #
           a++
           Braminzero
           Bra
           bb
           Alt
           cc
           Ket
           #
           a++
           Once
           Brazero
           Bra
           bb
           Alt
           cc
           Ket
           Ket
           #
           a++
           Brazero
           Bra
           bb
           Alt
           cc
           KetRmax
           #
           a+
           Brazero
           CBra 2
           bb
           Alt
           cc
           Ket
           a#
           a+
           Brazero
           Bra
           aa
           Ket
           Ket
           End
   ------------------------------------------------------------------
   
   /a+(?:bb)?a#a+(?:|||)#a+(?:|b)a#a+(?:|||)?a/BZ
   ------------------------------------------------------------------
           Bra
           a+
           Brazero
           Bra
           bb
           Ket
           a#
           a++
           Bra
           Alt
           Alt
           Alt
           Ket
           #
           a+
           Bra
           Alt
           b
           Ket
           a#
           a+
           Brazero
           Bra
           Alt
           Alt
           Alt
           Ket
           a
           Ket
           End
   ------------------------------------------------------------------
   
   /[ab]*/BZ
   ------------------------------------------------------------------
           Bra
           [ab]*+
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aaaa
   
   /[ab]*?/BZ
   ------------------------------------------------------------------
           Bra
           [ab]*?
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: 
   
   /[ab]?/BZ
   ------------------------------------------------------------------
           Bra
           [ab]?+
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: a
   
   /[ab]??/BZ
   ------------------------------------------------------------------
           Bra
           [ab]??
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: 
   
   /[ab]+/BZ
   ------------------------------------------------------------------
           Bra
           [ab]++
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aaaa
   
   /[ab]+?/BZ
   ------------------------------------------------------------------
           Bra
           [ab]+?
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: a
   
   /[ab]{2,3}/BZ
   ------------------------------------------------------------------
           Bra
           [ab]{2,3}+
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aaa
   
   /[ab]{2,3}?/BZ
   ------------------------------------------------------------------
           Bra
           [ab]{2,3}?
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aa
   
   /[ab]{2,}/BZ
   ------------------------------------------------------------------
           Bra
           [ab]{2,}+
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aaaa
   
   /[ab]{2,}?/BZ
   ------------------------------------------------------------------
           Bra
           [ab]{2,}?
           Ket
           End
   ------------------------------------------------------------------
       aaaa
    0: aa
   
   /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/BZ
   ------------------------------------------------------------------
           Bra
           \d++
           \s{0,5}+
           =
           \s*+
           \S?
           =
           \w{0,4}+
           \W*+
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-d]{5,12}[e-z0-9]*#[^a-z]+[b-y]*a[2-7]?[^0-9a-z]+/BZ
   ------------------------------------------------------------------
           Bra
           [a-d]{5,12}+
           [0-9e-z]*+
           #
           [\x00-`{-\xff] (neg)++
           [b-y]*+
           a
           [2-7]?+
           [\x00-/:-`{-\xff] (neg)++
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-z]*\s#[ \t]?\S#[a-c]*\S#[C-G]+?\d#[4-8]*\D#[4-9,]*\D#[!$]{0,5}\w#[M-Xf-l]+\W#[a-c,]?\W/BZ
   ------------------------------------------------------------------
           Bra
           [a-z]*+
           \s
           #
           [\x09 ]?+
           \S
           #
           [a-c]*
           \S
           #
           [C-G]++
           \d
           #
           [4-8]*+
           \D
           #
           [,4-9]*
           \D
           #
           [!$]{0,5}+
           \w
           #
           [M-Xf-l]++
           \W
           #
           [,a-c]?
           \W
           Ket
           End
   ------------------------------------------------------------------
   
   /a+(aa|bb)*c#a*(bb|cc)*a#a?(bb|cc)*d#[a-f]*(g|hh)*f/BZ
   ------------------------------------------------------------------
           Bra
           a+
           Brazero
           CBra 1
           aa
           Alt
           bb
           KetRmax
           c#
           a*
           Brazero
           CBra 2
           bb
           Alt
           cc
           KetRmax
           a#
           a?+
           Brazero
           CBra 3
           bb
           Alt
           cc
           KetRmax
           d#
           [a-f]*
           Brazero
           CBra 4
           g
           Alt
           hh
           KetRmax
           f
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-f]*(g|hh|i)*i#[a-x]{4,}(y{0,6})*y#[a-k]+(ll|mm)+n/BZ
   ------------------------------------------------------------------
           Bra
           [a-f]*+
           Brazero
           CBra 1
           g
           Alt
           hh
           Alt
           i
           KetRmax
           i#
           [a-x]{4,}
           Brazero
           SCBra 2
           y{0,6}
           KetRmax
           y#
           [a-k]++
           CBra 3
           ll
           Alt
           mm
           KetRmax
           n
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-f]*(?>gg|hh)+#[a-f]*(?>gg|hh)?#[a-f]*(?>gg|hh)*a#[a-f]*(?>gg|hh)*h/BZ
   ------------------------------------------------------------------
           Bra
           [a-f]*+
           Once_NC
           gg
           Alt
           hh
           KetRmax
           #
           [a-f]*+
           Brazero
           Once_NC
           gg
           Alt
           hh
           Ket
           #
           [a-f]*
           Brazero
           Once_NC
           gg
           Alt
           hh
           KetRmax
           a#
           [a-f]*+
           Brazero
           Once_NC
           gg
           Alt
           hh
           KetRmax
           h
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-c]*d/DZS
   ------------------------------------------------------------------
           Bra
           [a-c]*+
           d
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'd'
   Subject length lower bound = 1
   Starting byte set: a b c d 
   
   /[a-c]+d/DZS
   ------------------------------------------------------------------
           Bra
           [a-c]++
           d
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'd'
   Subject length lower bound = 2
   Starting byte set: a b c 
   
   /[a-c]?d/DZS
   ------------------------------------------------------------------
           Bra
           [a-c]?+
           d
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'd'
   Subject length lower bound = 1
   Starting byte set: a b c d 
   
   /[a-c]{4,6}d/DZS
   ------------------------------------------------------------------
           Bra
           [a-c]{4,6}+
           d
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'd'
   Subject length lower bound = 5
   Starting byte set: a b c 
   
   /[a-c]{0,6}d/DZS
   ------------------------------------------------------------------
           Bra
           [a-c]{0,6}+
           d
           Ket
           End
   ------------------------------------------------------------------
   Capturing subpattern count = 0
   No options
   No first char
   Need char = 'd'
   Subject length lower bound = 1
   Starting byte set: a b c d 
   
   /-- End of special auto-possessive tests --/
   
   /^A\o{1239}B/
   Failed: non-octal character in \o{} (closing brace missing?) at offset 8
   
   /^A\oB/
   Failed: missing opening brace after \o at offset 3
   
   /^A\x{zz}B/ 
   Failed: non-hex character in \x{} (closing brace missing?) at offset 5
   
   /^A\x{12Z/
   Failed: non-hex character in \x{} (closing brace missing?) at offset 7
   
   /^A\x{/
   Failed: non-hex character in \x{} (closing brace missing?) at offset 5
   
   /[ab]++/BZO
   ------------------------------------------------------------------
           Bra
           [ab]++
           Ket
           End
   ------------------------------------------------------------------
   
   /[^ab]*+/BZO
   ------------------------------------------------------------------
           Bra
           [\x00-`c-\xff] (neg)*+
           Ket
           End
   ------------------------------------------------------------------
   
   /a{4}+/BZO
   ------------------------------------------------------------------
           Bra
           a{4}
           Ket
           End
   ------------------------------------------------------------------
   
   /a{4}+/BZOi
   ------------------------------------------------------------------
           Bra
        /i a{4}
           Ket
           End
   ------------------------------------------------------------------
   
   /[a-[:digit:]]+/
   Failed: invalid range in character class at offset 3
   
   /[A-[:digit:]]+/
   Failed: invalid range in character class at offset 3
   
   /[a-[.xxx.]]+/
   Failed: invalid range in character class at offset 3
   
   /[a-[=xxx=]]+/
   Failed: invalid range in character class at offset 3
   
   /[a-[!xxx!]]+/
   Failed: range out of order in character class at offset 3
   
   /[A-[!xxx!]]+/
       A]]]
    0: A]]]
   
   /[a-\d]+/
   Failed: invalid range in character class at offset 4
   
   /(?<0abc>xx)/
   Failed: group name must start with a non-digit at offset 3
   
   /(?&1abc)xx(?<1abc>y)/
   Failed: group name must start with a non-digit at offset 3
   
   /(?<ab-cd>xx)/
   Failed: syntax error in subpattern name (missing terminator) at offset 5
   
   /(?'0abc'xx)/
   Failed: group name must start with a non-digit at offset 3
   
   /(?P<0abc>xx)/
   Failed: group name must start with a non-digit at offset 4
   
   /\k<5ghj>/
   Failed: group name must start with a non-digit at offset 3
   
   /\k'5ghj'/
   Failed: group name must start with a non-digit at offset 3
   
   /\k{2fgh}/
   Failed: group name must start with a non-digit at offset 3
   
   /(?P=8yuki)/
   Failed: group name must start with a non-digit at offset 4
   
   /\g{4df}/
   Failed: group name must start with a non-digit at offset 3
   
   /(?&1abc)xx(?<1abc>y)/
   Failed: group name must start with a non-digit at offset 3
   
   /(?P>1abc)xx(?<1abc>y)/
   Failed: group name must start with a non-digit at offset 4
   
   /\g'3gh'/
   Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 7
   
   /\g<5fg>/
   Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 7
   
   /(?(<4gh>)abc)/
   Failed: group name must start with a non-digit at offset 4
   
   /(?('4gh')abc)/
   Failed: group name must start with a non-digit at offset 4
   
   /(?(4gh)abc)/
   Failed: malformed number or name after (?( at offset 4
   
   /(?(R&6yh)abc)/
   Failed: group name must start with a non-digit at offset 5
   
   /-- Test the ugly "start or end of word" compatibility syntax --/
   
   /[[:<:]]red[[:>:]]/BZ
   ------------------------------------------------------------------
           Bra
           \b
           Assert
           \w
           Ket
           red
           \b
           AssertB
           Reverse
           \w
           Ket
           Ket
           End
   ------------------------------------------------------------------
       little red riding hood
    0: red
       a /red/ thing 
    0: red
       red is a colour
    0: red
       put it all on red  
    0: red
       ** Failers
   No match
       no reduction
   No match
       Alfred Winifred
   No match
       
   /[a[:<:]] should give error/ 
   Failed: unknown POSIX class name at offset 4
   
 /-- End of testinput2 --/  /-- End of testinput2 --/

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


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