/[pcre]/code/trunk/testdata/testoutput2
ViewVC logotype

Diff of /code/trunk/testdata/testoutput2

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

<
revision 511 by ph10, Mon Mar 29 09:25:38 2010 UTC revision 1299 by ph10, Fri Mar 22 17:23:09 2013 UTC
# Line 2  Line 2 
2      of PCRE's API, error diagnostics, and the compiled code of some patterns.      of PCRE's API, error diagnostics, and the compiled code of some patterns.
3      It also checks the non-Perl syntax the PCRE supports (Python, .NET,      It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4      Oniguruma). Finally, there are some tests where PCRE and Perl differ,      Oniguruma). Finally, there are some tests where PCRE and Perl differ,
5      either because PCRE can't be compatible, or there is potential Perl      either because PCRE can't be compatible, or there is a possible Perl
6      bug. --/      bug.
7    
8        NOTE: This is a non-UTF set of tests. When UTF support is needed, use
9        test 5, and if Unicode Property Support is needed, use test 7. --/
10    
 /-- Originally, the Perl 5.10 things were in here too, but now I have separated  
     many (most?) of them out into test 11. However, there may still be some  
     that were overlooked. --/  
   
11  /(a)b|/I  /(a)b|/I
12  Capturing subpattern count = 1  Capturing subpattern count = 1
13  No options  No options
# Line 103  Failed: missing terminating ] for charac Line 102  Failed: missing terminating ] for charac
102  /(?X)[\B]/  /(?X)[\B]/
103  Failed: invalid escape sequence in character class at offset 6  Failed: invalid escape sequence in character class at offset 6
104    
105    /(?X)[\R]/
106    Failed: invalid escape sequence in character class at offset 6
107    
108    /(?X)[\X]/
109    Failed: invalid escape sequence in character class at offset 6
110    
111    /[\B]/BZ
112    ------------------------------------------------------------------
113            Bra
114            B
115            Ket
116            End
117    ------------------------------------------------------------------
118    
119    /[\R]/BZ
120    ------------------------------------------------------------------
121            Bra
122            R
123            Ket
124            End
125    ------------------------------------------------------------------
126    
127    /[\X]/BZ
128    ------------------------------------------------------------------
129            Bra
130            X
131            Ket
132            End
133    ------------------------------------------------------------------
134    
135  /[z-a]/  /[z-a]/
136  Failed: range out of order in character class at offset 3  Failed: range out of order in character class at offset 3
137    
# Line 347  No need char Line 376  No need char
376   2: <unset>   2: <unset>
377   3: def   3: def
378    
 /abc/P  
     abc  
  0: abc  
     *** Failers  
 No match: POSIX code 17: match failed  
   
 /^abc|def/P  
     abcdef  
  0: abc  
     abcdef\B  
  0: def  
   
 /.*((abc)$|(def))/P  
     defabc  
  0: defabc  
  1: abc  
  2: abc  
     \Zdefabc  
  0: def  
  1: def  
  3: def  
   
 /the quick brown fox/P  
     the quick brown fox  
  0: the quick brown fox  
     *** Failers  
 No match: POSIX code 17: match failed  
     The Quick Brown Fox  
 No match: POSIX code 17: match failed  
   
 /the quick brown fox/Pi  
     the quick brown fox  
  0: the quick brown fox  
     The Quick Brown Fox  
  0: The Quick Brown Fox  
   
 /abc.def/P  
     *** Failers  
 No match: POSIX code 17: match failed  
     abc\ndef  
 No match: POSIX code 17: match failed  
   
 /abc$/P  
     abc  
  0: abc  
     abc\n  
  0: abc  
   
 /(abc)\2/P  
 Failed: POSIX code 15: bad back reference at offset 7  
   
 /(abc\1)/P  
     abc  
 No match: POSIX code 17: match failed  
   
379  /)/  /)/
380  Failed: unmatched parentheses at offset 0  Failed: unmatched parentheses at offset 0
381    
# Line 477  Capturing subpattern count = 0 Line 451  Capturing subpattern count = 0
451  No options  No options
452  First char = 'f'  First char = 'f'
453  Need char = 'o'  Need char = 'o'
454    Max lookbehind = 6
455      foo      foo
456   0: foo   0: foo
457      catfoo      catfoo
# Line 602  Need char = 'h' (caseless) Line 577  Need char = 'h' (caseless)
577  ------------------------------------------------------------------  ------------------------------------------------------------------
578          Bra          Bra
579          CBra 1          CBra 1
580       01 Opt       /i b
      NC b  
581          Ket          Ket
      00 Opt  
582          Ket          Ket
583          End          End
584  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 661  Capturing subpattern count = 0 Line 634  Capturing subpattern count = 0
634  Options: anchored multiline  Options: anchored multiline
635  No first char  No first char
636  No need char  No need char
637    Max lookbehind = 1
638    
639  /^abc/Im  /^abc/Im
640  Capturing subpattern count = 0  Capturing subpattern count = 0
# Line 686  Capturing subpattern count = 0 Line 660  Capturing subpattern count = 0
660  No options  No options
661  No first char  No first char
662  No need char  No need char
663    Max lookbehind = 3
664  Subject length lower bound = 1  Subject length lower bound = 1
665  Starting byte set: a b  Starting byte set: a b
666    
# Line 694  Capturing subpattern count = 1 Line 669  Capturing subpattern count = 1
669  No options  No options
670  No first char  No first char
671  Need char = 'a'  Need char = 'a'
672    Max lookbehind = 3
673  Subject length lower bound = 5  Subject length lower bound = 5
674  Starting byte set: a o  Starting byte set: a o
675    
# Line 711  Contains explicit CR or LF match Line 687  Contains explicit CR or LF match
687  Options: multiline  Options: multiline
688  No first char  No first char
689  Need char = 'r'  Need char = 'r'
690    Max lookbehind = 4
691      foo\nbarbar      foo\nbarbar
692   0: bar   0: bar
693      ***Failers      ***Failers
# Line 728  Contains explicit CR or LF match Line 705  Contains explicit CR or LF match
705  Options: multiline  Options: multiline
706  First char at start or follows newline  First char at start or follows newline
707  Need char = 'r'  Need char = 'r'
708    Max lookbehind = 4
709      foo\nbarbar      foo\nbarbar
710   0: bar   0: bar
711      ***Failers      ***Failers
# Line 769  Capturing subpattern count = 0 Line 747  Capturing subpattern count = 0
747  No options  No options
748  First char = '-'  First char = '-'
749  Need char = 't'  Need char = 't'
750    Max lookbehind = 7
751      the bullock-cart      the bullock-cart
752   0: -cart   0: -cart
753      a donkey-cart race      a donkey-cart race
# Line 785  Capturing subpattern count = 0 Line 764  Capturing subpattern count = 0
764  No options  No options
765  No first char  No first char
766  No need char  No need char
767    Max lookbehind = 3
768    
769  /(?>.*)(?<=(abcd)|(xyz))/I  /(?>.*)(?<=(abcd)|(xyz))/I
770  Capturing subpattern count = 2  Capturing subpattern count = 2
771  No options  No options
772  First char at start or follows newline  No first char
773  No need char  No need char
774    Max lookbehind = 4
775      alphabetabcd      alphabetabcd
776   0: alphabetabcd   0: alphabetabcd
777   1: abcd   1: abcd
# Line 804  Capturing subpattern count = 0 Line 785  Capturing subpattern count = 0
785  No options  No options
786  First char = 'Z'  First char = 'Z'
787  Need char = 'Z'  Need char = 'Z'
788    Max lookbehind = 4
789      abxyZZ      abxyZZ
790   0: ZZ   0: ZZ
791      abXyZZ      abXyZZ
# Line 832  Capturing subpattern count = 1 Line 814  Capturing subpattern count = 1
814  No options  No options
815  First char = 'b'  First char = 'b'
816  Need char = 'r'  Need char = 'r'
817    Max lookbehind = 4
818      bar      bar
819   0: bar   0: bar
820      foobbar      foobbar
# Line 841  No match Line 824  No match
824      fooabar      fooabar
825  No match  No match
826    
 /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  
   
827  /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
828  Capturing subpattern count = 0  Capturing subpattern count = 0
829  No options  No options
# Line 1003  Failed: numbers out of order in {} quant Line 970  Failed: numbers out of order in {} quant
970  /abc/\  /abc/\
971  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
972    
 /abc/\P  
 Failed: POSIX code 9: bad escape sequence at offset 4  
   
973  /abc/\i  /abc/\i
974  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
975    
# Line 1121  No first char Line 1085  No first char
1085  No need char  No need char
1086      abc\00def\L\C0      abc\00def\L\C0
1087   0: abc\x00def   0: abc\x00def
1088   0C abc (7)   0C abc\x00def (7)
1089   0L abc   0L abc
1090    
1091  /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+  /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
# Line 1217  No need char Line 1181  No need char
1181  ------------------------------------------------------------------  ------------------------------------------------------------------
1182          Bra          Bra
1183          Bra          Bra
      04 Opt  
1184          AllAny*          AllAny*
1185          X          X
1186          Alt          Alt
      04 Opt  
1187          ^          ^
1188          B          B
1189          Ket          Ket
      00 Opt  
1190          Ket          Ket
1191          End          End
1192  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 1239  Capturing subpattern count = 0 Line 1200  Capturing subpattern count = 0
1200  No options  No options
1201  First char = 'i'  First char = 'i'
1202  Need char = 's'  Need char = 's'
1203      Mississippi  Max lookbehind = 1
  0: iss  
  0+ issippi  
   
 /\Biss\B/I+P  
1204      Mississippi      Mississippi
1205   0: iss   0: iss
1206   0+ issippi   0+ issippi
# Line 1264  Capturing subpattern count = 0 Line 1221  Capturing subpattern count = 0
1221  No options  No options
1222  First char = 'i'  First char = 'i'
1223  Need char = 's'  Need char = 's'
1224    Max lookbehind = 1
1225      Mississippi      Mississippi
1226   0: iss   0: iss
1227   0+ issippi   0+ issippi
# Line 1273  Capturing subpattern count = 0 Line 1231  Capturing subpattern count = 0
1231  No options  No options
1232  First char = 'i'  First char = 'i'
1233  Need char = 's'  Need char = 's'
1234    Max lookbehind = 1
1235      Mississippi      Mississippi
1236   0: iss   0: iss
1237   0+ issippi   0+ issippi
# Line 1288  Capturing subpattern count = 0 Line 1247  Capturing subpattern count = 0
1247  No options  No options
1248  First char = 'i'  First char = 'i'
1249  Need char = 's'  Need char = 's'
1250    Max lookbehind = 1
1251      Mississippi      Mississippi
1252   0: iss   0: iss
1253   0+ issippi   0+ issippi
# Line 1299  Capturing subpattern count = 0 Line 1259  Capturing subpattern count = 0
1259  No options  No options
1260  First char = 'i'  First char = 'i'
1261  Need char = 's'  Need char = 's'
1262    Max lookbehind = 1
1263      Mississippi      Mississippi
1264   0: iss   0: iss
1265   0+ issippi   0+ issippi
# Line 1377  Capturing subpattern count = 0 Line 1338  Capturing subpattern count = 0
1338  Contains explicit CR or LF match  Contains explicit CR or LF match
1339  Options: multiline  Options: multiline
1340  First char at start or follows newline  First char at start or follows newline
1341  Need char = 10  Need char = \x0a
1342      ab\nab\ncd      ab\nab\ncd
1343   0: ab\x0a   0: ab\x0a
1344   0+ ab\x0acd   0+ ab\x0acd
# Line 1479  Capturing subpattern count = 0 Line 1440  Capturing subpattern count = 0
1440  No options  No options
1441  No first char  No first char
1442  No need char  No need char
1443    Max lookbehind = 3
1444    
1445  /abc(?!pqr)/I  /abc(?!pqr)/I
1446  Capturing subpattern count = 0  Capturing subpattern count = 0
# Line 1664  No need char Line 1626  No need char
1626      \Nabc      \Nabc
1627  No match  No match
1628    
 /a*(b+)(z)(z)/P  
     aaaabbbbzzzz  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
     aaaabbbbzzzz\O0  
     aaaabbbbzzzz\O1  
  0: aaaabbbbzz  
     aaaabbbbzzzz\O2  
  0: aaaabbbbzz  
  1: bbbb  
     aaaabbbbzzzz\O3  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
     aaaabbbbzzzz\O4  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
     aaaabbbbzzzz\O5  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
   
1629  /^.?abcd/IS  /^.?abcd/IS
1630  Capturing subpattern count = 0  Capturing subpattern count = 0
1631  Options: anchored  Options: anchored
# Line 2734  No need char Line 2669  No need char
2669  ------------------------------------------------------------------  ------------------------------------------------------------------
2670          Bra          Bra
2671          a          a
2672       01 Opt       /i b
      NC b  
2673          Ket          Ket
2674          End          End
2675  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2757  No match Line 2691  No match
2691          Bra          Bra
2692          CBra 1          CBra 1
2693          a          a
2694       01 Opt       /i b
      NC b  
