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

version 1.1.1.3, 2012/10/09 09:19:18 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'
 Max lookbehind = 6  
     foo      foo
  0: foo   0: foo
     catfoo      catfoo
Line 498  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 545  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 631  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 656  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
 Max lookbehind = 3  
 Subject length lower bound = 1  Subject length lower bound = 1
 Starting byte set: a b   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'
 Max lookbehind = 3  
 Subject length lower bound = 5  Subject length lower bound = 5
 Starting byte set: a o   Starting byte set: a o 
   
Line 682  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
 Need char = 'r'  Need char = 'r'
 Max lookbehind = 4  
     foo\nbarbar      foo\nbarbar
  0: bar   0: bar
     ***Failers      ***Failers
Line 700  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
 Need char = 'r'  Need char = 'r'
 Max lookbehind = 4  
     foo\nbarbar      foo\nbarbar
  0: bar   0: bar
     ***Failers      ***Failers
Line 743  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'
 Max lookbehind = 7  
     the bullock-cart      the bullock-cart
  0: -cart   0: -cart
     a donkey-cart race      a donkey-cart race
Line 760  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
 Max lookbehind = 3  
   
 /(?>.*)(?<=(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
 Max lookbehind = 4  
     alphabetabcd      alphabetabcd
  0: alphabetabcd   0: alphabetabcd
  1: abcd   1: abcd
Line 781  Max lookbehind = 4 Line 788  Max lookbehind = 4
   
 /(?<=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'
 Max lookbehind = 4  
     abxyZZ      abxyZZ
  0: ZZ   0: ZZ
     abXyZZ      abXyZZ
Line 810  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'
 Max lookbehind = 4  
     bar      bar
  0: bar   0: bar
     foobbar      foobbar
Line 823  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 1212  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'
 Max lookbehind = 1  
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1233  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'
 Max lookbehind = 1  
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
   
 /\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'
 Max lookbehind = 1  
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1259  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'
 Max lookbehind = 1  
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1271  Max lookbehind = 1 Line 1262  Max lookbehind = 1
   
 /(?<=[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'
 Max lookbehind = 1  
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1392  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 1410  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 1452  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
 Max lookbehind = 3  
   
 /abc(?!pqr)/I  /abc(?!pqr)/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
Line 1609  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 1627  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 2640  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 2659  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 2671  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 2782  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 2881  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 2897  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 2923  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 3090  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 3169  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 3233  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'
 Max lookbehind = 1  
   
 |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ  |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 3247  Max lookbehind = 1 Line 3268  Max lookbehind = 1
         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'
 Max lookbehind = 1  
   
 /(.*)\d+\1/I  /(.*)\d+\1/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
Line 3304  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 3322  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 3388  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 3616  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 3649  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 3763  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'
 Max lookbehind = 3  
    abcxyz\C+     abcxyz\C+
 Callout 0: last capture = 1  Callout 0: last capture = 1
  0: <unset>   0: <unset>
Line 3785  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 3895  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 4174  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 4273  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 4280  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 4287  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 4363  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 4438  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 4456  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 4533  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 4553  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 4584  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 4591  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 5305  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 5318  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 5331  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 5344  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 5358  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 5411  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
 Max lookbehind = 1  
   ab cd\>1    ab cd\>1
  0:  cd   0:  cd
   
 /\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
 Max lookbehind = 1  
   ab cd\>1    ab cd\>1
  0:  cd   0:  cd
   
 /(?!.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 6017  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 6029  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 6039  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 6049  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 6061  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 6110  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 6320  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 6392  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 6503  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 6512  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 6559  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 7482  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 7624  No match Line 7665  No match
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
         ^          ^
        [a-z]+        [a-z]++
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 7665  No match Line 7706  No match
         ^          ^
         CBra 1          CBra 1
         Cond          Cond
      2 Cond nref      2 Cond ref
         y          y
         Ket          Ket
         [()]          [()]
Line 7725  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 7824  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 8056  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 8561  No match Line 8597  No match
         \d          \d
         \v++          \v++
         \w          \w
        \v+        \v++
         \S          \S
         \v++          \v++
         \V          \V
Line 8659  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 8803  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 9248  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 9264  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 9276  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 9367  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 9377  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 9406  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 9719  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 10110  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 10172  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 10245  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 10291  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 10353  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 10549  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 10596  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 10607  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 10647  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 10826  No match Line 10858  No match
     X\x0d\x0a      X\x0d\x0a
 No match  No match
   
 /-- Perl treats this one differently, not failing the second string. I believe  
     that is a bug in Perl. --/  
   
 /^((abc|abcx)(*THEN)y|abcd)/  
     abcd  
  0: abcd  
  1: abcd  
     *** Failers   
 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 11087  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 11111  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 11135  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 11159  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 11319  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 11571  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 11679  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'
 Max lookbehind = 1  
 Subject length lower bound = 18  Subject length lower bound = 18
 No set of starting bytes  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
 Max lookbehind = 1  
 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 11761  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 11888  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 11905  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 11997  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 12336  Partial match: \x0d\x0d Line 12309  Partial match: \x0d\x0d
     \r\r\r\P\P           \r\r\r\P\P     
  0: \x0d\x0d   0: \x0d\x0d
   
/-- These two are here because Perl does not match: it seems to allow the"AB(C(D))(E(F))?(?(?=\2)(?=\4))"
COMMIT to escape from the assertion. --/    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(*COMMIT)b|ac)ac|ac//(?>.*?a)(?<=ba)/I
    acCapturing subpattern count = 0
 0: acMax lookbehind = 2
 No options
 No first char
 Need char = 'a'
   
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x/(?:.*?a)(?<=ba)/I
    acCapturing subpattern count = 0
 0: acMax 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>   1: <unset>
  2: a   2: a
   --->aab
       ^^      )
   Callout 1: last capture = -1
    0: <unset>
   --->aab
       ^^      ((a)(?C2)){0}
    0: a
   
"AB(C(D))(E(F))?(?(?=\2)(?=\4))"/(?:(a)+(?C1)bb|aa(?C2)b)++/
    ABCDGHI\O03    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  Matched, but too many substrings
 0: ABCD 0: ab
     ab\O2 
 Matched, but too many substrings
  0: ab
           
/-- This one is here because Perl does not confine the *COMMIT to the /(?<=123)(*MARK:xx)abc/K
assertion, and therefore fails the entire subroutine call. --/     xxxx123a\P\P
 Partial match at offset 7, mark=xx: 123a
     xxxx123a\P
 Partial match at offset 7, mark=xx: 123a
           
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))//123\Kabc/
    ac     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   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.3  
changed lines
  Added in v.1.1.1.5


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