2695          Ket          Ket
      00 Opt  
2696          Ket          Ket
2697          End          End
2698  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2782  No match Line 2714  No match
2714  /   (?i)abc/IxDZ  /   (?i)abc/IxDZ
2715  ------------------------------------------------------------------  ------------------------------------------------------------------
2716          Bra          Bra
2717       NC abc       /i abc
2718          Ket          Ket
2719          End          End
2720  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2795  Need char = 'c' (caseless) Line 2727  Need char = 'c' (caseless)
2727    (?i)abc/IxDZ    (?i)abc/IxDZ
2728  ------------------------------------------------------------------  ------------------------------------------------------------------
2729          Bra          Bra
2730       NC abc       /i abc
2731          Ket          Ket
2732          End          End
2733  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2968  No need char Line 2900  No need char
2900  /(x)*+/DZ  /(x)*+/DZ
2901  ------------------------------------------------------------------  ------------------------------------------------------------------
2902          Bra          Bra
2903          Once          Braposzero
2904          Brazero          CBraPos 1
         CBra 1  
2905          x          x
2906          KetRmax          KetRpos
         Ket  
2907          Ket          Ket
2908          End          End
2909  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 3198  Failed: POSIX collating elements are not Line 3128  Failed: POSIX collating elements are not
3128  Failed: POSIX named classes are supported only within a class at offset 0  Failed: POSIX named classes are supported only within a class at offset 0
3129    
3130  /\l/I  /\l/I
3131  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3132    
3133  /\L/I  /\L/I
3134  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3135    
3136  /\N{name}/I  /\N{name}/I
3137  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3138    
3139  /\u/I  /\u/I
3140  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3141    
3142  /\U/I  /\U/I
3143  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3144    
3145  /[/I  /[/I
3146  Failed: missing terminating ] for character class at offset 1  Failed: missing terminating ] for character class at offset 1
# Line 3291  Capturing subpattern count = 0 Line 3221  Capturing subpattern count = 0
3221  No options  No options
3222  First char = '8'  First char = '8'
3223  Need char = 'X'  Need char = 'X'
3224    Max lookbehind = 1
3225    
3226  |\$\<\.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
3227  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 3304  Capturing subpattern count = 0 Line 3235  Capturing subpattern count = 0
3235  No options  No options
3236  First char = '$'  First char = '$'
3237  Need char = 'X'  Need char = 'X'
3238    Max lookbehind = 1
3239    
3240  /(.*)\d+\1/I  /(.*)\d+\1/I
3241  Capturing subpattern count = 1  Capturing subpattern count = 1
# Line 3560  Need char = 'f' Line 3492  Need char = 'f'
3492    1    ^    ^     f    1    ^    ^     f
3493   0: abcdef   0: abcdef
3494    
3495  /(?C1)\dabc(?C2)def/I  /(?C1)\dabc(?C2)def/IS
3496    Capturing subpattern count = 0
3497    No options
3498    No first char
3499    Need char = 'f'
3500    Subject length lower bound = 7
3501    Starting byte set: 0 1 2 3 4 5 6 7 8 9
3502        1234abcdef
3503    --->1234abcdef
3504      1 ^              \d
3505      1  ^             \d
3506      1   ^            \d
3507      1    ^           \d
3508      2    ^   ^       d
3509     0: 4abcdef
3510        *** Failers
3511    No match
3512        abcdef
3513    No match
3514    
3515    /(?C1)\dabc(?C2)def/ISS
3516  Capturing subpattern count = 0  Capturing subpattern count = 0
3517  No options  No options
3518  No first char  No first char
# Line 3799  Capturing subpattern count = 1 Line 3751  Capturing subpattern count = 1
3751  No options  No options
3752  First char = 'x'  First char = 'x'
3753  Need char = 'z'  Need char = 'z'
3754    Max lookbehind = 3
3755     abcxyz\C+     abcxyz\C+
3756  Callout 0: last capture = 1  Callout 0: last capture = 1
3757   0: <unset>   0: <unset>
# Line 3964  Need char = '<' Line 3917  Need char = '<'
3917          Bra          Bra
3918          CBra 1          CBra 1
3919          a          a
         Once  
3920          Recurse          Recurse
         Ket  
3921          b          b
3922          Ket          Ket
3923          Ket          Ket
# Line 4187  Need char = 'a' Line 4138  Need char = 'a'
4138          Any          Any
4139          \1          \1
4140          bbb          bbb
         Once  
4141          Recurse          Recurse
         Ket  
4142          d          d
4143          Ket          Ket
4144          End          End
# Line 4561  Need char = ']' Line 4510  Need char = ']'
4510          a          a
4511          CBra 2          CBra 2
4512          b          b
         Once  
4513          Recurse          Recurse
         Ket  
4514          c          c
4515          Ket          Ket
4516          Ket          Ket
# Line 4583  No need char Line 4530  No need char
4530          a          a
4531          CBra 2          CBra 2
4532          b          b
         Once  
4533          Recurse          Recurse
         Ket  
4534          c          c
4535          Ket          Ket
4536          KetRmax          KetRmax
# Line 4606  No need char Line 4551  No need char
4551          a          a
4552          CBra 2          CBra 2
4553          b          b
         Once  
4554          Recurse          Recurse
         Ket  
4555          c          c
4556          Ket          Ket
4557          Ket          Ket
# Line 4617  No need char Line 4560  No need char
4560          a          a
4561          CBra 2          CBra 2
4562          b          b
         Once  
4563          Recurse          Recurse
         Ket  
4564          c          c
4565          Ket          Ket
4566          Ket          Ket
# Line 4758  Need char = 'e' Line 4699  Need char = 'e'
4699   +4 ^   ^      e   +4 ^   ^      e
4700  No match  No match
4701    
4702  /a*b/ICDZ  /a*b/ICDZS
4703    ------------------------------------------------------------------
4704            Bra
4705            Callout 255 0 2
4706            a*+
4707            Callout 255 2 1
4708            b
4709            Callout 255 3 0
4710            Ket
4711            End
4712    ------------------------------------------------------------------
4713    Capturing subpattern count = 0
4714    Options:
4715    No first char
4716    Need char = 'b'
4717    Subject length lower bound = 1
4718    Starting byte set: a b
4719      ab
4720    --->ab
4721     +0 ^      a*
4722     +2 ^^     b
4723     +3 ^ ^
4724     0: ab
4725      aaaab
4726    --->aaaab
4727     +0 ^         a*
4728     +2 ^   ^     b
4729     +3 ^    ^
4730     0: aaaab
4731      aaaacb
4732    --->aaaacb
4733     +0 ^          a*
4734     +2 ^   ^      b
4735     +0  ^         a*
4736     +2  ^  ^      b
4737     +0   ^        a*
4738     +2   ^ ^      b
4739     +0    ^       a*
4740     +2    ^^      b
4741     +0      ^     a*
4742     +2      ^     b
4743     +3      ^^
4744     0: b
4745    
4746    /a*b/ICDZSS
4747  ------------------------------------------------------------------  ------------------------------------------------------------------
4748          Bra          Bra
4749          Callout 255 0 2          Callout 255 0 2
# Line 4841  Need char = 'b' Line 4826  Need char = 'b'
4826   +2    ^^      b   +2    ^^      b
4827  No match  No match
4828    
4829  /(abc|def)x/ICDZ  /(abc|def)x/ICDZS
4830    ------------------------------------------------------------------
4831            Bra
4832            Callout 255 0 9
4833            CBra 1
4834            Callout 255 1 1
4835            a
4836            Callout 255 2 1
4837            b
4838            Callout 255 3 1
4839            c
4840            Callout 255 4 0
4841            Alt
4842            Callout 255 5 1
4843            d
4844            Callout 255 6 1
4845            e
4846            Callout 255 7 1
4847            f
4848            Callout 255 8 0
4849            Ket
4850            Callout 255 9 1
4851            x
4852            Callout 255 10 0
4853            Ket
4854            End
4855    ------------------------------------------------------------------
4856    Capturing subpattern count = 1
4857    Options:
4858    No first char
4859    Need char = 'x'
4860    Subject length lower bound = 4
4861    Starting byte set: a d
4862      abcx
4863    --->abcx
4864     +0 ^        (abc|def)
4865     +1 ^        a
4866     +2 ^^       b
4867     +3 ^ ^      c
4868     +4 ^  ^     |
4869     +9 ^  ^     x
4870    +10 ^   ^
4871     0: abcx
4872     1: abc
4873      defx
4874    --->defx
4875     +0 ^        (abc|def)
4876     +1 ^        a
4877     +5 ^        d
4878     +6 ^^       e
4879     +7 ^ ^      f
4880     +8 ^  ^     )
4881     +9 ^  ^     x
4882    +10 ^   ^
4883     0: defx
4884     1: def
4885      ** Failers
4886    No match
4887      abcdefzx
4888    --->abcdefzx
4889     +0 ^            (abc|def)
4890     +1 ^            a
4891     +2 ^^           b
4892     +3 ^ ^          c
4893     +4 ^  ^         |
4894     +9 ^  ^         x
4895     +5 ^            d
4896     +0    ^         (abc|def)
4897     +1    ^         a
4898     +5    ^         d
4899     +6    ^^        e
4900     +7    ^ ^       f
4901     +8    ^  ^      )
4902     +9    ^  ^      x
4903    No match
4904    
4905    /(abc|def)x/ICDZSS
4906  ------------------------------------------------------------------  ------------------------------------------------------------------
4907          Bra          Bra
4908          Callout 255 0 9          Callout 255 0 9
# Line 4895  Need char = 'x' Line 4956  Need char = 'x'
4956  +10 ^   ^  +10 ^   ^
4957   0: defx   0: defx
4958   1: def   1: def
4959      ** Failers
4960    No match
4961    abcdefzx    abcdefzx
4962  --->abcdefzx  --->abcdefzx
4963   +0 ^            (abc|def)   +0 ^            (abc|def)
# Line 4995  No need char Line 5058  No need char
5058   0: abcdcdcd   0: abcdcdcd
5059   1: cd   1: cd
5060    
5061  /([ab]{,4}c|xy)/ICDZ  /([ab]{,4}c|xy)/ICDZS
5062  ------------------------------------------------------------------  ------------------------------------------------------------------
5063          Bra          Bra
5064          Callout 255 0 14          Callout 255 0 14
# Line 5028  Capturing subpattern count = 1 Line 5091  Capturing subpattern count = 1
5091  Options:  Options:
5092  No first char  No first char
5093  No need char  No need char
5094    Subject length lower bound = 2
5095    Starting byte set: a b x
5096      Note: that { does NOT introduce a quantifier      Note: that { does NOT introduce a quantifier
5097  --->Note: that { does NOT introduce a quantifier  --->Note: that { does NOT introduce a quantifier
5098   +0 ^                                                ([ab]{,4}c|xy)   +0         ^                                        ([ab]{,4}c|xy)
5099   +1 ^                                                [ab]   +1         ^                                        [ab]
5100  +11 ^                                                x   +5         ^^                                       {
5101   +0  ^                                               ([ab]{,4}c|xy)  +11         ^                                        x
5102   +1  ^                                               [ab]   +0                                 ^                ([ab]{,4}c|xy)
5103  +11  ^                                               x   +1                                 ^                [ab]
5104   +0   ^                                              ([ab]{,4}c|xy)   +5                                 ^^               {
5105   +1   ^                                              [ab]  +11                                 ^                x
5106  +11   ^                                              x   +0                                     ^            ([ab]{,4}c|xy)
5107   +0    ^                                             ([ab]{,4}c|xy)   +1                                     ^            [ab]
5108   +1    ^                                             [ab]   +5                                     ^^           {
5109  +11    ^                                             x  +11                                     ^            x
5110   +0     ^                                            ([ab]{,4}c|xy)  No match
5111   +1     ^                                            [ab]  
5112  +11     ^                                            x  /([ab]{,4}c|xy)/ICDZSS
5113   +0      ^                                           ([ab]{,4}c|xy)  ------------------------------------------------------------------
5114   +1      ^                                           [ab]          Bra
5115            Callout 255 0 14
5116            CBra 1
5117            Callout 255 1 4
5118            [ab]
5119            Callout 255 5 1
5120            {
5121            Callout 255 6 1
5122            ,
5123            Callout 255 7 1
5124            4
5125            Callout 255 8 1
5126            }
5127            Callout 255 9 1
5128            c
5129            Callout 255 10 0
5130            Alt
5131            Callout 255 11 1
5132            x
5133            Callout 255 12 1
5134            y
5135            Callout 255 13 0
5136            Ket
5137            Callout 255 14 0
5138            Ket
5139            End
5140    ------------------------------------------------------------------
5141    Capturing subpattern count = 1
5142    Options:
5143    No first char
5144    No need char
5145        Note: that { does NOT introduce a quantifier
5146    --->Note: that { does NOT introduce a quantifier
5147     +0 ^                                                ([ab]{,4}c|xy)
5148     +1 ^                                                [ab]
5149    +11 ^                                                x
5150     +0  ^                                               ([ab]{,4}c|xy)
5151     +1  ^                                               [ab]
5152    +11  ^                                               x
5153     +0   ^                                              ([ab]{,4}c|xy)
5154     +1   ^                                              [ab]
5155    +11   ^                                              x
5156     +0    ^                                             ([ab]{,4}c|xy)
5157     +1    ^                                             [ab]
5158    +11    ^                                             x
5159     +0     ^                                            ([ab]{,4}c|xy)
5160     +1     ^                                            [ab]
5161    +11     ^                                            x
5162     +0      ^                                           ([ab]{,4}c|xy)
5163     +1      ^                                           [ab]
5164  +11      ^                                           x  +11      ^                                           x
5165   +0       ^                                          ([ab]{,4}c|xy)   +0       ^                                          ([ab]{,4}c|xy)
5166   +1       ^                                          [ab]   +1       ^                                          [ab]
# Line 5285  Capturing subpattern count = 0 Line 5399  Capturing subpattern count = 0
5399  No options  No options
5400  No first char  No first char
5401  No need char  No need char
5402    Max lookbehind = 1
5403    ab cd\>1    ab cd\>1
5404   0:  cd   0:  cd
5405    
# Line 5293  Capturing subpattern count = 0 Line 5408  Capturing subpattern count = 0
5408  Options: dotall  Options: dotall
5409  No first char  No first char
5410  No need char  No need char
5411    Max lookbehind = 1
5412    ab cd\>1    ab cd\>1
5413   0:  cd   0:  cd
5414    
# Line 5447  No match Line 5563  No match
5563      123456\P      123456\P
5564  No match  No match
5565    
5566  /abc/I>testsavedregex  /abc/IS>testsavedregex
5567    Capturing subpattern count = 0
5568    No options
5569    First char = 'a'
5570    Need char = 'c'
5571    Subject length lower bound = 3
5572    No set of starting bytes
5573    Compiled pattern written to testsavedregex
5574    Study data written to testsavedregex
5575    <testsavedregex
5576    Compiled pattern loaded from testsavedregex
5577    Study data loaded from testsavedregex
5578        abc
5579     0: abc
5580        ** Failers
5581    No match
5582        bca
5583    No match
5584    
5585    /abc/ISS>testsavedregex
5586  Capturing subpattern count = 0  Capturing subpattern count = 0
5587  No options  No options
5588  First char = 'a'  First char = 'a'
5589  Need char = 'c'  Need char = 'c'
5590  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5591  <testsavedregex  <testsavedregex
5592  Compiled regex loaded from testsavedregex  Compiled pattern loaded from testsavedregex
5593  No study data  No study data
5594      abc      abc
5595   0: abc   0: abc
# Line 5463  No match Line 5598  No match
5598      bca      bca
5599  No match  No match
5600    
5601  /abc/IF>testsavedregex  /abc/IFS>testsavedregex
5602    Capturing subpattern count = 0
5603    No options
5604    First char = 'a'
5605    Need char = 'c'
5606    Subject length lower bound = 3
5607    No set of starting bytes
5608    Compiled pattern written to testsavedregex
5609    Study data written to testsavedregex
5610    <testsavedregex
5611    Compiled pattern (byte-inverted) loaded from testsavedregex
5612    Study data loaded from testsavedregex
5613        abc
5614     0: abc
5615        ** Failers
5616    No match
5617        bca
5618    No match
5619    
5620    /abc/IFSS>testsavedregex
5621  Capturing subpattern count = 0  Capturing subpattern count = 0
5622  No options  No options
5623  First char = 'a'  First char = 'a'
5624  Need char = 'c'  Need char = 'c'
5625  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5626  <testsavedregex  <testsavedregex
5627  Compiled regex (byte-inverted) loaded from testsavedregex  Compiled pattern (byte-inverted) loaded from testsavedregex
5628  No study data  No study data
5629      abc      abc
5630   0: abc   0: abc
# Line 5486  No first char Line 5640  No first char
5640  No need char  No need char
5641  Subject length lower bound = 1  Subject length lower bound = 1
5642  Starting byte set: a b  Starting byte set: a b
5643  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5644  Study data written to testsavedregex  Study data written to testsavedregex
5645  <testsavedregex  <testsavedregex
5646  Compiled regex loaded from testsavedregex  Compiled pattern loaded from testsavedregex
5647  Study data loaded from testsavedregex  Study data loaded from testsavedregex
5648      abc      abc
5649   0: a   0: a
# Line 5500  Study data loaded from testsavedregex Line 5654  Study data loaded from testsavedregex
5654      def      def
5655  No match  No match
5656    
5657    /(a|b)/ISS>testsavedregex
5658    Capturing subpattern count = 1
5659    No options
5660    No first char
5661    No need char
5662    Compiled pattern written to testsavedregex
5663    <testsavedregex
5664    Compiled pattern loaded from testsavedregex
5665    No study data
5666        abc
5667     0: a
5668     1: a
5669        ** Failers
5670     0: a
5671     1: a
5672        def
5673    No match
5674    
5675  /(a|b)/ISF>testsavedregex  /(a|b)/ISF>testsavedregex
5676  Capturing subpattern count = 1  Capturing subpattern count = 1
5677  No options  No options
# Line 5507  No first char Line 5679  No first char
5679  No need char  No need char
5680  Subject length lower bound = 1  Subject length lower bound = 1
5681  Starting byte set: a b  Starting byte set: a b
5682  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5683  Study data written to testsavedregex  Study data written to testsavedregex
5684  <testsavedregex  <testsavedregex
5685  Compiled regex (byte-inverted) loaded from testsavedregex  Compiled pattern (byte-inverted) loaded from testsavedregex
5686  Study data loaded from testsavedregex  Study data loaded from testsavedregex
5687      abc      abc
5688   0: a   0: a
# Line 5521  Study data loaded from testsavedregex Line 5693  Study data loaded from testsavedregex
5693      def      def
5694  No match  No match
5695    
5696    /(a|b)/ISSF>testsavedregex
5697    Capturing subpattern count = 1
5698    No options
5699    No first char
5700    No need char
5701    Compiled pattern written to testsavedregex
5702    <testsavedregex
5703    Compiled pattern (byte-inverted) loaded from testsavedregex
5704    No study data
5705        abc
5706     0: a
5707     1: a
5708        ** Failers
5709     0: a
5710     1: a
5711        def
5712    No match
5713    
5714  ~<(\w+)/?>(.)*</(\1)>~smgI  ~<(\w+)/?>(.)*</(\1)>~smgI
5715  Capturing subpattern count = 3  Capturing subpattern count = 3
5716  Max back reference = 1  Max back reference = 1
5717  Options: multiline dotall  Options: multiline dotall
5718  First char = '<'  First char = '<'
5719  Need char = '>'  Need char = '>'
5720      <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>      \J1024<!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
5721   0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>   0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>
5722   1: seite   1: seite
5723   2: \x0a   2: \x0a
# Line 5576  No match Line 5766  No match
5766      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
5767  No match  No match
5768    
 /ab.cd/P  
     ab-cd  
  0: ab-cd  
     ab=cd  
  0: ab=cd  
     ** Failers  
 No match: POSIX code 17: match failed  
     ab\ncd  
 No match: POSIX code 17: match failed  
   
 /ab.cd/Ps  
     ab-cd  
  0: ab-cd  
     ab=cd  
  0: ab=cd  
     ab\ncd  
  0: ab\x0acd  
   
5769  /(?i)(?-i)AbCd/I  /(?i)(?-i)AbCd/I
5770  Capturing subpattern count = 0  Capturing subpattern count = 0
5771  No options  No options
# Line 5886  No need char Line 6058  No need char
6058      ((this))      ((this))
6059   0: ((this))   0: ((this))
6060    
 /a(b)c/PN  
     abc  
 Matched with REG_NOSUB  
   
 /a(?P<name>b)c/PN  
     abc  
 Matched with REG_NOSUB  
   
 /\x{100}/I  
 Failed: character value in \x{...} sequence is too large at offset 6  
   
6061  /\x{0000ff}/I  /\x{0000ff}/I
6062  Capturing subpattern count = 0  Capturing subpattern count = 0
6063  No options  No options
6064  First char = 255  First char = \xff
6065  No need char  No need char
6066    
6067  /^((?P<A>a1)|(?P<A>a2)b)/I  /^((?P<A>a1)|(?P<A>a2)b)/I
# Line 6010  no parentheses with name "Z" Line 6171  no parentheses with name "Z"
6171   0: a1   0: a1
6172   1: a1   1: a1
6173   2: a1   2: a1
6174  copy substring Z failed -7  get substring Z failed -7
6175    G a1 (2) A    G a1 (2) A
6176    
6177  /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
# Line 6042  No need char Line 6203  No need char
6203    G a (1) A    G a (1) A
6204      cd\GA      cd\GA
6205   0: cd   0: cd
6206  copy substring A failed -7  get substring A failed -7
6207    
6208  /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ  /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6209  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 6210  No need char Line 6371  No need char
6371   9:   9:
6372  10: Y  10: Y
6373    
 /\777/I  
 Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3  
   
6374  /\s*,\s*/IS  /\s*,\s*/IS
6375  Capturing subpattern count = 0  Capturing subpattern count = 0
6376  No options  No options
# Line 6644  No match Line 6802  No match
6802  ------------------------------------------------------------------  ------------------------------------------------------------------
6803          Bra          Bra
6804          ^          ^
6805          a*       /i a*
6806       NC A       /i A
6807          \d          \d
6808          Ket          Ket
6809          End          End
# Line 7273  Matched, but too many substrings Line 7431  Matched, but too many substrings
7431  /[^a]+a/BZi  /[^a]+a/BZi
7432  ------------------------------------------------------------------  ------------------------------------------------------------------
7433          Bra          Bra
7434          [^A]++       /i [^a]++
7435       NC a       /i a
7436          Ket          Ket
7437          End          End
7438  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 7282  Matched, but too many substrings Line 7440  Matched, but too many substrings
7440  /[^a]+A/BZi  /[^a]+A/BZi
7441  ------------------------------------------------------------------  ------------------------------------------------------------------
7442          Bra          Bra
7443          [^A]++       /i [^a]++
7444       NC A       /i A
7445          Ket          Ket
7446          End          End
7447  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 7478  No match Line 7636  No match
7636  ------------------------------------------------------------------  ------------------------------------------------------------------
7637          Bra          Bra
7638          ^          ^
         Once  
7639          Recurse          Recurse
         Ket  
7640          [()]          [()]
7641          CBra 1          CBra 1
7642          Ket          Ket
# Line 7514  No match Line 7670  No match
7670  ------------------------------------------------------------------  ------------------------------------------------------------------
7671          Bra          Bra
7672          ^          ^
         Once  
7673          Recurse          Recurse
         Ket  
7674          ()          ()
7675          CBra 1          CBra 1
7676          Ket          Ket
# Line 7528  No match Line 7682  No match
7682  ------------------------------------------------------------------  ------------------------------------------------------------------
7683          Bra          Bra
7684          ^          ^
         Once  
7685          Recurse          Recurse
         Ket  
7686          [(\]a]          [(\]a]
7687          CBra 1          CBra 1
7688          Ket          Ket
# Line 7543  No match Line 7695  No match
7695  ------------------------------------------------------------------  ------------------------------------------------------------------
7696          Bra          Bra
7697          ^          ^
         Once  
7698          Recurse          Recurse
         Ket  
7699          CBra 1          CBra 1
7700          Ket          Ket
7701          Ket          Ket
# Line 7677  Options: extended Line 7827  Options: extended
7827  First char = 'x'  First char = 'x'
7828  Need char = 'z'  Need char = 'z'
7829    
 /(?(DEFINE) abc){3} xyz/x  
 Failed: repeating a DEFINE group is not allowed at offset 17  
   
7830  /(a|)*\d/  /(a|)*\d/
7831    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7832  No match  No match
# Line 7997  No match Line 8144  No match
8144          Alt          Alt
8145          c          c
8146          Ket          Ket
         Once  
8147          Recurse          Recurse
8148          Ket          Ket
         Ket  
8149          End          End
8150  ------------------------------------------------------------------  ------------------------------------------------------------------
8151      abc      abc
# Line 8011  No match Line 8156  No match
8156  ------------------------------------------------------------------  ------------------------------------------------------------------
8157          Bra          Bra
8158          xy          xy
         Once  
8159          Recurse          Recurse
         Ket  
8160          CBra 1          CBra 1
8161          abc          abc
8162          Ket          Ket
# Line 8243  Failed: syntax error in subpattern name Line 8386  Failed: syntax error in subpattern name
8386   3: <unset>   3: <unset>
8387   4: x   4: x
8388    
 /[\h]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x09 \xa0]  
         Ket  
         End  
 ------------------------------------------------------------------  
     >\x09<  
  0: \x09  
   
 /[\h]+/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x09 \xa0]+  
         Ket  
         End  
 ------------------------------------------------------------------  
     >\x09\x20\xa0<  
  0: \x09 \xa0  
   
 /[\v]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x0a-\x0d\x85]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\H]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[^\h]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg)  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\V]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x09\x0e-\x84\x86-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\x0a\V]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x0a\x0e-\x84\x86-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
8389  /\H++X/BZ  /\H++X/BZ
8390  ------------------------------------------------------------------  ------------------------------------------------------------------
8391          Bra          Bra
# Line 8494  No match Line 8577  No match
8577  ------------------------------------------------------------------  ------------------------------------------------------------------
8578    
8579  /\( (?: [^()]* | (?R) )* \)/x  /\( (?: [^()]* | (?R) )* \)/x
8580  (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)  \J1024(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
8581   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
8582    
8583  /[\E]AAA/  /[\E]AAA/
# Line 8676  Failed: number is too big at offset 19 Line 8759  Failed: number is too big at offset 19
8759  /\g6666666666/  /\g6666666666/
8760  Failed: number is too big at offset 11  Failed: number is too big at offset 11
8761    
8762  /[\g6666666666]/  /[\g6666666666]/BZ
8763  Failed: number is too big at offset 12  ------------------------------------------------------------------
8764            Bra
8765            [6g]
8766            Ket
8767            End
8768    ------------------------------------------------------------------
8769    
8770  /(?1)\c[/  /(?1)\c[/
8771  Failed: reference to non-existent subpattern at offset 3  Failed: reference to non-existent subpattern at offset 3
# Line 8757  No match Line 8845  No match
8845  No match  No match
8846      a\x85b      a\x85b
8847  No match  No match
8848    
8849    /(*ANY).*/g
8850        abc\r\ndef
8851     0: abc
8852     0:
8853     0: def
8854     0:
8855    
8856    /(*ANYCRLF).*/g
8857        abc\r\ndef
8858     0: abc
8859     0:
8860     0: def
8861     0:
8862    
8863    /(*CRLF).*/g
8864        abc\r\ndef
8865     0: abc
8866     0:
8867     0: def
8868     0:
8869    
8870  /a\Rb/I<bsr_anycrlf>  /a\Rb/I<bsr_anycrlf>
8871  Capturing subpattern count = 0  Capturing subpattern count = 0
# Line 8962  Failed: subpattern name expected at offs Line 9071  Failed: subpattern name expected at offs
9071  /\k{}/  /\k{}/
9072  Failed: subpattern name expected at offset 3  Failed: subpattern name expected at offset 3
9073    
9074    /\k/
9075    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2
9076    
9077    /\kabc/
9078    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5
9079    
9080  /(?P=)/  /(?P=)/
9081  Failed: subpattern name expected at offset 4  Failed: subpattern name expected at offset 4
9082    
# Line 9146  No need char Line 9261  No need char
9261   +7 ^ ^     b   +7 ^ ^     b
9262   +7 ^^      b   +7 ^^      b
9263   +7 ^       b   +7 ^       b
9264    +11 ^       ^
9265  +12 ^       )  +12 ^       )
9266  +13 ^  +13 ^
9267   0:   0:
# Line 9183  No options Line 9299  No options
9299  First char at start or follows newline  First char at start or follows newline
9300  No need char  No need char
9301    
 /a?|b?/P  
     abc  
  0: a  
     ** Failers  
  0:  
     ddd\N  
 No match: POSIX code 17: match failed  
   
9302  /xyz/C  /xyz/C
9303    xyz    xyz
9304  --->xyz  --->xyz
# Line 9243  No match Line 9351  No match
9351   +0        ^     x   +0        ^     x
9352   +0         ^    x   +0         ^    x
9353  No match  No match
9354    
9355    /(*NO_START_OPT)xyz/C
9356      abcxyz
9357    --->abcxyz
9358    +15 ^          x
9359    +15  ^         x
9360    +15   ^        x
9361    +15    ^       x
9362    +16    ^^      y
9363    +17    ^ ^     z
9364    +18    ^  ^
9365     0: xyz
9366    
9367    /xyz/CY
9368      abcxyz
9369    --->abcxyz
9370     +0 ^          x
9371     +0  ^         x
9372     +0   ^        x
9373     +0    ^       x
9374     +1    ^^      y
9375     +2    ^ ^     z
9376     +3    ^  ^
9377     0: xyz
9378    
9379  /^"((?(?=[a])[^"])|b)*"$/C  /^"((?(?=[a])[^"])|b)*"$/C
9380      "ab"      "ab"
# Line 9260  No match Line 9392  No match
9392   +3 ^ ^      (?(?=[a])[^"])   +3 ^ ^      (?(?=[a])[^"])
9393   +5 ^ ^      (?=[a])   +5 ^ ^      (?=[a])
9394   +8 ^ ^      [a]   +8 ^ ^      [a]
9395    +17 ^ ^      |
9396  +21 ^ ^      "  +21 ^ ^      "
9397  +18 ^ ^      b  +18 ^ ^      b
9398  +19 ^  ^     )  +19 ^  ^     )
9399   +3 ^  ^     (?(?=[a])[^"])   +3 ^  ^     (?(?=[a])[^"])
9400   +5 ^  ^     (?=[a])   +5 ^  ^     (?=[a])
9401   +8 ^  ^     [a]   +8 ^  ^     [a]
9402    +17 ^  ^     |
9403  +21 ^  ^     "  +21 ^  ^     "
9404  +22 ^   ^    $  +22 ^   ^    $
9405  +23 ^   ^  +23 ^   ^
# Line 9561  Partial match: the cat Line 9695  Partial match: the cat
9695     abc\P\P     abc\P\P
9696   0: abc   0: abc
9697    
 /\w+A/P  
    CDAAAAB  
  0: CDAAAA  
   
 /\w+A/PU  
    CDAAAAB  
  0: CDA  
   
9698  /abc\K123/  /abc\K123/
9699      xyzabc123pqr      xyzabc123pqr
9700   0: 123   0: 123
# Line 9581  Partial match: abc12 Line 9707  Partial match: abc12
9707      xyzabc123pqr      xyzabc123pqr
9708   0: 123   0: 123
9709      xyzabc12\P      xyzabc12\P
9710  Partial match: abc12  Partial match at offset 6: abc12
9711      xyzabc12\P\P      xyzabc12\P\P
9712  Partial match: abc12  Partial match at offset 6: abc12
9713    
9714  /\babc\b/  /\babc\b/
9715      +++abc+++      +++abc+++
9716   0: abc   0: abc
9717      +++ab\P      +++ab\P
9718  Partial match: +ab  Partial match at offset 3: +ab
9719      +++ab\P\P      +++ab\P\P
9720  Partial match: +ab  Partial match at offset 3: +ab
9721    
9722  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
9723  ------------------------------------------------------------------  ------------------------------------------------------------------
9724          Bra          Bra
         Once  
9725          Recurse          Recurse
         Ket  
         Once  
9726          Recurse          Recurse
         Ket  
9727          Cond          Cond
9728          Cond def          Cond def
9729          CBra 1          CBra 1
# Line 9622  Partial match: +ab Line 9744  Partial match: +ab
9744  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
9745  ------------------------------------------------------------------  ------------------------------------------------------------------
9746          Bra          Bra
         Once  
9747          Recurse          Recurse
         Ket  
         Once  
9748          Recurse          Recurse
         Ket  
9749          Cond          Cond
9750          Cond def          Cond def
9751          CBra 1          CBra 1
# Line 9969  Need char = ':' Line 10087  Need char = ':'
10087  Subject length lower bound = 22  Subject length lower bound = 22
10088  No set of starting bytes  No set of starting bytes
10089    
 /  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                          # optional leading comment  
 (?:    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )                    # initial word  
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )  )* # further okay, if led by a period  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 # address  
 |                     #  or  
 (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )             # one word, optionally followed by....  
 (?:  
 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...  
 \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)       |  # comments, or...  
   
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 # quoted strings  
 )*  
 <  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                     # leading <  
 (?:  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
   
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  ,  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 )* # further okay, if led by comma  
 :                                # closing colon  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  )? #       optional route  
 (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )                    # initial word  
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )  )* # further okay, if led by a period  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 #       address spec  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  > #                  trailing >  
 # name and address  
 )  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                       # optional trailing comment  
 /xSI  
 Capturing subpattern count = 0  
 Contains explicit CR or LF match  
 Options: extended  
 No first char  
 No need char  
 Subject length lower bound = 3  
 Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8  
   9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e  
   f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f  
   
10090  /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS  /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS
10091  Capturing subpattern count = 11  Capturing subpattern count = 11
10092  Options: caseless dotall  Options: caseless dotall
# Line 10184  No set of starting bytes Line 10098  No set of starting bytes
10098  "(?>.*/)foo"SI  "(?>.*/)foo"SI
10099  Capturing subpattern count = 0  Capturing subpattern count = 0
10100  No options  No options
10101  First char at start or follows newline  No first char
10102  Need char = 'o'  Need char = 'o'
10103  Subject length lower bound = 4  Subject length lower bound = 4
10104  No set of starting bytes  No set of starting bytes
# Line 10368  No match Line 10282  No match
10282          Cond nrecurse 1          Cond nrecurse 1
10283          $          $
10284          Alt          Alt
         Once  
10285          Recurse          Recurse
10286          Ket          Ket
10287          Ket          Ket
10288          Ket          Ket
         Ket  
10289          End          End
10290  ------------------------------------------------------------------  ------------------------------------------------------------------
10291  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 10429  Partial match: abca Line 10341  Partial match: abca
10341      xxxxabcde\P\P      xxxxabcde\P\P
10342  Partial match: abcde  Partial match: abcde
10343    
10344  /-- This is not in the Perl 5.10 test because Perl seems currently to be broken  /-- This is not in the Perl-compatible test because Perl seems currently to be
10345      and not behaving as specified in that it *does* bumpalong after hitting      broken and not behaving as specified in that it *does* bumpalong after
10346      (*COMMIT). --/      hitting (*COMMIT). --/
10347    
10348  /(?1)(A(*COMMIT)|B)D/  /(?1)(A(*COMMIT)|B)D/
10349      ABD      ABD
# Line 10511  Starting byte set: i Line 10423  Starting byte set: i
10423  /(?i)a(?-i)b|c/BZ  /(?i)a(?-i)b|c/BZ
10424  ------------------------------------------------------------------  ------------------------------------------------------------------
10425          Bra          Bra
10426       NC a       /i a
      00 Opt  
10427          b          b
10428          Alt          Alt
      00 Opt  
10429          c          c
10430          Ket          Ket
10431          End          End
# Line 10534  No match Line 10444  No match
10444  /(?i)a(?s)b|c/BZ  /(?i)a(?s)b|c/BZ
10445  ------------------------------------------------------------------  ------------------------------------------------------------------
10446          Bra          Bra
10447       NC a       /i ab
      05 Opt  
      NC b  
10448          Alt          Alt
10449       05 Opt       /i c
      NC c  
10450          Ket          Ket
10451          End          End
10452  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 10547  No match Line 10454  No match
10454  /(?i)a(?s-i)b|c/BZ  /(?i)a(?s-i)b|c/BZ
10455  ------------------------------------------------------------------  ------------------------------------------------------------------
10456          Bra          Bra
10457       NC a       /i a
      04 Opt  
10458          b          b
10459          Alt          Alt
      04 Opt  
10460          c          c
10461          Ket          Ket
10462          End          End
# Line 10598  No match Line 10503  No match
10503  ------------------------------------------------------------------  ------------------------------------------------------------------
10504          Bra          Bra
10505          ^          ^
10506          Once          Braposzero
10507          Brazero          SBraPos
         Once  
10508          Recurse          Recurse
10509          KetRmax          KetRpos
         Ket  
10510          Cond          Cond
10511          Cond def          Cond def
10512          CBra 1          CBra 1
# Line 10634  No match Line 10537  No match
10537          End          End
10538  ------------------------------------------------------------------  ------------------------------------------------------------------
10539    
10540  / -- 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  
10541       believe this to be a Perl bug. --/       believe this to be a Perl bug. --/
10542    
 /(?=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  
   
10543  /(?>a\Kb)z|(ab)/  /(?>a\Kb)z|(ab)/
10544      ab      ab
10545   0: ab   0: ab
10546   1: ab   1: ab
10547    
 /----------------------/  
   
10548  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10549  Failed: recursive call could loop indefinitely at offset 31  Failed: recursive call could loop indefinitely at offset 31
10550    
# Line 10681  Failed: an argument is not allowed for ( Line 10564  Failed: an argument is not allowed for (
10564      ACABX      ACABX
10565  No match  No match
10566    
10567  /--- 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
10568       is a bug in Perl. ---/       is a bug in Perl. ---/
10569    
10570  /A(*THEN)B|A(*THEN)C/K  /A(*THEN)B|A(*THEN)C/K
# Line 10692  No match Line 10575  No match
10575      AC      AC
10576  No match  No match
10577    
10578  /--- A whole lot of tests of verbs with arguments are here rather than in test  /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
10579       11 because Perl doesn't seem to follow its specification entirely  though PCRE does. ---/
      correctly. ---/  
   
 /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is  
      not clear how Perl defines "involved in the failure of the match". ---/  
   
 /^(A(*THEN:A)B|C(*THEN:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match  
     CB  
 No match, mark = B  
   
 /--- Check the use of names for success and failure. PCRE doesn't show these  
 names for success, though Perl does, contrary to its spec. ---/  
   
 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match, mark = A  
     CB  
 No match, mark = B  
   
 /--- An empty name does not pass back an empty string. It is the same as if no  
 name were given. ---/  
   
 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
   
 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/  
   
 /A(*PRUNE:A)B/K  
     ACAB  
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/K  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /(*MARK:A)(*THEN:B)(C|X)/K  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/  
   
 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- Same --/  
   
 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This should fail; the SKIP advances by one, but when we get to AC, the  
      PRUNE kills it. ---/  
   
 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /A(*:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This should fail, as a null name is the same as no name ---/  
   
 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This fails in PCRE, and I think that is in accordance with Perl's  
      documentation, though in Perl it succeeds. ---/  
   
 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK  
     AAAC  
 No match  
   
 /--- Mark names can be duplicated ---/  
10580    
 /A(*:A)B|X(*:A)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XY  
 MK: A  
   
10581  /^A(*:A)B|^X(*:A)Y/K  /^A(*:A)B|^X(*:A)Y/K
10582      ** Failers      ** Failers
10583  No match  No match
10584      XAQQ      XAQQ
10585  No match, mark = A  No match, mark = A
10586    
 /--- A check on what happens after hitting a mark and them bumping along to  
 something that does not even start. Perl reports tags after the failures here,  
 though it does not when the individual letters are made into something  
 more complicated. ---/  
   
 /A(*:A)B|XX(*:B)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XXY  
 MK: B  
     ** Failers  
 No match  
     XAQQ  
 No match  
     XAQQXZZ  
 No match  
     AXQQQ  
 No match  
     AXXQQQ  
 No match  
   
10587  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10588  optimizations defeat this. So does the PCRE optimization unless we disable it  optimizations defeat this. So does the PCRE optimization unless we disable it
10589  with \Y. ---/  with \Y. ---/
# Line 10850  No match Line 10596  No match
10596      DEFGABC\Y      DEFGABC\Y
10597  No match  No match
10598    
 /--- Repeat some tests with added studying. ---/  
   
 /A(*COMMIT)B/+KS  
     ACABX  
 No match  
   
 /A(*THEN)B|A(*THEN)C/KS  
     AC  
  0: AC  
   
 /A(*PRUNE)B|A(*PRUNE)C/KS  
     AC  
 No match  
   
 /^(A(*THEN:A)B|C(*THEN:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match  
     CB  
 No match, mark = B  
   
 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match, mark = A  
     CB  
 No match, mark = B  
   
 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
   
 /A(*PRUNE:A)B/KS  
     ACAB  
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /(*MARK:A)(*THEN:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*:A)A+(*SKIP)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS  
     AAAC  
 No match  
   
 /A(*:A)B|XX(*:B)Y/KS  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XXY  
 MK: B  
     ** Failers  
 No match  
     XAQQ  
 No match  
     XAQQXZZ  
 No match  
     AXQQQ  
 No match  
     AXXQQQ  
 No match  
   
 /(*COMMIT)ABC/  
     ABCDEFG  
  0: ABC  
     ** Failers  
 No match  
     DEFGABC\Y  
 No match  
   
10599  /^(ab (c+(*THEN)cd) | xyz)/x  /^(ab (c+(*THEN)cd) | xyz)/x
10600      abcccd      abcccd
10601  No match  No match
# Line 10982  No match Line 10608  No match
10608      abcccd      abcccd
10609  No match  No match
10610    
10611  /--- Perl 5.11 gets some of these wrong ---/  /--- Perl gets some of these wrong ---/
10612    
10613  /(?>.(*ACCEPT))*?5/  /(?>.(*ACCEPT))*?5/
10614      abcde      abcde
# Line 11003  No match Line 10629  No match
10629   0: a   0: a
10630   1: a   1: a
10631    
10632    /A\NB./BZ
10633    ------------------------------------------------------------------
10634            Bra
10635            A
10636            Any
10637            B
10638            Any
10639            Ket
10640            End
10641    ------------------------------------------------------------------
10642        ACBD
10643     0: ACBD
10644        *** Failers
10645    No match
10646        A\nB
10647    No match
10648        ACB\n
10649    No match
10650    
10651    /A\NB./sBZ
10652    ------------------------------------------------------------------
10653            Bra
10654            A
10655            Any
10656            B
10657            AllAny
10658            Ket
10659            End
10660    ------------------------------------------------------------------
10661        ACBD
10662     0: ACBD
10663        ACB\n
10664     0: ACB\x0a
10665        *** Failers
10666    No match
10667        A\nB
10668    No match
10669    
10670    /A\NB/<crlf>
10671        A\nB
10672     0: A\x0aB
10673        A\rB
10674     0: A\x0dB
10675        ** Failers
10676    No match
10677        A\r\nB
10678    No match
10679    
10680    /\R+b/BZ
10681    ------------------------------------------------------------------
10682            Bra
10683            \R++
10684            b
10685            Ket
10686            End
10687    ------------------------------------------------------------------
10688    
10689    /\R+\n/BZ
10690    ------------------------------------------------------------------
10691            Bra
10692            \R+
10693            \x0a
10694            Ket
10695            End
10696    ------------------------------------------------------------------
10697    
10698    /\R+\d/BZ
10699    ------------------------------------------------------------------
10700            Bra
10701            \R++
10702            \d
10703            Ket
10704            End
10705    ------------------------------------------------------------------
10706    
10707    /\d*\R/BZ
10708    ------------------------------------------------------------------
10709            Bra
10710            \d*+
10711            \R
10712            Ket
10713            End
10714    ------------------------------------------------------------------
10715    
10716    /\s*\R/BZ
10717    ------------------------------------------------------------------
10718            Bra
10719            \s*
10720            \R
10721            Ket
10722            End
10723    ------------------------------------------------------------------
10724        \x20\x0a
10725     0:  \x0a
10726        \x20\x0d
10727     0:  \x0d
10728        \x20\x0d\x0a
10729     0:  \x0d\x0a
10730    
10731    /\S*\R/BZ
10732    ------------------------------------------------------------------
10733            Bra
10734            \S*+
10735            \R
10736            Ket
10737            End
10738    ------------------------------------------------------------------
10739        a\x0a
10740     0: a\x0a
10741    
10742    /X\h*\R/BZ
10743    ------------------------------------------------------------------
10744            Bra
10745            X
10746            \h*+
10747            \R
10748            Ket
10749            End
10750    ------------------------------------------------------------------
10751        X\x20\x0a
10752     0: X \x0a
10753    
10754    /X\H*\R/BZ
10755    ------------------------------------------------------------------
10756            Bra
10757            X
10758            \H*
10759            \R
10760            Ket
10761            End
10762    ------------------------------------------------------------------
10763        X\x0d\x0a
10764     0: X\x0d\x0a
10765    
10766    /X\H+\R/BZ
10767    ------------------------------------------------------------------
10768            Bra
10769            X
10770            \H+
10771            \R
10772            Ket
10773            End
10774    ------------------------------------------------------------------
10775        X\x0d\x0a
10776     0: X\x0d\x0a
10777    
10778    /X\H++\R/BZ
10779    ------------------------------------------------------------------
10780            Bra
10781            X
10782            \H++
10783            \R
10784            Ket
10785            End
10786    ------------------------------------------------------------------
10787        X\x0d\x0a
10788    No match
10789    
10790    /(?<=abc)def/
10791        abc\P\P
10792    Partial match at offset 3: abc
10793    
10794    /abc$/
10795        abc
10796     0: abc
10797        abc\P
10798     0: abc
10799        abc\P\P
10800    Partial match: abc
10801    
10802    /abc$/m
10803        abc
10804     0: abc
10805        abc\n
10806     0: abc
10807        abc\P\P
10808    Partial match: abc
10809        abc\n\P\P
10810     0: abc
10811        abc\P
10812     0: abc
10813        abc\n\P
10814     0: abc
10815    
10816    /abc\z/
10817        abc
10818     0: abc
10819        abc\P
10820     0: abc
10821        abc\P\P
10822    Partial match: abc
10823    
10824    /abc\Z/
10825        abc
10826     0: abc
10827        abc\P
10828     0: abc
10829        abc\P\P
10830    Partial match: abc
10831    
10832    /abc\b/
10833        abc
10834     0: abc
10835        abc\P
10836     0: abc
10837        abc\P\P
10838    Partial match: abc
10839    
10840    /abc\B/
10841        abc
10842    No match
10843        abc\P
10844    Partial match: abc
10845        abc\P\P
10846    Partial match: abc
10847    
10848    /.+/
10849        abc\>0
10850     0: abc
10851        abc\>1
10852     0: bc
10853        abc\>2
10854     0: c
10855        abc\>3
10856    No match
10857        abc\>4
10858    Error -24 (bad offset value)
10859        abc\>-4
10860    Error -24 (bad offset value)
10861    
10862    /^\cģ/
10863    Failed: \c must be followed by an ASCII character at offset 3
10864    
10865    /(?P<abn>(?P=abn)xxx)/BZ
10866    ------------------------------------------------------------------
10867            Bra
10868            Once
10869            CBra 1
10870            \1
10871            xxx
10872            Ket
10873            Ket
10874            Ket
10875            End
10876    ------------------------------------------------------------------
10877    
10878    /(a\1z)/BZ
10879    ------------------------------------------------------------------
10880            Bra
10881            Once
10882            CBra 1
10883            a
10884            \1
10885            z
10886            Ket
10887            Ket
10888            Ket
10889            End
10890    ------------------------------------------------------------------
10891    
10892    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
10893    Failed: syntax error in subpattern name (missing terminator) at offset 29
10894    
10895    /(?P<abn>(?P=axn)xxx)/BZ
10896    Failed: reference to non-existent subpattern at offset 15
10897    
10898    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
10899    ------------------------------------------------------------------
10900            Bra
10901            CBra 1
10902            \2
10903            xxx
10904            Ket
10905            CBra 2
10906            yy
10907            Ket
10908            Ket
10909            End
10910    ------------------------------------------------------------------
10911    
10912    /-- These tests are here because Perl gets the first one wrong. --/
10913    
10914    /(\R*)(.)/s
10915        \r\n
10916     0: \x0d
10917     1:
10918     2: \x0d
10919        \r\r\n\n\r
10920     0: \x0d\x0d\x0a\x0a\x0d
10921     1: \x0d\x0d\x0a\x0a
10922     2: \x0d
10923        \r\r\n\n\r\n
10924     0: \x0d\x0d\x0a\x0a\x0d
10925     1: \x0d\x0d\x0a\x0a
10926     2: \x0d
10927    
10928    /(\R)*(.)/s
10929        \r\n
10930     0: \x0d
10931     1: <unset>
10932     2: \x0d
10933        \r\r\n\n\r
10934     0: \x0d\x0d\x0a\x0a\x0d
10935     1: \x0a
10936     2: \x0d
10937        \r\r\n\n\r\n
10938     0: \x0d\x0d\x0a\x0a\x0d
10939     1: \x0a
10940     2: \x0d
10941    
10942    /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
10943        \r\n
10944     0: \x0d
10945     1:
10946     2: \x0d
10947        \r\r\n\n\r
10948     0: \x0d\x0d\x0a\x0a\x0d
10949     1: \x0d\x0d\x0a\x0a
10950     2: \x0d
10951        \r\r\n\n\r\n
10952     0: \x0d\x0d\x0a\x0a\x0d
10953     1: \x0d\x0d\x0a\x0a
10954     2: \x0d
10955    
10956    /-- --/
10957    
10958    /^abc$/BZ
10959    ------------------------------------------------------------------
10960            Bra
10961            ^
10962            abc
10963            $
10964            Ket
10965            End
10966    ------------------------------------------------------------------
10967    
10968    /^abc$/BZm
10969    ------------------------------------------------------------------
10970            Bra
10971         /m ^
10972            abc
10973         /m $
10974            Ket
10975            End
10976    ------------------------------------------------------------------
10977    
10978    /^(a)*+(\w)/S
10979        aaaaX
10980     0: aaaaX
10981     1: a
10982     2: X
10983        ** Failers
10984    No match
10985        aaaa
10986    No match
10987    
10988    /^(?:a)*+(\w)/S
10989        aaaaX
10990     0: aaaaX
10991     1: X
10992        ** Failers
10993    No match
10994        aaaa
10995    No match
10996    
10997    /(a)++1234/SDZ
10998    ------------------------------------------------------------------
10999            Bra
11000            CBraPos 1
11001            a
11002            KetRpos
11003            1234
11004            Ket
11005            End
11006    ------------------------------------------------------------------
11007    Capturing subpattern count = 1
11008    No options
11009    First char = 'a'
11010    Need char = '4'
11011    Subject length lower bound = 5
11012    No set of starting bytes
11013    
11014    /([abc])++1234/SI
11015    Capturing subpattern count = 1
11016    No options
11017    No first char
11018    Need char = '4'
11019    Subject length lower bound = 5
11020    Starting byte set: a b c
11021    
11022    /(?<=(abc)+)X/
11023    Failed: lookbehind assertion is not fixed length at offset 10
11024    
11025    /(^ab)/I
11026    Capturing subpattern count = 1
11027    Options: anchored
11028    No first char
11029    No need char
11030    
11031    /(^ab)++/I
11032    Capturing subpattern count = 1
11033    Options: anchored
11034    No first char
11035    No need char
11036    
11037    /(^ab|^)+/I
11038    Capturing subpattern count = 1
11039    Options: anchored
11040    No first char
11041    No need char
11042    
11043    /(^ab|^)++/I
11044    Capturing subpattern count = 1
11045    Options: anchored
11046    No first char
11047    No need char
11048    
11049    /(?:^ab)/I
11050    Capturing subpattern count = 0
11051    Options: anchored
11052    No first char
11053    No need char
11054    
11055    /(?:^ab)++/I
11056    Capturing subpattern count = 0
11057    Options: anchored
11058    No first char
11059    No need char
11060    
11061    /(?:^ab|^)+/I
11062    Capturing subpattern count = 0
11063    Options: anchored
11064    No first char
11065    No need char
11066    
11067    /(?:^ab|^)++/I
11068    Capturing subpattern count = 0
11069    Options: anchored
11070    No first char
11071    No need char
11072    
11073    /(.*ab)/I
11074    Capturing subpattern count = 1
11075    No options
11076    First char at start or follows newline
11077    Need char = 'b'
11078    
11079    /(.*ab)++/I
11080    Capturing subpattern count = 1
11081    No options
11082    First char at start or follows newline
11083    Need char = 'b'
11084    
11085    /(.*ab|.*)+/I
11086    Capturing subpattern count = 1
11087    No options
11088    First char at start or follows newline
11089    No need char
11090    
11091    /(.*ab|.*)++/I
11092    Capturing subpattern count = 1
11093    No options
11094    First char at start or follows newline
11095    No need char
11096    
11097    /(?:.*ab)/I
11098    Capturing subpattern count = 0
11099    No options
11100    First char at start or follows newline
11101    Need char = 'b'
11102    
11103    /(?:.*ab)++/I
11104    Capturing subpattern count = 0
11105    No options
11106    First char at start or follows newline
11107    Need char = 'b'
11108    
11109    /(?:.*ab|.*)+/I
11110    Capturing subpattern count = 0
11111    No options
11112    First char at start or follows newline
11113    No need char
11114    
11115    /(?:.*ab|.*)++/I
11116    Capturing subpattern count = 0
11117    No options
11118    First char at start or follows newline
11119    No need char
11120    
11121    /(?=a)[bcd]/I
11122    Capturing subpattern count = 0
11123    No options
11124    First char = 'a'
11125    No need char
11126    
11127    /((?=a))[bcd]/I
11128    Capturing subpattern count = 1
11129    No options
11130    First char = 'a'
11131    No need char
11132    
11133    /((?=a))+[bcd]/I
11134    Capturing subpattern count = 1
11135    No options
11136    First char = 'a'
11137    No need char
11138    
11139    /((?=a))++[bcd]/I
11140    Capturing subpattern count = 1
11141    No options
11142    First char = 'a'
11143    No need char
11144    
11145    /(?=a+)[bcd]/iI
11146    Capturing subpattern count = 0
11147    Options: caseless
11148    First char = 'a' (caseless)
11149    No need char
11150    
11151    /(?=a+?)[bcd]/iI
11152    Capturing subpattern count = 0
11153    Options: caseless
11154    First char = 'a' (caseless)
11155    No need char
11156    
11157    /(?=a++)[bcd]/iI
11158    Capturing subpattern count = 0
11159    Options: caseless
11160    First char = 'a' (caseless)
11161    No need char
11162    
11163    /(?=a{3})[bcd]/iI
11164    Capturing subpattern count = 0
11165    Options: caseless
11166    First char = 'a' (caseless)
11167    Need char = 'a' (caseless)
11168    
11169    /(abc)\1+/S
11170    
11171    /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
11172    
11173    /(?1)(?:(b(*ACCEPT))){0}/
11174        b
11175     0: b
11176    
11177    /(?1)(?:(b(*ACCEPT))){0}c/
11178        bc
11179     0: bc
11180        ** Failers
11181    No match
11182        b
11183    No match
11184    
11185    /(?1)(?:((*ACCEPT))){0}c/
11186        c
11187     0: c
11188        c\N
11189     0: c
11190    
11191    /^.*?(?(?=a)a|b(*THEN)c)/
11192        ba
11193    No match
11194    
11195    /^.*?(?(?=a)a|bc)/
11196        ba
11197     0: ba
11198    
11199    /^.*?(?(?=a)a(*THEN)b|c)/
11200        ac
11201    No match
11202    
11203    /^.*?(?(?=a)a(*THEN)b)c/
11204        ac
11205    No match
11206    
11207    /^.*?(a(*THEN)b)c/
11208        aabc
11209    No match
11210    
11211    /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
11212        aabc
11213     0: aabc
11214    
11215    /^.*?(a(*THEN)b|z)c/
11216        aabc
11217     0: aabc
11218     1: ab
11219    
11220    /^.*?(z|a(*THEN)b)c/
11221        aabc
11222     0: aabc
11223     1: ab
11224    
11225    /-- --/
11226    
11227    /-- These studied versions are here because they are not Perl-compatible; the
11228        studying means the mark is not seen. --/
11229    
11230    /(*MARK:A)(*SKIP:B)(C|X)/KS
11231        C
11232     0: C
11233     1: C
11234    MK: A
11235        D
11236    No match, mark = A
11237    
11238    /(*:A)A+(*SKIP:A)(B|Z)/KS
11239        AAAC
11240    No match, mark = A
11241    
11242    /-- --/
11243    
11244    "(?=a*(*ACCEPT)b)c"
11245        c
11246     0: c
11247        c\N
11248     0: c
11249    
11250    /(?1)c(?(DEFINE)((*ACCEPT)b))/
11251        c
11252     0: c
11253        c\N
11254     0: c
11255    
11256    /(?>(*ACCEPT)b)c/
11257        c
11258     0:
11259        c\N
11260    No match
11261    
11262    /(?:(?>(a)))+a%/++
11263        %aa%
11264     0: aa%
11265     0+
11266     1: a
11267     1+ a%
11268    
11269    /(a)b|ac/++SS
11270        ac\O3
11271     0: ac
11272     0+
11273    
11274    /(a)(b)x|abc/++
11275         abc\O6
11276     0: abc
11277     0+
11278    
11279    /(a)bc|(a)(b)\2/
11280        \O3abc
11281    Matched, but too many substrings
11282     0: abc
11283        \O4abc
11284    Matched, but too many substrings
11285     0: abc
11286    
11287    /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
11288    Capturing subpattern count = 2
11289    No options
11290    No first char
11291    No need char
11292    Subject length lower bound = 1
11293    No set of starting bytes
11294    
11295    /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
11296    Capturing subpattern count = 2
11297    No options
11298    No first char
11299    No need char
11300    Subject length lower bound = 3
11301    Starting byte set: a b
11302    
11303    /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
11304    Capturing subpattern count = 2
11305    No options
11306    No first char
11307    No need char
11308    Subject length lower bound = 4
11309    Starting byte set: a b
11310    
11311    /(abc)(?1)/SI
11312    Capturing subpattern count = 1
11313    No options
11314    First char = 'a'
11315    Need char = 'c'
11316    Subject length lower bound = 6
11317    No set of starting bytes
11318    
11319    /^(?>a)++/
11320        aa\M
11321    Minimum match() limit = 5
11322    Minimum match() recursion limit = 2
11323     0: aa
11324        aaaaaaaaa\M
11325    Minimum match() limit = 12
11326    Minimum match() recursion limit = 2
11327     0: aaaaaaaaa
11328    
11329    /(a)(?1)++/
11330        aa\M
11331    Minimum match() limit = 7
11332    Minimum match() recursion limit = 4
11333     0: aa
11334     1: a
11335        aaaaaaaaa\M
11336    Minimum match() limit = 21
11337    Minimum match() recursion limit = 4
11338     0: aaaaaaaaa
11339     1: a
11340    
11341    /(?:(foo)|(bar)|(baz))X/SS=
11342        bazfooX
11343     0: fooX
11344     1: foo
11345     2: <unset>
11346     3: <unset>
11347        foobazbarX
11348     0: barX
11349     1: <unset>
11350     2: bar
11351     3: <unset>
11352        barfooX
11353     0: fooX
11354     1: foo
11355     2: <unset>
11356     3: <unset>
11357        bazX
11358     0: bazX
11359     1: <unset>
11360     2: <unset>
11361     3: baz
11362        foobarbazX
11363     0: bazX
11364     1: <unset>
11365     2: <unset>
11366     3: baz
11367        bazfooX\O0
11368    Matched, but too many substrings
11369        bazfooX\O2
11370    Matched, but too many substrings
11371     0: fooX
11372        bazfooX\O4
11373    Matched, but too many substrings
11374     0: fooX
11375     1: <unset>
11376        bazfooX\O6
11377    Matched, but too many substrings
11378     0: fooX
11379     1: foo
11380     2: <unset>
11381        bazfooX\O8
11382    Matched, but too many substrings
11383     0: fooX
11384     1: foo
11385     2: <unset>
11386     3: <unset>
11387        bazfooX\O10
11388     0: fooX
11389     1: foo
11390     2: <unset>
11391     3: <unset>
11392    
11393    /(?=abc){3}abc/BZ
11394    ------------------------------------------------------------------
11395            Bra
11396            Assert
11397            abc
11398            Ket
11399            abc
11400            Ket
11401            End
11402    ------------------------------------------------------------------
11403    
11404    /(?=abc)+abc/BZ
11405    ------------------------------------------------------------------
11406            Bra
11407            Assert
11408            abc
11409            Ket
11410            abc
11411            Ket
11412            End
11413    ------------------------------------------------------------------
11414    
11415    /(?=abc)++abc/BZ
11416    ------------------------------------------------------------------
11417            Bra
11418            Assert
11419            abc
11420            Ket
11421            abc
11422            Ket
11423            End
11424    ------------------------------------------------------------------
11425    
11426    /(?=abc){0}xyz/BZ
11427    ------------------------------------------------------------------
11428            Bra
11429            Skip zero
11430            Assert
11431            abc
11432            Ket
11433            xyz
11434            Ket
11435            End
11436    ------------------------------------------------------------------
11437    
11438    /(?=(a))?./BZ
11439    ------------------------------------------------------------------
11440            Bra
11441            Brazero
11442            Assert
11443            CBra 1
11444            a
11445            Ket
11446            Ket
11447            Any
11448            Ket
11449            End
11450    ------------------------------------------------------------------
11451    
11452    /(?=(a))??./BZ
11453    ------------------------------------------------------------------
11454            Bra
11455            Braminzero
11456            Assert
11457            CBra 1
11458            a
11459            Ket
11460            Ket
11461            Any
11462            Ket
11463            End
11464    ------------------------------------------------------------------
11465    
11466    /^(?=(a)){0}b(?1)/BZ
11467    ------------------------------------------------------------------
11468            Bra
11469            ^
11470            Skip zero
11471            Assert
11472            CBra 1
11473            a
11474            Ket
11475            Ket
11476            b
11477            Recurse
11478            Ket
11479            End
11480    ------------------------------------------------------------------
11481    
11482    /(?(DEFINE)(a))?b(?1)/BZ
11483    ------------------------------------------------------------------
11484            Bra
11485            Cond
11486            Cond def
11487            CBra 1
11488            a
11489            Ket
11490            Ket
11491            b
11492            Recurse
11493            Ket
11494            End
11495    ------------------------------------------------------------------
11496    
11497    /^(?=(?1))?[az]([abc])d/BZ
11498    ------------------------------------------------------------------
11499            Bra
11500            ^
11501            Brazero
11502            Assert
11503            Recurse
11504            Ket
11505            [az]
11506            CBra 1
11507            [a-c]
11508            Ket
11509            d
11510            Ket
11511            End
11512    ------------------------------------------------------------------
11513    
11514    /^(?!a){0}\w+/BZ
11515    ------------------------------------------------------------------
11516            Bra
11517            ^
11518            Skip zero
11519            Assert not
11520            a
11521            Ket
11522            \w+
11523            Ket
11524            End
11525    ------------------------------------------------------------------
11526    
11527    /(?<=(abc))?xyz/BZ
11528    ------------------------------------------------------------------
11529            Bra
11530            Brazero
11531            AssertB
11532            Reverse
11533            CBra 1
11534            abc
11535            Ket
11536            Ket
11537            xyz
11538            Ket
11539            End
11540    ------------------------------------------------------------------
11541    
11542    /[:a[:abc]b:]/BZ
11543    ------------------------------------------------------------------
11544            Bra
11545            [:[a-c]
11546            b:]
11547            Ket
11548            End
11549    ------------------------------------------------------------------
11550    
11551    /((?2))((?1))/SS
11552        abc
11553    Error -26 (nested recursion at the same subject position)
11554    
11555    /((?(R2)a+|(?1)b))/SS
11556        aaaabcde
11557    Error -26 (nested recursion at the same subject position)
11558    
11559    /(?(R)a*(?1)|((?R))b)/SS
11560        aaaabcde
11561    Error -26 (nested recursion at the same subject position)
11562    
11563    /(a+|(?R)b)/
11564    Failed: recursive call could loop indefinitely at offset 7
11565    
11566    /^(a(*:A)(d|e(*:B))z|aeq)/C
11567        adz
11568    --->adz
11569     +0 ^       ^
11570     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11571     +2 ^       a
11572     +3 ^^      (*:A)
11573     +8 ^^      (d|e(*:B))
11574    Latest Mark: A
11575     +9 ^^      d
11576    +10 ^ ^     |
11577    +18 ^ ^     z
11578    +19 ^  ^    |
11579    +24 ^  ^
11580     0: adz
11581     1: adz
11582     2: d
11583        aez
11584    --->aez
11585     +0 ^       ^
11586     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11587     +2 ^       a
11588     +3 ^^      (*:A)
11589     +8 ^^      (d|e(*:B))
11590    Latest Mark: A
11591     +9 ^^      d
11592    +11 ^^      e
11593    +12 ^ ^     (*:B)
11594    +17 ^ ^     )
11595    Latest Mark: B
11596    +18 ^ ^     z
11597    +19 ^  ^    |
11598    +24 ^  ^
11599     0: aez
11600     1: aez
11601     2: e
11602        aeqwerty
11603    --->aeqwerty
11604     +0 ^            ^
11605     +1 ^            (a(*:A)(d|e(*:B))z|aeq)
11606     +2 ^            a
11607     +3 ^^           (*:A)
11608     +8 ^^           (d|e(*:B))
11609    Latest Mark: A
11610     +9 ^^           d
11611    +11 ^^           e
11612    +12 ^ ^          (*:B)
11613    +17 ^ ^          )
11614    Latest Mark: B
11615    +18 ^ ^          z
11616    +20 ^            a
11617    +21 ^^           e
11618    +22 ^ ^          q
11619    +23 ^  ^         )
11620    +24 ^  ^
11621     0: aeq
11622     1: aeq
11623    
11624    /.(*F)/
11625        \P\Pabc
11626    No match
11627    
11628    /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
11629    Capturing subpattern count = 0
11630    No options
11631    First char = 't'
11632    Need char = 't'
11633    Max lookbehind = 1
11634    Subject length lower bound = 18
11635    No set of starting bytes
11636    
11637    /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
11638    Capturing subpattern count = 0
11639    No options
11640    No first char
11641    No need char
11642    Max lookbehind = 1
11643    Subject length lower bound = 8
11644    Starting byte set: < o t u
11645    
11646    /a(*SKIP)c|b(*ACCEPT)|/+S!I
11647    Capturing subpattern count = 0
11648    No options
11649    No first char
11650    No need char
11651    Subject length lower bound = -1
11652    No set of starting bytes
11653        a
11654     0:
11655     0+
11656    
11657    /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
11658    Capturing subpattern count = 0
11659    No options
11660    No first char
11661    No need char
11662    Subject length lower bound = -1
11663    Starting byte set: a b x
11664        ax
11665     0: x
11666    
11667    'a*(*ACCEPT)b'+
11668        \N\N
11669    No match
11670        abc\N\N
11671     0: a
11672     0+ bc
11673        bbb\N\N
11674     0:
11675     0+ bb
11676    
11677    /(*ACCEPT)a/+I
11678    Capturing subpattern count = 0
11679    No options
11680    No first char
11681    No need char
11682        bax
11683     0:
11684     0+ bax
11685    
11686    /z(*ACCEPT)a/+I
11687    Capturing subpattern count = 0
11688    No options
11689    First char = 'z'
11690    No need char
11691        baxzbx
11692     0: z
11693     0+ bx
11694    
11695    /a(?:.)*?a/ims
11696        \Mabbbbbbbbbbbbbbbbbbbbba
11697    Minimum match() limit = 65
11698    Minimum match() recursion limit = 2
11699     0: abbbbbbbbbbbbbbbbbbbbba
11700    
11701    /a(?:.(*THEN))*?a/ims
11702        \Mabbbbbbbbbbbbbbbbbbbbba
11703    Minimum match() limit = 86
11704    Minimum match() recursion limit = 45
11705     0: abbbbbbbbbbbbbbbbbbbbba
11706    
11707    /a(?:.(*THEN:ABC))*?a/ims
11708        \Mabbbbbbbbbbbbbbbbbbbbba
11709    Minimum match() limit = 86
11710    Minimum match() recursion limit = 45
11711     0: abbbbbbbbbbbbbbbbbbbbba
11712    
11713    /^(?>a+)(?>(z+))\w/BZ
11714    ------------------------------------------------------------------
11715            Bra
11716            ^
11717            Once_NC
11718            a+
11719            Ket
11720            Once
11721            CBra 1
11722            z+
11723            Ket
11724            Ket
11725            \w
11726            Ket
11727            End
11728    ------------------------------------------------------------------
11729        aaaazzzzb
11730     0: aaaazzzzb
11731     1: zzzz
11732        ** Failers
11733    No match
11734        aazz
11735    No match
11736    
11737    /(.)(\1|a(?2))/
11738        bab
11739     0: bab
11740     1: b
11741     2: ab
11742    
11743    /\1|(.)(?R)\1/
11744        cbbbc
11745     0: cbbbc
11746     1: c
11747    
11748    /(.)((?(1)c|a)|a(?2))/
11749        baa
11750    No match
11751    
11752    /(?P<abn>(?P=abn)xxx)/BZ
11753    ------------------------------------------------------------------
11754            Bra
11755            Once
11756            CBra 1
11757            \1
11758            xxx
11759            Ket
11760            Ket
11761            Ket
11762            End
11763    ------------------------------------------------------------------
11764    
11765    /(a\1z)/BZ
11766    ------------------------------------------------------------------
11767            Bra
11768            Once
11769            CBra 1
11770            a
11771            \1
11772            z
11773            Ket
11774            Ket
11775            Ket
11776            End
11777    ------------------------------------------------------------------
11778    
11779    /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
11780         \Maabbccddee
11781    Minimum match() limit = 12
11782    Minimum match() recursion limit = 3
11783     0: aabbccddee
11784    
11785    /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
11786         \Maabbccddee
11787    Minimum match() limit = 22
11788    Minimum match() recursion limit = 21
11789     0: aabbccddee
11790     1: aa
11791     2: bb
11792     3: cc
11793     4: dd
11794     5: ee
11795    
11796    /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
11797         \Maabbccddee
11798    Minimum match() limit = 18
11799    Minimum match() recursion limit = 13
11800     0: aabbccddee
11801     1: aa
11802     2: cc
11803     3: ee
11804    
11805    /^a\x41z/<JS>
11806        aAz
11807     0: aAz
11808        *** Failers
11809    No match
11810        ax41z
11811    No match
11812    
11813    /^a[m\x41]z/<JS>
11814        aAz
11815     0: aAz
11816    
11817    /^a\x1z/<JS>
11818        ax1z
11819     0: ax1z
11820    
11821    /^a\u0041z/<JS>
11822        aAz
11823     0: aAz
11824        *** Failers
11825    No match
11826        au0041z
11827    No match
11828    
11829    /^a[m\u0041]z/<JS>
11830        aAz
11831     0: aAz
11832    
11833    /^a\u041z/<JS>
11834        au041z
11835     0: au041z
11836        *** Failers
11837    No match
11838        aAz
11839    No match
11840    
11841    /^a\U0041z/<JS>
11842        aU0041z
11843     0: aU0041z
11844        *** Failers
11845    No match
11846        aAz
11847    No match
11848    
11849    /(?(?=c)c|d)++Y/BZ
11850    ------------------------------------------------------------------
11851            Bra
11852            BraPos
11853            Cond
11854            Assert
11855            c
11856            Ket
11857            c
11858            Alt
11859            d
11860            Ket
11861            KetRpos
11862            Y
11863            Ket
11864            End
11865    ------------------------------------------------------------------
11866    
11867    /(?(?=c)c|d)*+Y/BZ
11868    ------------------------------------------------------------------
11869            Bra
11870            Braposzero
11871            BraPos
11872            Cond
11873            Assert
11874            c
11875            Ket
11876            c
11877            Alt
11878            d
11879            Ket
11880            KetRpos
11881            Y
11882            Ket
11883            End
11884    ------------------------------------------------------------------
11885    
11886    /a[\NB]c/
11887    Failed: \N is not supported in a class at offset 3
11888    
11889    /a[B-\Nc]/
11890    Failed: \N is not supported in a class at offset 5
11891    
11892    /(a)(?2){0,1999}?(b)/
11893    
11894    /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
11895    
11896    /--- This test, with something more complicated than individual letters, causes
11897    different behaviour in Perl. Perhaps it disables some optimization; no tag is
11898    passed back for the failures, whereas in PCRE there is a tag. ---/
11899    
11900    /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
11901        AABC
11902     0: AB
11903     1: A
11904     2: B
11905    MK: A
11906        XXYZ
11907     0: XXY
11908     1: <unset>
11909     2: <unset>
11910     3: X
11911     4: X
11912     5: Y
11913    MK: B
11914        ** Failers
11915    No match
11916        XAQQ
11917    No match, mark = A
11918        XAQQXZZ
11919    No match, mark = A
11920        AXQQQ
11921    No match, mark = A
11922        AXXQQQ
11923    No match, mark = B
11924    
11925    /-- Perl doesn't give marks for these, though it does if the alternatives are
11926    replaced by single letters. --/
11927    
11928    /(b|q)(*:m)f|a(*:n)w/K
11929        aw
11930     0: aw
11931    MK: n
11932        ** Failers
11933    No match, mark = n
11934        abc
11935    No match, mark = m
11936    
11937    /(q|b)(*:m)f|a(*:n)w/K
11938        aw
11939     0: aw
11940    MK: n
11941        ** Failers
11942    No match, mark = n
11943        abc
11944    No match, mark = m
11945    
11946    /-- After a partial match, the behaviour is as for a failure. --/
11947    
11948    /^a(*:X)bcde/K
11949       abc\P
11950    Partial match, mark=X: abc
11951    
11952    /-- These are here because Perl doesn't return a mark, except for the first --/
11953    
11954    /(?=(*:x))(q|)/K+
11955        abc
11956     0:
11957     0+ abc
11958     1:
11959    MK: x
11960    
11961    /(?=(*:x))((*:y)q|)/K+
11962        abc
11963     0:
11964     0+ abc
11965     1:
11966    MK: x
11967    
11968    /(?=(*:x))(?:(*:y)q|)/K+
11969        abc
11970     0:
11971     0+ abc
11972    MK: x
11973    
11974    /(?=(*:x))(?>(*:y)q|)/K+
11975        abc
11976     0:
11977     0+ abc
11978    MK: x
11979    
11980    /(?=a(*:x))(?!a(*:y)c)/K+
11981        ab
11982     0:
11983     0+ ab
11984    MK: x
11985    
11986    /(?=a(*:x))(?=a(*:y)c|)/K+
11987        ab
11988     0:
11989     0+ ab
11990    MK: x
11991    
11992    /(..)\1/
11993        ab\P
11994    Partial match: ab
11995        aba\P
11996    Partial match: aba
11997        abab\P
11998     0: abab
11999     1: ab
12000    
12001    /(..)\1/i
12002        ab\P
12003    Partial match: ab
12004        abA\P
12005    Partial match: abA
12006        aBAb\P
12007     0: aBAb
12008     1: aB
12009    
12010    /(..)\1{2,}/
12011        ab\P
12012    Partial match: ab
12013        aba\P
12014    Partial match: aba
12015        abab\P
12016    Partial match: abab
12017        ababa\P
12018    Partial match: ababa
12019        ababab\P
12020     0: ababab
12021     1: ab
12022        ababab\P\P
12023    Partial match: ababab
12024        abababa\P
12025     0: ababab
12026     1: ab
12027        abababa\P\P
12028    Partial match: abababa
12029    
12030    /(..)\1{2,}/i
12031        ab\P
12032    Partial match: ab
12033        aBa\P
12034    Partial match: aBa
12035        aBAb\P
12036    Partial match: aBAb
12037        AbaBA\P
12038    Partial match: AbaBA
12039        abABAb\P
12040     0: abABAb
12041     1: ab
12042        aBAbaB\P\P
12043    Partial match: aBAbaB
12044        abABabA\P
12045     0: abABab
12046     1: ab
12047        abaBABa\P\P
12048    Partial match: abaBABa
12049    
12050    /(..)\1{2,}?x/i
12051        ab\P
12052    Partial match: ab
12053        abA\P
12054    Partial match: abA
12055        aBAb\P
12056    Partial match: aBAb
12057        abaBA\P
12058    Partial match: abaBA
12059        abAbaB\P
12060    Partial match: abAbaB
12061        abaBabA\P
12062    Partial match: abaBabA
12063        abAbABaBx\P
12064     0: abAbABaBx
12065     1: ab
12066    
12067    /^(..)\1/
12068        aba\P
12069    Partial match: aba
12070    
12071    /^(..)\1{2,3}x/
12072        aba\P
12073    Partial match: aba
12074        ababa\P
12075    Partial match: ababa
12076        ababa\P\P
12077    Partial match: ababa
12078        abababx
12079     0: abababx
12080     1: ab
12081        ababababx
12082     0: ababababx
12083     1: ab
12084    
12085    /^(..)\1{2,3}?x/
12086        aba\P
12087    Partial match: aba
12088        ababa\P
12089    Partial match: ababa
12090        ababa\P\P
12091    Partial match: ababa
12092        abababx
12093     0: abababx
12094     1: ab
12095        ababababx
12096     0: ababababx
12097     1: ab
12098    
12099    /^(..)(\1{2,3})ab/
12100        abababab
12101     0: abababab
12102     1: ab
12103     2: abab
12104    
12105    /^\R/
12106        \r\P
12107     0: \x0d
12108        \r\P\P
12109    Partial match: \x0d
12110    
12111    /^\R{2,3}x/
12112        \r\P
12113    Partial match: \x0d
12114        \r\P\P
12115    Partial match: \x0d
12116        \r\r\P
12117    Partial match: \x0d\x0d
12118        \r\r\P\P
12119    Partial match: \x0d\x0d
12120        \r\r\r\P
12121    Partial match: \x0d\x0d\x0d
12122        \r\r\r\P\P
12123    Partial match: \x0d\x0d\x0d
12124        \r\rx
12125     0: \x0d\x0dx
12126        \r\r\rx
12127     0: \x0d\x0d\x0dx
12128    
12129    /^\R{2,3}?x/
12130        \r\P
12131    Partial match: \x0d
12132        \r\P\P
12133    Partial match: \x0d
12134        \r\r\P
12135    Partial match: \x0d\x0d
12136        \r\r\P\P
12137    Partial match: \x0d\x0d
12138        \r\r\r\P
12139    Partial match: \x0d\x0d\x0d
12140        \r\r\r\P\P
12141    Partial match: \x0d\x0d\x0d
12142        \r\rx
12143     0: \x0d\x0dx
12144        \r\r\rx
12145     0: \x0d\x0d\x0dx
12146    
12147    /^\R?x/
12148        \r\P
12149    Partial match: \x0d
12150        \r\P\P
12151    Partial match: \x0d
12152        x
12153     0: x
12154        \rx
12155     0: \x0dx
12156    
12157    /^\R+x/
12158        \r\P
12159    Partial match: \x0d
12160        \r\P\P
12161    Partial match: \x0d
12162        \r\n\P
12163    Partial match: \x0d\x0a
12164        \r\n\P\P
12165    Partial match: \x0d\x0a
12166        \rx
12167     0: \x0dx
12168    
12169    /^a$/<CRLF>
12170        a\r\P
12171    Partial match: a\x0d
12172        a\r\P\P
12173    Partial match: a\x0d
12174    
12175    /^a$/m<CRLF>
12176        a\r\P
12177    Partial match: a\x0d
12178        a\r\P\P
12179    Partial match: a\x0d
12180    
12181    /^(a$|a\r)/<CRLF>
12182        a\r\P
12183     0: a\x0d
12184     1: a\x0d
12185        a\r\P\P
12186    Partial match: a\x0d
12187    
12188    /^(a$|a\r)/m<CRLF>
12189        a\r\P
12190     0: a\x0d
12191     1: a\x0d
12192        a\r\P\P
12193    Partial match: a\x0d
12194    
12195    /./<CRLF>
12196        \r\P
12197     0: \x0d
12198        \r\P\P
12199    Partial match: \x0d
12200    
12201    /.{2,3}/<CRLF>
12202        \r\P
12203    Partial match: \x0d
12204        \r\P\P
12205    Partial match: \x0d
12206        \r\r\P
12207     0: \x0d\x0d
12208        \r\r\P\P
12209    Partial match: \x0d\x0d
12210        \r\r\r\P
12211     0: \x0d\x0d\x0d
12212        \r\r\r\P\P
12213    Partial match: \x0d\x0d\x0d
12214    
12215    /.{2,3}?/<CRLF>
12216        \r\P
12217    Partial match: \x0d
12218        \r\P\P
12219    Partial match: \x0d
12220        \r\r\P
12221     0: \x0d\x0d
12222        \r\r\P\P
12223    Partial match: \x0d\x0d
12224        \r\r\r\P
12225     0: \x0d\x0d
12226        \r\r\r\P\P
12227     0: \x0d\x0d
12228    
12229    "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
12230        ABCDGHI\O03
12231    Matched, but too many substrings
12232     0: ABCD
12233    
12234    /-- These are all run as real matches in test 1; here we are just checking the
12235    settings of the anchored and startline bits. --/
12236    
12237    /(?>.*?a)(?<=ba)/I
12238    Capturing subpattern count = 0
12239    No options
12240    No first char
12241    Need char = 'a'
12242    Max lookbehind = 2
12243    
12244    /(?:.*?a)(?<=ba)/I
12245    Capturing subpattern count = 0
12246    No options
12247    First char at start or follows newline
12248    Need char = 'a'
12249    Max lookbehind = 2
12250    
12251    /.*?a(*PRUNE)b/I
12252    Capturing subpattern count = 0
12253    No options
12254    No first char
12255    Need char = 'b'
12256    
12257    /.*?a(*PRUNE)b/sI
12258    Capturing subpattern count = 0
12259    Options: dotall
12260    No first char
12261    Need char = 'b'
12262    
12263    /^a(*PRUNE)b/sI
12264    Capturing subpattern count = 0
12265    Options: anchored dotall
12266    No first char
12267    No need char
12268    
12269    /.*?a(*SKIP)b/I
12270    Capturing subpattern count = 0
12271    No options
12272    No first char
12273    Need char = 'b'
12274    
12275    /(?>.*?a)b/sI
12276    Capturing subpattern count = 0
12277    Options: dotall
12278    No first char
12279    Need char = 'b'
12280    
12281    /(?>.*?a)b/I
12282    Capturing subpattern count = 0
12283    No options
12284    No first char
12285    Need char = 'b'
12286    
12287    /(?>^a)b/sI
12288    Capturing subpattern count = 0
12289    Options: anchored dotall
12290    No first char
12291    No need char
12292    
12293    /(?>.*?)(?<=(abcd)|(wxyz))/I
12294    Capturing subpattern count = 2
12295    No options
12296    No first char
12297    No need char
12298    Max lookbehind = 4
12299    
12300    /(?>.*)(?<=(abcd)|(wxyz))/I
12301    Capturing subpattern count = 2
12302    No options
12303    No first char
12304    No need char
12305    Max lookbehind = 4
12306    
12307    "(?>.*)foo"I
12308    Capturing subpattern count = 0
12309    No options
12310    No first char
12311    Need char = 'o'
12312    
12313    "(?>.*?)foo"I
12314    Capturing subpattern count = 0
12315    No options
12316    No first char
12317    Need char = 'o'
12318    
12319    /(?>^abc)/mI
12320    Capturing subpattern count = 0
12321    Options: multiline
12322    First char at start or follows newline
12323    Need char = 'c'
12324    
12325    /(?>.*abc)/mI
12326    Capturing subpattern count = 0
12327    Options: multiline
12328    No first char
12329    Need char = 'c'
12330    
12331    /(?:.*abc)/mI
12332    Capturing subpattern count = 0
12333    Options: multiline
12334    First char at start or follows newline
12335    Need char = 'c'
12336    
12337    /-- Check PCRE_STUDY_EXTRA_NEEDED --/
12338    
12339    /.?/S-I
12340    Capturing subpattern count = 0
12341    No options
12342    No first char
12343    No need char
12344    Study returned NULL
12345    
12346    /.?/S!I
12347    Capturing subpattern count = 0
12348    No options
12349    No first char
12350    No need char
12351    Subject length lower bound = -1
12352    No set of starting bytes
12353    
12354    /(?:(a)+(?C1)bb|aa(?C2)b)/
12355        aab\C+
12356    Callout 1: last capture = 1
12357     0: <unset>
12358     1: a
12359    --->aab
12360        ^ ^     b
12361    Callout 1: last capture = 1
12362     0: <unset>
12363     1: a
12364    --->aab
12365        ^^      b
12366    Callout 2: last capture = -1
12367     0: <unset>
12368    --->aab
12369        ^ ^     b
12370     0: aab
12371    
12372    /(?:(a)++(?C1)bb|aa(?C2)b)/
12373        aab\C+
12374    Callout 1: last capture = 1
12375     0: <unset>
12376     1: a
12377    --->aab
12378        ^ ^     b
12379    Callout 2: last capture = -1
12380     0: <unset>
12381    --->aab
12382        ^ ^     b
12383     0: aab
12384    
12385    /(?:(?>(a))(?C1)bb|aa(?C2)b)/
12386        aab\C+
12387    Callout 1: last capture = 1
12388     0: <unset>
12389     1: a
12390    --->aab
12391        ^^      b
12392    Callout 2: last capture = -1
12393     0: <unset>
12394    --->aab
12395        ^ ^     b
12396     0: aab
12397    
12398    /(?:(?1)(?C1)x|ab(?C2))((a)){0}/
12399        aab\C+
12400    Callout 1: last capture = -1
12401     0: <unset>
12402    --->aab
12403        ^^      x
12404    Callout 1: last capture = -1
12405     0: <unset>
12406    --->aab
12407         ^^     x
12408    Callout 2: last capture = -1
12409     0: <unset>
12410    --->aab
12411         ^ ^    )
12412     0: ab
12413    
12414    /(?1)(?C1)((a)(?C2)){0}/
12415        aab\C+
12416    Callout 2: last capture = 2
12417     0: <unset>
12418     1: <unset>
12419     2: a
12420    --->aab
12421        ^^      )
12422    Callout 1: last capture = -1
12423     0: <unset>
12424    --->aab
12425        ^^      ((a)(?C2)){0}
12426     0: a
12427    
12428    /(?:(a)+(?C1)bb|aa(?C2)b)++/
12429        aab\C+
12430    Callout 1: last capture = 1
12431     0: <unset>
12432     1: a
12433    --->aab
12434        ^ ^     b
12435    Callout 1: last capture = 1
12436     0: <unset>
12437     1: a
12438    --->aab
12439        ^^      b
12440    Callout 2: last capture = -1
12441     0: <unset>
12442    --->aab
12443        ^ ^     b
12444     0: aab
12445        aab\C+\O2
12446    Callout 1: last capture = 1
12447     0: <unset>
12448    --->aab
12449        ^ ^     b
12450    Callout 1: last capture = 1
12451     0: <unset>
12452    --->aab
12453        ^^      b
12454    Callout 2: last capture = -1
12455     0: <unset>
12456    --->aab
12457        ^ ^     b
12458     0: aab
12459    
12460    /(ab)x|ab/
12461        ab\O3
12462     0: ab
12463        ab\O2
12464     0: ab
12465    
12466    /(ab)/
12467        ab\O3
12468    Matched, but too many substrings
12469     0: ab
12470        ab\O2
12471    Matched, but too many substrings
12472     0: ab
12473    
12474    /(?<=123)(*MARK:xx)abc/K
12475        xxxx123a\P\P
12476    Partial match at offset 7, mark=xx: 123a
12477        xxxx123a\P
12478    Partial match at offset 7, mark=xx: 123a
12479    
12480    /123\Kabc/
12481        xxxx123a\P\P
12482    Partial match: 123a
12483        xxxx123a\P
12484    Partial match: 123a
12485    
12486    /^(?(?=a)aa|bb)/C
12487        bb
12488    --->bb
12489     +0 ^      ^
12490     +1 ^      (?(?=a)aa|bb)
12491     +3 ^      (?=a)
12492     +6 ^      a
12493    +11 ^      b
12494    +12 ^^     b
12495    +13 ^ ^    )
12496    +14 ^ ^
12497     0: bb
12498    
12499    /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
12500        bb
12501    --->bb
12502      1 ^      ^
12503      2 ^      (?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))
12504     99 ^      (?=(?C3)a(?C4))
12505      3 ^      a
12506      8 ^      b
12507      9 ^^     b
12508     10 ^ ^    )
12509     11 ^ ^
12510     0: bb
12511    
12512    /-- Perl seems to have a bug with this one --/
12513    
12514    /aaaaa(*COMMIT)(*PRUNE)b|a+c/
12515        aaaaaac
12516     0: aaaac
12517