/[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 621 by ph10, Mon Jul 18 10:14:09 2011 UTC revision 1361 by ph10, Fri Sep 6 17:47:32 2013 UTC
# Line 3  Line 3 
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 a possible 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    May match empty string
14  No options  No options
15  No first char  No first char
16  No need char  No need char
# Line 377  No need char Line 377  No need char
377   2: <unset>   2: <unset>
378   3: def   3: def
379    
 /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  
   
380  /)/  /)/
381  Failed: unmatched parentheses at offset 0  Failed: unmatched parentheses at offset 0
382    
# Line 504  Need char = '=' Line 449  Need char = '='
449    
450  /(?<!bar|cattle)foo/I  /(?<!bar|cattle)foo/I
451  Capturing subpattern count = 0  Capturing subpattern count = 0
452    Max lookbehind = 6
453  No options  No options
454  First char = 'f'  First char = 'f'
455  Need char = 'o'  Need char = 'o'
# Line 553  No need char Line 499  No need char
499    
500  /(?s).*/I  /(?s).*/I
501  Capturing subpattern count = 0  Capturing subpattern count = 0
502    May match empty string
503  Options: anchored dotall  Options: anchored dotall
504  No first char  No first char
505  No need char  No need char
# Line 686  No match Line 633  No match
633    
634  /\Aabc/Im  /\Aabc/Im
635  Capturing subpattern count = 0  Capturing subpattern count = 0
636    Max lookbehind = 1
637  Options: anchored multiline  Options: anchored multiline
638  No first char  No first char
639  No need char  No need char
# Line 711  No need char Line 659  No need char
659    
660  /(?<=foo)[ab]/IS  /(?<=foo)[ab]/IS
661  Capturing subpattern count = 0  Capturing subpattern count = 0
662    Max lookbehind = 3
663  No options  No options
664  No first char  No first char
665  No need char  No need char
# Line 719  Starting byte set: a b Line 668  Starting byte set: a b
668    
669  /(?<!foo)(alpha|omega)/IS  /(?<!foo)(alpha|omega)/IS
670  Capturing subpattern count = 1  Capturing subpattern count = 1
671    Max lookbehind = 3
672  No options  No options
673  No first char  No first char
674  Need char = 'a'  Need char = 'a'
# Line 735  Starting byte set: a b Line 685  Starting byte set: a b
685    
686  /(?<=foo\n)^bar/Im  /(?<=foo\n)^bar/Im
687  Capturing subpattern count = 0  Capturing subpattern count = 0
688    Max lookbehind = 4
689  Contains explicit CR or LF match  Contains explicit CR or LF match
690  Options: multiline  Options: multiline
691  No first char  No first char
# Line 752  No match Line 703  No match
703    
704  /^(?<=foo\n)bar/Im  /^(?<=foo\n)bar/Im
705  Capturing subpattern count = 0  Capturing subpattern count = 0
706    Max lookbehind = 4
707  Contains explicit CR or LF match  Contains explicit CR or LF match
708  Options: multiline  Options: multiline
709  First char at start or follows newline  First char at start or follows newline
# Line 794  Failed: lookbehind assertion is not fixe Line 746  Failed: lookbehind assertion is not fixe
746    
747  /(?<=bullock|donkey)-cart/I  /(?<=bullock|donkey)-cart/I
748  Capturing subpattern count = 0  Capturing subpattern count = 0
749    Max lookbehind = 7
750  No options  No options
751  First char = '-'  First char = '-'
752  Need char = 't'  Need char = 't'
# Line 810  No match Line 763  No match
763    
764  /(?<=ab(?i)x|y|z)/I  /(?<=ab(?i)x|y|z)/I
765  Capturing subpattern count = 0  Capturing subpattern count = 0
766    Max lookbehind = 3
767    May match empty string
768  No options  No options
769  No first char  No first char
770  No need char  No need char
771    
772  /(?>.*)(?<=(abcd)|(xyz))/I  /(?>.*)(?<=(abcd)|(xyz))/I
773  Capturing subpattern count = 2  Capturing subpattern count = 2
774    Max lookbehind = 4
775    May match empty string
776  No options  No options
777  First char at start or follows newline  No first char
778  No need char  No need char
779      alphabetabcd      alphabetabcd
780   0: alphabetabcd   0: alphabetabcd
# Line 829  No need char Line 786  No need char
786    
787  /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I  /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
788  Capturing subpattern count = 0  Capturing subpattern count = 0
789    Max lookbehind = 4
790  No options  No options
791  First char = 'Z'  First char = 'Z'
792  Need char = 'Z'  Need char = 'Z'
# Line 857  No match Line 815  No match
815    
816  /(?<!(foo)a)bar/I  /(?<!(foo)a)bar/I
817  Capturing subpattern count = 1  Capturing subpattern count = 1
818    Max lookbehind = 4
819  No options  No options
820  First char = 'b'  First char = 'b'
821  Need char = 'r'  Need char = 'r'
# Line 869  No match Line 828  No match
828      fooabar      fooabar
829  No match  No match
830    
 /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  
   
831  /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
832  Capturing subpattern count = 0  Capturing subpattern count = 0
833  No options  No options
# Line 1031  Failed: numbers out of order in {} quant Line 974  Failed: numbers out of order in {} quant
974  /abc/\  /abc/\
975  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
976    
 /abc/\P  
 Failed: POSIX code 9: bad escape sequence at offset 4  
   
977  /abc/\i  /abc/\i
978  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
979    
# Line 1149  No first char Line 1089  No first char
1089  No need char  No need char
1090      abc\00def\L\C0      abc\00def\L\C0
1091   0: abc\x00def   0: abc\x00def
1092   0C abc (7)   0C abc\x00def (7)
1093   0L abc   0L abc
1094    
1095  /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 1261  No need char Line 1201  No need char
1201    
1202  /\Biss\B/I+  /\Biss\B/I+
1203  Capturing subpattern count = 0  Capturing subpattern count = 0
1204    Max lookbehind = 1
1205  No options  No options
1206  First char = 'i'  First char = 'i'
1207  Need char = 's'  Need char = 's'
# Line 1268  Need char = 's' Line 1209  Need char = 's'
1209   0: iss   0: iss
1210   0+ issippi   0+ issippi
1211    
 /\Biss\B/I+P  
     Mississippi  
  0: iss  
  0+ issippi  
   
1212  /iss/IG+  /iss/IG+
1213  Capturing subpattern count = 0  Capturing subpattern count = 0
1214  No options  No options
# Line 1286  Need char = 's' Line 1222  Need char = 's'
1222    
1223  /\Biss\B/IG+  /\Biss\B/IG+
1224  Capturing subpattern count = 0  Capturing subpattern count = 0
1225    Max lookbehind = 1
1226  No options  No options
1227  First char = 'i'  First char = 'i'
1228  Need char = 's'  Need char = 's'
# Line 1295  Need char = 's' Line 1232  Need char = 's'
1232    
1233  /\Biss\B/Ig+  /\Biss\B/Ig+
1234  Capturing subpattern count = 0  Capturing subpattern count = 0
1235    Max lookbehind = 1
1236  No options  No options
1237  First char = 'i'  First char = 'i'
1238  Need char = 's'  Need char = 's'
# Line 1310  No match Line 1248  No match
1248    
1249  /(?<=[Ms])iss/Ig+  /(?<=[Ms])iss/Ig+
1250  Capturing subpattern count = 0  Capturing subpattern count = 0
1251    Max lookbehind = 1
1252  No options  No options
1253  First char = 'i'  First char = 'i'
1254  Need char = 's'  Need char = 's'
# Line 1321  Need char = 's' Line 1260  Need char = 's'
1260    
1261  /(?<=[Ms])iss/IG+  /(?<=[Ms])iss/IG+
1262  Capturing subpattern count = 0  Capturing subpattern count = 0
1263    Max lookbehind = 1
1264  No options  No options
1265  First char = 'i'  First char = 'i'
1266  Need char = 's'  Need char = 's'
# Line 1402  Capturing subpattern count = 0 Line 1342  Capturing subpattern count = 0
1342  Contains explicit CR or LF match  Contains explicit CR or LF match
1343  Options: multiline  Options: multiline
1344  First char at start or follows newline  First char at start or follows newline
1345  Need char = 10  Need char = \x0a
1346      ab\nab\ncd      ab\nab\ncd
1347   0: ab\x0a   0: ab\x0a
1348   0+ ab\x0acd   0+ ab\x0acd
# Line 1441  Need char = 'c' Line 1381  Need char = 'c'
1381    
1382  /a*/I  /a*/I
1383  Capturing subpattern count = 0  Capturing subpattern count = 0
1384    May match empty string
1385  No options  No options
1386  No first char  No first char
1387  No need char  No need char
# Line 1459  Need char = 'a' Line 1400  Need char = 'a'
1400    
1401  /a{0,3}/I  /a{0,3}/I
1402  Capturing subpattern count = 0  Capturing subpattern count = 0
1403    May match empty string
1404  No options  No options
1405  No first char  No first char
1406  No need char  No need char
# Line 1501  Need char = 'r' Line 1443  Need char = 'r'
1443    
1444  /...(?<=abc)/I  /...(?<=abc)/I
1445  Capturing subpattern count = 0  Capturing subpattern count = 0
1446    Max lookbehind = 3
1447  No options  No options
1448  No first char  No first char
1449  No need char  No need char
# Line 1657  Need char = 'e' Line 1600  Need char = 'e'
1600    
1601  /a?b?/I  /a?b?/I
1602  Capturing subpattern count = 0  Capturing subpattern count = 0
1603    May match empty string
1604  No options  No options
1605  No first char  No first char
1606  No need char  No need char
# Line 1675  No match Line 1619  No match
1619    
1620  /|-/I  /|-/I
1621  Capturing subpattern count = 0  Capturing subpattern count = 0
1622    May match empty string
1623  No options  No options
1624  No first char  No first char
1625  No need char  No need char
# Line 1689  No need char Line 1634  No need char
1634      \Nabc      \Nabc
1635  No match  No match
1636    
 /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  
   
1637  /^.?abcd/IS  /^.?abcd/IS
1638  Capturing subpattern count = 0  Capturing subpattern count = 0
1639  Options: anchored  Options: anchored
# Line 2715  Need char = '-' Line 2633  Need char = '-'
2633          End          End
2634  ------------------------------------------------------------------  ------------------------------------------------------------------
2635  Capturing subpattern count = 0  Capturing subpattern count = 0
2636    May match empty string
2637  Options: extended  Options: extended
2638  No first char  No first char
2639  No need char  No need char
# Line 2857  Need char = '0' Line 2776  Need char = '0'
2776          End          End
2777  ------------------------------------------------------------------  ------------------------------------------------------------------
2778  Capturing subpattern count = 0  Capturing subpattern count = 0
2779    May match empty string
2780  No options  No options
2781  No first char  No first char
2782  No need char  No need char
# Line 2956  No match Line 2876  No match
2876          End          End
2877  ------------------------------------------------------------------  ------------------------------------------------------------------
2878  Capturing subpattern count = 0  Capturing subpattern count = 0
2879    May match empty string
2880  No options  No options
2881  No first char  No first char
2882  No need char  No need char
# Line 2998  No need char Line 2919  No need char
2919          End          End
2920  ------------------------------------------------------------------  ------------------------------------------------------------------
2921  Capturing subpattern count = 1  Capturing subpattern count = 1
2922    May match empty string
2923  No options  No options
2924  No first char  No first char
2925  No need char  No need char
2926    
2927  /^(\w++|\s++)*$/I  /^(\w++|\s++)*$/I
2928  Capturing subpattern count = 1  Capturing subpattern count = 1
2929    May match empty string
2930  Options: anchored  Options: anchored
2931  No first char  No first char
2932  No need char  No need char
# Line 3308  No match Line 3231  No match
3231          End          End
3232  ------------------------------------------------------------------  ------------------------------------------------------------------
3233  Capturing subpattern count = 0  Capturing subpattern count = 0
3234    Max lookbehind = 1
3235  No options  No options
3236  First char = '8'  First char = '8'
3237  Need char = 'X'  Need char = 'X'
# Line 3321  Need char = 'X' Line 3245  Need char = 'X'
3245          End          End
3246  ------------------------------------------------------------------  ------------------------------------------------------------------
3247  Capturing subpattern count = 0  Capturing subpattern count = 0
3248    Max lookbehind = 1
3249  No options  No options
3250  First char = '$'  First char = '$'
3251  Need char = 'X'  Need char = 'X'
# Line 3377  Need char = 'b' Line 3302  Need char = 'b'
3302    
3303  /(?=a).*/I  /(?=a).*/I
3304  Capturing subpattern count = 0  Capturing subpattern count = 0
3305    May match empty string
3306  No options  No options
3307  First char = 'a'  First char = 'a'
3308  No need char  No need char
# Line 3395  Need char = 'z' (caseless) Line 3321  Need char = 'z' (caseless)
3321    
3322  /(?=a)(?=b)/I  /(?=a)(?=b)/I
3323  Capturing subpattern count = 0  Capturing subpattern count = 0
3324    May match empty string
3325  No options  No options
3326  First char = 'a'  First char = 'a'
3327  No need char  No need char
# Line 3461  Need char = 'a' Line 3388  Need char = 'a'
3388    
3389  /(a)*/I  /(a)*/I
3390  Capturing subpattern count = 1  Capturing subpattern count = 1
3391    May match empty string
3392  No options  No options
3393  No first char  No first char
3394  No need char  No need char
# Line 3689  No match Line 3617  No match
3617    
3618  /(?C0)(abc(?C1))*/I  /(?C0)(abc(?C1))*/I
3619  Capturing subpattern count = 1  Capturing subpattern count = 1
3620    May match empty string
3621  No options  No options
3622  No first char  No first char
3623  No need char  No need char
# Line 3722  No need char Line 3651  No need char
3651    
3652  /(\d{3}(?C))*/I  /(\d{3}(?C))*/I
3653  Capturing subpattern count = 1  Capturing subpattern count = 1
3654    May match empty string
3655  No options  No options
3656  No first char  No first char
3657  No need char  No need char
# Line 3836  Callout 2: last capture = -1 Line 3766  Callout 2: last capture = -1
3766    
3767  /(?<=(abc)(?C))xyz/I  /(?<=(abc)(?C))xyz/I
3768  Capturing subpattern count = 1  Capturing subpattern count = 1
3769    Max lookbehind = 3
3770  No options  No options
3771  First char = 'x'  First char = 'x'
3772  Need char = 'z'  Need char = 'z'
# Line 3967  Failed: recursive call could loop indefi Line 3898  Failed: recursive call could loop indefi
3898    
3899  /^([^()]|\((?1)*\))*$/I  /^([^()]|\((?1)*\))*$/I
3900  Capturing subpattern count = 1  Capturing subpattern count = 1
3901    May match empty string
3902  Options: anchored  Options: anchored
3903  No first char  No first char
3904  No need char  No need char
# Line 4246  Named capturing subpatterns: Line 4178  Named capturing subpatterns:
4178    one     1    one     1
4179    three   3    three   3
4180    two     2    two     2
4181    May match empty string
4182  Options: anchored caseless  Options: anchored caseless
4183  No first char  No first char
4184  No need char  No need char
# Line 4345  Need char = 'z' Line 4278  Need char = 'z'
4278    
4279  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
4280  Capturing subpattern count = 31  Capturing subpattern count = 31
4281    May match empty string
4282  Options: anchored dotall  Options: anchored dotall
4283  No first char  No first char
4284  No need char  No need char
# Line 4352  No need char Line 4286  No need char
4286  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
4287  Capturing subpattern count = 31  Capturing subpattern count = 31
4288  Max back reference = 31  Max back reference = 31
4289    May match empty string
4290  Options: dotall  Options: dotall
4291  No first char  No first char
4292  No need char  No need char
# Line 4359  No need char Line 4294  No need char
4294  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
4295  Capturing subpattern count = 32  Capturing subpattern count = 32
4296  Max back reference = 32  Max back reference = 32
4297    May match empty string
4298  Options: dotall  Options: dotall
4299  No first char  No first char
4300  No need char  No need char
# Line 4430  No first char Line 4366  No first char
4366  Need char = 'z'  Need char = 'z'
4367    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
4368  Minimum match() limit = 8  Minimum match() limit = 8
4369  Minimum match() recursion limit = 7  Minimum match() recursion limit = 6
4370   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
4371   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4372    aaaaaaaaaaaaaz\M    aaaaaaaaaaaaaz\M
4373  Minimum match() limit = 32768  Minimum match() limit = 32768
4374  Minimum match() recursion limit = 43  Minimum match() recursion limit = 29
4375  No match  No match
4376    
4377  /(aaa(?C1)bbb|ab)/I  /(aaa(?C1)bbb|ab)/I
# Line 4510  Capturing subpattern count = 2 Line 4446  Capturing subpattern count = 2
4446  Named capturing subpatterns:  Named capturing subpatterns:
4447    Tes    1    Tes    1
4448    Test   2    Test   2
4449    May match empty string
4450  No options  No options
4451  No first char  No first char
4452  No need char  No need char
# Line 4528  Capturing subpattern count = 2 Line 4465  Capturing subpattern count = 2
4465  Named capturing subpatterns:  Named capturing subpatterns:
4466    Tes    2    Tes    2
4467    Test   1    Test   1
4468    May match empty string
4469  No options  No options
4470  No first char  No first char
4471  No need char  No need char
# Line 4605  Need char = ']' Line 4543  Need char = ']'
4543          End          End
4544  ------------------------------------------------------------------  ------------------------------------------------------------------
4545  Capturing subpattern count = 2  Capturing subpattern count = 2
4546    May match empty string
4547  No options  No options
4548  No first char  No first char
4549  No need char  No need char
# Line 4625  No need char Line 4564  No need char
4564          End          End
4565  ------------------------------------------------------------------  ------------------------------------------------------------------
4566  Capturing subpattern count = 2  Capturing subpattern count = 2
4567    May match empty string
4568  No options  No options
4569  No first char  No first char
4570  No need char  No need char
# Line 4656  No need char Line 4596  No need char
4596          End          End
4597  ------------------------------------------------------------------  ------------------------------------------------------------------
4598  Capturing subpattern count = 2  Capturing subpattern count = 2
4599    May match empty string
4600  No options  No options
4601  No first char  No first char
4602  No need char  No need char
# Line 5483  Need char = '3' Line 5424  Need char = '3'
5424    
5425  /\b.*/I  /\b.*/I
5426  Capturing subpattern count = 0  Capturing subpattern count = 0
5427    Max lookbehind = 1
5428    May match empty string
5429  No options  No options
5430  No first char  No first char
5431  No need char  No need char
# Line 5491  No need char Line 5434  No need char
5434    
5435  /\b.*/Is  /\b.*/Is
5436  Capturing subpattern count = 0  Capturing subpattern count = 0
5437    Max lookbehind = 1
5438    May match empty string
5439  Options: dotall  Options: dotall
5440  No first char  No first char
5441  No need char  No need char
# Line 5499  No need char Line 5444  No need char
5444    
5445  /(?!.bcd).*/I  /(?!.bcd).*/I
5446  Capturing subpattern count = 0  Capturing subpattern count = 0
5447    May match empty string
5448  No options  No options
5449  No first char  No first char
5450  No need char  No need char
# Line 5802  Max back reference = 1 Line 5748  Max back reference = 1
5748  Options: multiline dotall  Options: multiline dotall
5749  First char = '<'  First char = '<'
5750  Need char = '>'  Need char = '>'
5751      <!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>
5752   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>
5753   1: seite   1: seite
5754   2: \x0a   2: \x0a
# Line 5851  No match Line 5797  No match
5797      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
5798  No match  No match
5799    
 /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  
   
5800  /(?i)(?-i)AbCd/I  /(?i)(?-i)AbCd/I
5801  Capturing subpattern count = 0  Capturing subpattern count = 0
5802  No options  No options
# Line 6105  Matched, but too many substrings Line 6033  Matched, but too many substrings
6033    
6034  /[^()]*(?:\((?R)\)[^()]*)*/I  /[^()]*(?:\((?R)\)[^()]*)*/I
6035  Capturing subpattern count = 0  Capturing subpattern count = 0
6036    May match empty string
6037  No options  No options
6038  No first char  No first char
6039  No need char  No need char
# Line 6117  No need char Line 6046  No need char
6046    
6047  /[^()]*(?:\((?>(?R))\)[^()]*)*/I  /[^()]*(?:\((?>(?R))\)[^()]*)*/I
6048  Capturing subpattern count = 0  Capturing subpattern count = 0
6049    May match empty string
6050  No options  No options
6051  No first char  No first char
6052  No need char  No need char
# Line 6127  No need char Line 6057  No need char
6057    
6058  /[^()]*(?:\((?R)\))*[^()]*/I  /[^()]*(?:\((?R)\))*[^()]*/I
6059  Capturing subpattern count = 0  Capturing subpattern count = 0
6060    May match empty string
6061  No options  No options
6062  No first char  No first char
6063  No need char  No need char
# Line 6137  No need char Line 6068  No need char
6068    
6069  /(?:\((?R)\))*[^()]*/I  /(?:\((?R)\))*[^()]*/I
6070  Capturing subpattern count = 0  Capturing subpattern count = 0
6071    May match empty string
6072  No options  No options
6073  No first char  No first char
6074  No need char  No need char
# Line 6149  No need char Line 6081  No need char
6081    
6082  /(?:\((?R)\))|[^()]*/I  /(?:\((?R)\))|[^()]*/I
6083  Capturing subpattern count = 0  Capturing subpattern count = 0
6084    May match empty string
6085  No options  No options
6086  No first char  No first char
6087  No need char  No need char
# Line 6161  No need char Line 6094  No need char
6094      ((this))      ((this))
6095   0: ((this))   0: ((this))
6096    
 /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  
   
6097  /\x{0000ff}/I  /\x{0000ff}/I
6098  Capturing subpattern count = 0  Capturing subpattern count = 0
6099  No options  No options
6100  First char = 255  First char = \xff
6101  No need char  No need char
6102    
6103  /^((?P<A>a1)|(?P<A>a2)b)/I  /^((?P<A>a1)|(?P<A>a2)b)/I
# Line 6209  no parentheses with name "Z" Line 6131  no parentheses with name "Z"
6131   2: a1   2: a1
6132  copy substring Z failed -7  copy substring Z failed -7
6133    C a1 (2) A    C a1 (2) A
6134    
6135    /(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/IJ
6136    Capturing subpattern count = 3
6137    Named capturing subpatterns:
6138      a   1
6139      a   3
6140      b   2
6141    May match empty string
6142    Options: dupnames
6143    No first char
6144    No need char
6145    
6146  /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
6147  Capturing subpattern count = 2  Capturing subpattern count = 2
# Line 6285  no parentheses with name "Z" Line 6218  no parentheses with name "Z"
6218   0: a1   0: a1
6219   1: a1   1: a1
6220   2: a1   2: a1
6221  copy substring Z failed -7  get substring Z failed -7
6222    G a1 (2) A    G a1 (2) A
6223    
6224  /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
# Line 6317  No need char Line 6250  No need char
6250    G a (1) A    G a (1) A
6251      cd\GA      cd\GA
6252   0: cd   0: cd
6253  copy substring A failed -7  get substring A failed -7
6254    
6255  /^(?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
6256  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 6485  No need char Line 6418  No need char
6418   9:   9:
6419  10: Y  10: Y
6420    
 /\777/I  
 Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3  
   
6421  /\s*,\s*/IS  /\s*,\s*/IS
6422  Capturing subpattern count = 0  Capturing subpattern count = 0
6423  No options  No options
# Line 6620  Unknown newline type at: <bad> Line 6550  Unknown newline type at: <bad>
6550    
6551  /.*/I<lf>  /.*/I<lf>
6552  Capturing subpattern count = 0  Capturing subpattern count = 0
6553    May match empty string
6554  Options:  Options:
6555  Forced newline sequence: LF  Forced newline sequence: LF
6556  First char at start or follows newline  First char at start or follows newline
# Line 6661  Need char = 'f' Line 6592  Need char = 'f'
6592    
6593  +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I  +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
6594  Capturing subpattern count = 1  Capturing subpattern count = 1
6595    May match empty string
6596  No options  No options
6597  No first char  No first char
6598  No need char  No need char
6599     /* this is a C style comment */\M     /* this is a C style comment */\M
6600  Minimum match() limit = 120  Minimum match() limit = 120
6601  Minimum match() recursion limit = 35  Minimum match() recursion limit = 6
6602   0: /* this is a C style comment */   0: /* this is a C style comment */
6603   1: /* this is a C style comment */   1: /* this is a C style comment */
6604    
# Line 7548  Matched, but too many substrings Line 7480  Matched, but too many substrings
7480  /[^a]+a/BZi  /[^a]+a/BZi
7481  ------------------------------------------------------------------  ------------------------------------------------------------------
7482          Bra          Bra
7483       /i [^A]++       /i [^a]++
7484       /i a       /i a
7485          Ket          Ket
7486          End          End
# Line 7557  Matched, but too many substrings Line 7489  Matched, but too many substrings
7489  /[^a]+A/BZi  /[^a]+A/BZi
7490  ------------------------------------------------------------------  ------------------------------------------------------------------
7491          Bra          Bra
7492       /i [^A]++       /i [^a]++
7493       /i A       /i A
7494          Ket          Ket
7495          End          End
# Line 7827  Named capturing subpatterns: Line 7759  Named capturing subpatterns:
7759    one     1    one     1
7760    three   3    three   3
7761    two     2    two     2
7762    May match empty string
7763  Options: anchored caseless  Options: anchored caseless
7764  No first char  No first char
7765  No need char  No need char
# Line 7944  Options: extended Line 7877  Options: extended
7877  First char = 'x'  First char = 'x'
7878  Need char = 'z'  Need char = 'z'
7879    
 /(?(DEFINE) abc){3} xyz/x  
 Failed: repeating a DEFINE group is not allowed at offset 17  
   
7880  /(a|)*\d/  /(a|)*\d/
7881    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7882  No match  No match
# Line 8506  Failed: syntax error in subpattern name Line 8436  Failed: syntax error in subpattern name
8436   3: <unset>   3: <unset>
8437   4: x   4: x
8438    
 /[\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  
 ------------------------------------------------------------------  
   
8439  /\H++X/BZ  /\H++X/BZ
8440  ------------------------------------------------------------------  ------------------------------------------------------------------
8441          Bra          Bra
# Line 8757  No match Line 8627  No match
8627  ------------------------------------------------------------------  ------------------------------------------------------------------
8628    
8629  /\( (?: [^()]* | (?R) )* \)/x  /\( (?: [^()]* | (?R) )* \)/x
8630  (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8631   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8632    
8633  /[\E]AAA/  /[\E]AAA/
# Line 8939  Failed: number is too big at offset 19 Line 8809  Failed: number is too big at offset 19
8809  /\g6666666666/  /\g6666666666/
8810  Failed: number is too big at offset 11  Failed: number is too big at offset 11
8811    
8812  /[\g6666666666]/  /[\g6666666666]/BZ
8813  Failed: number is too big at offset 12  ------------------------------------------------------------------
8814            Bra
8815            [6g]
8816            Ket
8817            End
8818    ------------------------------------------------------------------
8819    
8820  /(?1)\c[/  /(?1)\c[/
8821  Failed: reference to non-existent subpattern at offset 3  Failed: reference to non-existent subpattern at offset 3
# Line 8963  No match Line 8838  No match
8838   1: \x0a   1: \x0a
8839    
8840  /a(*CR)b/  /a(*CR)b/
8841  Failed: (*VERB) not recognized at offset 5  Failed: (*VERB) not recognized or malformed at offset 5
8842    
8843  /(*CR)a.b/  /(*CR)a.b/
8844      a\nb      a\nb
# Line 9246  Failed: subpattern name expected at offs Line 9121  Failed: subpattern name expected at offs
9121  /\k{}/  /\k{}/
9122  Failed: subpattern name expected at offset 3  Failed: subpattern name expected at offset 3
9123    
9124    /\k/
9125    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2
9126    
9127    /\kabc/
9128    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5
9129    
9130  /(?P=)/  /(?P=)/
9131  Failed: subpattern name expected at offset 4  Failed: subpattern name expected at offset 4
9132    
# Line 9418  Starting byte set: x y z Line 9299  Starting byte set: x y z
9299    
9300  /(?(?=.*b)b|^)/CI  /(?(?=.*b)b|^)/CI
9301  Capturing subpattern count = 0  Capturing subpattern count = 0
9302    May match empty string
9303  Options:  Options:
9304  No first char  No first char
9305  No need char  No need char
# Line 9430  No need char Line 9312  No need char
9312   +7 ^ ^     b   +7 ^ ^     b
9313   +7 ^^      b   +7 ^^      b
9314   +7 ^       b   +7 ^       b
9315    +11 ^       ^
9316  +12 ^       )  +12 ^       )
9317  +13 ^  +13 ^
9318   0:   0:
# Line 9467  No options Line 9350  No options
9350  First char at start or follows newline  First char at start or follows newline
9351  No need char  No need char
9352    
 /a?|b?/P  
     abc  
  0: a  
     ** Failers  
  0:  
     ddd\N  
 No match: POSIX code 17: match failed  
   
9353  /xyz/C  /xyz/C
9354    xyz    xyz
9355  --->xyz  --->xyz
# Line 9568  No match Line 9443  No match
9443   +3 ^ ^      (?(?=[a])[^"])   +3 ^ ^      (?(?=[a])[^"])
9444   +5 ^ ^      (?=[a])   +5 ^ ^      (?=[a])
9445   +8 ^ ^      [a]   +8 ^ ^      [a]
9446    +17 ^ ^      |
9447  +21 ^ ^      "  +21 ^ ^      "
9448  +18 ^ ^      b  +18 ^ ^      b
9449  +19 ^  ^     )  +19 ^  ^     )
9450   +3 ^  ^     (?(?=[a])[^"])   +3 ^  ^     (?(?=[a])[^"])
9451   +5 ^  ^     (?=[a])   +5 ^  ^     (?=[a])
9452   +8 ^  ^     [a]   +8 ^  ^     [a]
9453    +17 ^  ^     |
9454  +21 ^  ^     "  +21 ^  ^     "
9455  +22 ^   ^    $  +22 ^   ^    $
9456  +23 ^   ^  +23 ^   ^
# Line 9869  Partial match: the cat Line 9746  Partial match: the cat
9746     abc\P\P     abc\P\P
9747   0: abc   0: abc
9748    
 /\w+A/P  
    CDAAAAB  
  0: CDAAAA  
   
 /\w+A/PU  
    CDAAAAB  
  0: CDA  
   
9749  /abc\K123/  /abc\K123/
9750      xyzabc123pqr      xyzabc123pqr
9751   0: 123   0: 123
# Line 9889  Partial match: abc12 Line 9758  Partial match: abc12
9758      xyzabc123pqr      xyzabc123pqr
9759   0: 123   0: 123
9760      xyzabc12\P      xyzabc12\P
9761  Partial match: abc12  Partial match at offset 6: abc12
9762      xyzabc12\P\P      xyzabc12\P\P
9763  Partial match: abc12  Partial match at offset 6: abc12
9764    
9765  /\babc\b/  /\babc\b/
9766      +++abc+++      +++abc+++
9767   0: abc   0: abc
9768      +++ab\P      +++ab\P
9769  Partial match: +ab  Partial match at offset 3: +ab
9770      +++ab\P\P      +++ab\P\P
9771  Partial match: +ab  Partial match at offset 3: +ab
9772    
9773  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
9774  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 10269  Need char = ':' Line 10138  Need char = ':'
10138  Subject length lower bound = 22  Subject length lower bound = 22
10139  No set of starting bytes  No set of starting bytes
10140    
 /  (?: [\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  
   
10141  /<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
10142  Capturing subpattern count = 11  Capturing subpattern count = 11
10143  Options: caseless dotall  Options: caseless dotall
# Line 10484  No set of starting bytes Line 10149  No set of starting bytes
10149  "(?>.*/)foo"SI  "(?>.*/)foo"SI
10150  Capturing subpattern count = 0  Capturing subpattern count = 0
10151  No options  No options
10152  First char at start or follows newline  No first char
10153  Need char = 'o'  Need char = 'o'
10154  Subject length lower bound = 4  Subject length lower bound = 4
10155  No set of starting bytes  No set of starting bytes
# Line 10546  No set of starting bytes Line 10211  No set of starting bytes
10211  Capturing subpattern count = 1  Capturing subpattern count = 1
10212  Named capturing subpatterns:  Named capturing subpatterns:
10213    a   1    a   1
   a   1  
10214  No options  No options
10215  No first char  No first char
10216  No need char  No need char
# Line 10727  Partial match: abca Line 10391  Partial match: abca
10391      xxxxabcde\P\P      xxxxabcde\P\P
10392  Partial match: abcde  Partial match: abcde
10393    
10394  /-- This is not in the Perl >= 5.10 test because Perl seems currently to be  /-- This is not in the Perl-compatible test because Perl seems currently to be
10395      broken and not behaving as specified in that it *does* bumpalong after      broken and not behaving as specified in that it *does* bumpalong after
10396      hitting (*COMMIT). --/      hitting (*COMMIT). --/
10397    
# Line 10923  No match Line 10587  No match
10587          End          End
10588  ------------------------------------------------------------------  ------------------------------------------------------------------
10589    
10590  / -- 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  
10591       believe this to be a Perl bug. --/       believe this to be a Perl bug. --/
10592    
 /(?=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  
   
10593  /(?>a\Kb)z|(ab)/  /(?>a\Kb)z|(ab)/
10594      ab      ab
10595   0: ab   0: ab
10596   1: ab   1: ab
10597    
 /----------------------/  
   
10598  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10599  Failed: recursive call could loop indefinitely at offset 31  Failed: recursive call could loop indefinitely at offset 31
10600    
# Line 10970  Failed: an argument is not allowed for ( Line 10614  Failed: an argument is not allowed for (
10614      ACABX      ACABX
10615  No match  No match
10616    
10617  /--- 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
10618       is a bug in Perl. ---/       is a bug in Perl. ---/
10619    
10620  /A(*THEN)B|A(*THEN)C/K  /A(*THEN)B|A(*THEN)C/K
# Line 10981  No match Line 10625  No match
10625      AC      AC
10626  No match  No match
10627    
10628  /--- 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,
10629       11 because Perl doesn't seem to follow its specification entirely  though PCRE does. ---/
      correctly. ---/  
10630    
10631  /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is  /^A(*:A)B|^X(*:A)Y/K
      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  
10632      ** Failers      ** Failers
10633  No match  No match
10634      AC      XAQQ
10635  No match  No match, mark = A
     CB  
 No match, mark = B  
10636    
10637  /--- Check the use of names for success and failure. PCRE doesn't show these  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10638  names for success, though Perl does, contrary to its spec. ---/  optimizations defeat this. So does the PCRE optimization unless we disable it
10639    with \Y. ---/
10640    
10641  /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K  /(*COMMIT)ABC/
10642      AB      ABCDEFG
10643   0: AB   0: ABC
  1: AB  
     CD  
  0: CD  
  1: CD  
10644      ** Failers      ** Failers
10645  No match  No match
10646      AC      DEFGABC\Y
10647  No match, mark = A  No match
     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. ---/  
10648    
10649  /A(*PRUNE:A)B/K  /^(ab (c+(*THEN)cd) | xyz)/x
10650      ACAB      abcccd
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
10651  No match  No match
10652    
10653  /(*MARK:A)(*PRUNE:B)(C|X)/KSS  /^(ab (c+(*PRUNE)cd) | xyz)/x
10654      C      abcccd
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /(*MARK:A)(*THEN:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
10655  No match  No match
10656    
10657  /(*MARK:A)(*THEN:B)(C|X)/KSS  /^(ab (c+(*FAIL)cd) | xyz)/x
10658      C      abcccd
10659   0: C  No match
10660   1: C  
10661  MK: A  /--- Perl gets some of these wrong ---/
     D  
 No match, mark = B  
10662    
10663  /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/  /(?>.(*ACCEPT))*?5/
10664        abcde
10665     0: a
10666    
10667  /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK  /(.(*ACCEPT))*?5/
10668      AAAC      abcde
10669  No match   0: a
10670     1: a
10671    
10672  /--- Same --/  /(.(*ACCEPT))5/
10673        abcde
10674     0: a
10675     1: a
10676    
10677  /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK  /(.(*ACCEPT))*5/
10678      AAAC      abcde
10679  No match   0: a
10680     1: a
10681    
10682  /--- This should fail; the SKIP advances by one, but when we get to AC, the  /A\NB./BZ
10683       PRUNE kills it. ---/  ------------------------------------------------------------------
10684            Bra
10685  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK          A
10686      AAAC          Any
10687            B
10688            Any
10689            Ket
10690            End
10691    ------------------------------------------------------------------
10692        ACBD
10693     0: ACBD
10694        *** Failers
10695  No match  No match
10696        A\nB
 /A(*:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
10697  No match  No match
10698        ACB\n
 /--- 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 ---/  
   
 /A(*:A)B|X(*:A)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XY  
 MK: A  
   
 /^A(*:A)B|^X(*:A)Y/K  
     ** Failers  
 No match  
     XAQQ  
 No match, mark = A  
   
 /--- 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  
   
 /--- COMMIT at the start of a pattern should be the same as an anchor. Perl  
 optimizations defeat this. So does the PCRE optimization unless we disable it  
 with \Y. ---/  
   
 /(*COMMIT)ABC/  
     ABCDEFG  
  0: ABC  
     ** Failers  
 No match  
     DEFGABC\Y  
 No match  
   
 /--- 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  
   
 /^(ab (c+(*THEN)cd) | xyz)/x  
     abcccd  
 No match  
   
 /^(ab (c+(*PRUNE)cd) | xyz)/x  
     abcccd  
 No match  
   
 /^(ab (c+(*FAIL)cd) | xyz)/x  
     abcccd  
 No match  
   
 /--- Perl 5.11 gets some of these wrong ---/  
   
 /(?>.(*ACCEPT))*?5/  
     abcde  
  0: a  
   
 /(.(*ACCEPT))*?5/  
     abcde  
  0: a  
  1: a  
   
 /(.(*ACCEPT))5/  
     abcde  
  0: a  
  1: a  
   
 /(.(*ACCEPT))*5/  
     abcde  
  0: a  
  1: a  
   
 /A\NB./BZ  
 ------------------------------------------------------------------  
         Bra  
         A  
         Any  
         B  
         Any  
         Ket  
         End  
 ------------------------------------------------------------------  
     ACBD  
  0: ACBD  
     *** Failers  
 No match  
     A\nB  
 No match  
     ACB\n  
10699  No match  No match
10700    
10701  /A\NB./sBZ  /A\NB./sBZ
# Line 11395  No match Line 10766  No match
10766  /\s*\R/BZ  /\s*\R/BZ
10767  ------------------------------------------------------------------  ------------------------------------------------------------------
10768          Bra          Bra
10769          \s*+          \s*
10770            \R
10771            Ket
10772            End
10773    ------------------------------------------------------------------
10774        \x20\x0a
10775     0:  \x0a
10776        \x20\x0d
10777     0:  \x0d
10778        \x20\x0d\x0a
10779     0:  \x0d\x0a
10780    
10781    /\S*\R/BZ
10782    ------------------------------------------------------------------
10783            Bra
10784            \S*+
10785          \R          \R
10786          Ket          Ket
10787          End          End
10788  ------------------------------------------------------------------  ------------------------------------------------------------------
10789        a\x0a
10790     0: a\x0a
10791    
10792  /-- Perl treats this one differently, not failing the second string. I believe  /X\h*\R/BZ
10793      that is a bug in Perl. --/  ------------------------------------------------------------------
10794            Bra
10795            X
10796            \h*+
10797            \R
10798            Ket
10799            End
10800    ------------------------------------------------------------------
10801        X\x20\x0a
10802     0: X \x0a
10803    
10804  /^((abc|abcx)(*THEN)y|abcd)/  /X\H*\R/BZ
10805      abcd  ------------------------------------------------------------------
10806   0: abcd          Bra
10807   1: abcd          X
10808      *** Failers          \H*
10809  No match          \R
10810      abcxy          Ket
10811            End
10812    ------------------------------------------------------------------
10813        X\x0d\x0a
10814     0: X\x0d\x0a
10815    
10816    /X\H+\R/BZ
10817    ------------------------------------------------------------------
10818            Bra
10819            X
10820            \H+
10821            \R
10822            Ket
10823            End
10824    ------------------------------------------------------------------
10825        X\x0d\x0a
10826     0: X\x0d\x0a
10827    
10828    /X\H++\R/BZ
10829    ------------------------------------------------------------------
10830            Bra
10831            X
10832            \H++
10833            \R
10834            Ket
10835            End
10836    ------------------------------------------------------------------
10837        X\x0d\x0a
10838  No match  No match
10839    
10840  /(?<=abc)def/  /(?<=abc)def/
10841      abc\P\P      abc\P\P
10842  Partial match: abc  Partial match at offset 3: abc
10843    
10844  /abc$/  /abc$/
10845      abc      abc
# Line 11662  No need char Line 11086  No need char
11086    
11087  /(^ab|^)+/I  /(^ab|^)+/I
11088  Capturing subpattern count = 1  Capturing subpattern count = 1
11089    May match empty string
11090  Options: anchored  Options: anchored
11091  No first char  No first char
11092  No need char  No need char
11093    
11094  /(^ab|^)++/I  /(^ab|^)++/I
11095  Capturing subpattern count = 1  Capturing subpattern count = 1
11096    May match empty string
11097  Options: anchored  Options: anchored
11098  No first char  No first char
11099  No need char  No need char
# Line 11686  No need char Line 11112  No need char
11112    
11113  /(?:^ab|^)+/I  /(?:^ab|^)+/I
11114  Capturing subpattern count = 0  Capturing subpattern count = 0
11115    May match empty string
11116  Options: anchored  Options: anchored
11117  No first char  No first char
11118  No need char  No need char
11119    
11120  /(?:^ab|^)++/I  /(?:^ab|^)++/I
11121  Capturing subpattern count = 0  Capturing subpattern count = 0
11122    May match empty string
11123  Options: anchored  Options: anchored
11124  No first char  No first char
11125  No need char  No need char
# Line 11710  Need char = 'b' Line 11138  Need char = 'b'
11138    
11139  /(.*ab|.*)+/I  /(.*ab|.*)+/I
11140  Capturing subpattern count = 1  Capturing subpattern count = 1
11141    May match empty string
11142  No options  No options
11143  First char at start or follows newline  First char at start or follows newline
11144  No need char  No need char
11145    
11146  /(.*ab|.*)++/I  /(.*ab|.*)++/I
11147  Capturing subpattern count = 1  Capturing subpattern count = 1
11148    May match empty string
11149  No options  No options
11150  First char at start or follows newline  First char at start or follows newline
11151  No need char  No need char
# Line 11734  Need char = 'b' Line 11164  Need char = 'b'
11164    
11165  /(?:.*ab|.*)+/I  /(?:.*ab|.*)+/I
11166  Capturing subpattern count = 0  Capturing subpattern count = 0
11167    May match empty string
11168  No options  No options
11169  First char at start or follows newline  First char at start or follows newline
11170  No need char  No need char
11171    
11172  /(?:.*ab|.*)++/I  /(?:.*ab|.*)++/I
11173  Capturing subpattern count = 0  Capturing subpattern count = 0
11174    May match empty string
11175  No options  No options
11176  First char at start or follows newline  First char at start or follows newline
11177  No need char  No need char
# Line 11816  No match Line 11248  No match
11248    
11249  /^.*?(?(?=a)a|b(*THEN)c)/  /^.*?(?(?=a)a|b(*THEN)c)/
11250      ba      ba
11251   0: ba  No match
11252    
11253  /^.*?(?(?=a)a|bc)/  /^.*?(?(?=a)a|bc)/
11254      ba      ba
11255   0: ba   0: ba
11256    
11257    /^.*?(?(?=a)a(*THEN)b|c)/
11258        ac
11259    No match
11260    
11261    /^.*?(?(?=a)a(*THEN)b)c/
11262        ac
11263    No match
11264    
11265    /^.*?(a(*THEN)b)c/
11266        aabc
11267    No match
11268    
11269    /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
11270        aabc
11271     0: aabc
11272    
11273    /^.*?(a(*THEN)b|z)c/
11274        aabc
11275     0: aabc
11276     1: ab
11277    
11278    /^.*?(z|a(*THEN)b)c/
11279        aabc
11280     0: aabc
11281     1: ab
11282    
11283  /-- --/  /-- --/
11284    
11285  /-- These studied versions are here because they are not Perl-compatible; the  /-- These studied versions are here because they are not Perl-compatible; the
# Line 11833  No match Line 11291  No match
11291   1: C   1: C
11292  MK: A  MK: A
11293      D      D
11294  No match  No match, mark = A
11295    
11296  /(*:A)A+(*SKIP:A)(B|Z)/KS  /(*:A)A+(*SKIP:A)(B|Z)/KS
11297      AAAC      AAAC
11298  No match  No match, mark = A
11299    
11300  /-- --/  /-- --/
11301    
# Line 11866  No match Line 11324  No match
11324   1: a   1: a
11325   1+ a%   1+ a%
11326    
11327  /(a)b|ac/++  /(a)b|ac/++SS
11328      ac\O3      ac\O3
 Matched, but too many substrings  
11329   0: ac   0: ac
11330   0+   0+
11331    
11332    /(a)(b)x|abc/++
11333         abc\O6
11334     0: abc
11335     0+
11336    
11337    /(a)bc|(a)(b)\2/
11338        \O3abc
11339    Matched, but too many substrings
11340     0: abc
11341        \O4abc
11342    Matched, but too many substrings
11343     0: abc
11344    
11345  /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI  /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
11346  Capturing subpattern count = 2  Capturing subpattern count = 2
# Line 11907  No set of starting bytes Line 11377  No set of starting bytes
11377  /^(?>a)++/  /^(?>a)++/
11378      aa\M      aa\M
11379  Minimum match() limit = 5  Minimum match() limit = 5
11380  Minimum match() recursion limit = 3  Minimum match() recursion limit = 2
11381   0: aa   0: aa
11382      aaaaaaaaa\M      aaaaaaaaa\M
11383  Minimum match() limit = 12  Minimum match() limit = 12
11384  Minimum match() recursion limit = 3  Minimum match() recursion limit = 2
11385   0: aaaaaaaaa   0: aaaaaaaaa
11386    
11387  /(a)(?1)++/  /(a)(?1)++/
11388      aa\M      aa\M
11389  Minimum match() limit = 7  Minimum match() limit = 7
11390  Minimum match() recursion limit = 5  Minimum match() recursion limit = 4
11391   0: aa   0: aa
11392   1: a   1: a
11393      aaaaaaaaa\M      aaaaaaaaa\M
11394  Minimum match() limit = 21  Minimum match() limit = 21
11395  Minimum match() recursion limit = 5  Minimum match() recursion limit = 4
11396   0: aaaaaaaaa   0: aaaaaaaaa
11397   1: a   1: a
11398    
11399    /(?:(foo)|(bar)|(baz))X/SS=
11400        bazfooX
11401     0: fooX
11402     1: foo
11403     2: <unset>
11404     3: <unset>
11405        foobazbarX
11406     0: barX
11407     1: <unset>
11408     2: bar
11409     3: <unset>
11410        barfooX
11411     0: fooX
11412     1: foo
11413     2: <unset>
11414     3: <unset>
11415        bazX
11416     0: bazX
11417     1: <unset>
11418     2: <unset>
11419     3: baz
11420        foobarbazX
11421     0: bazX
11422     1: <unset>
11423     2: <unset>
11424     3: baz
11425        bazfooX\O0
11426    Matched, but too many substrings
11427        bazfooX\O2
11428    Matched, but too many substrings
11429     0: fooX
11430        bazfooX\O4
11431    Matched, but too many substrings
11432     0: fooX
11433     1: <unset>
11434        bazfooX\O6
11435    Matched, but too many substrings
11436     0: fooX
11437     1: foo
11438     2: <unset>
11439        bazfooX\O8
11440    Matched, but too many substrings
11441     0: fooX
11442     1: foo
11443     2: <unset>
11444     3: <unset>
11445        bazfooX\O10
11446     0: fooX
11447     1: foo
11448     2: <unset>
11449     3: <unset>
11450    
11451    /(?=abc){3}abc/BZ
11452    ------------------------------------------------------------------
11453            Bra
11454            Assert
11455            abc
11456            Ket
11457            abc
11458            Ket
11459            End
11460    ------------------------------------------------------------------
11461    
11462    /(?=abc)+abc/BZ
11463    ------------------------------------------------------------------
11464            Bra
11465            Assert
11466            abc
11467            Ket
11468            abc
11469            Ket
11470            End
11471    ------------------------------------------------------------------
11472    
11473    /(?=abc)++abc/BZ
11474    ------------------------------------------------------------------
11475            Bra
11476            Assert
11477            abc
11478            Ket
11479            abc
11480            Ket
11481            End
11482    ------------------------------------------------------------------
11483    
11484    /(?=abc){0}xyz/BZ
11485    ------------------------------------------------------------------
11486            Bra
11487            Skip zero
11488            Assert
11489            abc
11490            Ket
11491            xyz
11492            Ket
11493            End
11494    ------------------------------------------------------------------
11495    
11496    /(?=(a))?./BZ
11497    ------------------------------------------------------------------
11498            Bra
11499            Brazero
11500            Assert
11501            CBra 1
11502            a
11503            Ket
11504            Ket
11505            Any
11506            Ket
11507            End
11508    ------------------------------------------------------------------
11509    
11510    /(?=(a))??./BZ
11511    ------------------------------------------------------------------
11512            Bra
11513            Braminzero
11514            Assert
11515            CBra 1
11516            a
11517            Ket
11518            Ket
11519            Any
11520            Ket
11521            End
11522    ------------------------------------------------------------------
11523    
11524    /^(?=(a)){0}b(?1)/BZ
11525    ------------------------------------------------------------------
11526            Bra
11527            ^
11528            Skip zero
11529            Assert
11530            CBra 1
11531            a
11532            Ket
11533            Ket
11534            b
11535            Recurse
11536            Ket
11537            End
11538    ------------------------------------------------------------------
11539    
11540    /(?(DEFINE)(a))?b(?1)/BZ
11541    ------------------------------------------------------------------
11542            Bra
11543            Cond
11544            Cond def
11545            CBra 1
11546            a
11547            Ket
11548            Ket
11549            b
11550            Recurse
11551            Ket
11552            End
11553    ------------------------------------------------------------------
11554    
11555    /^(?=(?1))?[az]([abc])d/BZ
11556    ------------------------------------------------------------------
11557            Bra
11558            ^
11559            Brazero
11560            Assert
11561            Recurse
11562            Ket
11563            [az]
11564            CBra 1
11565            [a-c]
11566            Ket
11567            d
11568            Ket
11569            End
11570    ------------------------------------------------------------------
11571    
11572    /^(?!a){0}\w+/BZ
11573    ------------------------------------------------------------------
11574            Bra
11575            ^
11576            Skip zero
11577            Assert not
11578            a
11579            Ket
11580            \w+
11581            Ket
11582            End
11583    ------------------------------------------------------------------
11584    
11585    /(?<=(abc))?xyz/BZ
11586    ------------------------------------------------------------------
11587            Bra
11588            Brazero
11589            AssertB
11590            Reverse
11591            CBra 1
11592            abc
11593            Ket
11594            Ket
11595            xyz
11596            Ket
11597            End
11598    ------------------------------------------------------------------
11599    
11600    /[:a[:abc]b:]/BZ
11601    ------------------------------------------------------------------
11602            Bra
11603            [:[a-c]
11604            b:]
11605            Ket
11606            End
11607    ------------------------------------------------------------------
11608    
11609    /((?2))((?1))/SS
11610        abc
11611    Error -26 (nested recursion at the same subject position)
11612    
11613    /((?(R2)a+|(?1)b))/SS
11614        aaaabcde
11615    Error -26 (nested recursion at the same subject position)
11616    
11617    /(?(R)a*(?1)|((?R))b)/SS
11618        aaaabcde
11619    Error -26 (nested recursion at the same subject position)
11620    
11621    /(a+|(?R)b)/
11622    Failed: recursive call could loop indefinitely at offset 7
11623    
11624    /^(a(*:A)(d|e(*:B))z|aeq)/C
11625        adz
11626    --->adz
11627     +0 ^       ^
11628     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11629     +2 ^       a
11630     +3 ^^      (*:A)
11631     +8 ^^      (d|e(*:B))
11632    Latest Mark: A
11633     +9 ^^      d
11634    +10 ^ ^     |
11635    +18 ^ ^     z
11636    +19 ^  ^    |
11637    +24 ^  ^
11638     0: adz
11639     1: adz
11640     2: d
11641        aez
11642    --->aez
11643     +0 ^       ^
11644     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11645     +2 ^       a
11646     +3 ^^      (*:A)
11647     +8 ^^      (d|e(*:B))
11648    Latest Mark: A
11649     +9 ^^      d
11650    +11 ^^      e
11651    +12 ^ ^     (*:B)
11652    +17 ^ ^     )
11653    Latest Mark: B
11654    +18 ^ ^     z
11655    +19 ^  ^    |
11656    +24 ^  ^
11657     0: aez
11658     1: aez
11659     2: e
11660        aeqwerty
11661    --->aeqwerty
11662     +0 ^            ^
11663     +1 ^            (a(*:A)(d|e(*:B))z|aeq)
11664     +2 ^            a
11665     +3 ^^           (*:A)
11666     +8 ^^           (d|e(*:B))
11667    Latest Mark: A
11668     +9 ^^           d
11669    +11 ^^           e
11670    +12 ^ ^          (*:B)
11671    +17 ^ ^          )
11672    Latest Mark: B
11673    +18 ^ ^          z
11674    +20 ^            a
11675    +21 ^^           e
11676    +22 ^ ^          q
11677    +23 ^  ^         )
11678    +24 ^  ^
11679     0: aeq
11680     1: aeq
11681    
11682    /.(*F)/
11683        \P\Pabc
11684    No match
11685    
11686    /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
11687    Capturing subpattern count = 0
11688    Max lookbehind = 1
11689    No options
11690    First char = 't'
11691    Need char = 't'
11692    Subject length lower bound = 18
11693    No set of starting bytes
11694    
11695    /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
11696    Capturing subpattern count = 0
11697    Max lookbehind = 1
11698    No options
11699    No first char
11700    No need char
11701    Subject length lower bound = 8
11702    Starting byte set: < o t u
11703    
11704    /a(*SKIP)c|b(*ACCEPT)|/+S!I
11705    Capturing subpattern count = 0
11706    May match empty string
11707    No options
11708    No first char
11709    No need char
11710    Subject length lower bound = -1
11711    No set of starting bytes
11712        a
11713     0:
11714     0+
11715    
11716    /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
11717    Capturing subpattern count = 0
11718    No options
11719    No first char
11720    No need char
11721    Subject length lower bound = -1
11722    Starting byte set: a b x
11723        ax
11724     0: x
11725    
11726    'a*(*ACCEPT)b'+
11727        \N\N
11728    No match
11729        abc\N\N
11730     0: a
11731     0+ bc
11732        bbb\N\N
11733     0:
11734     0+ bb
11735    
11736    /(*ACCEPT)a/+I
11737    Capturing subpattern count = 0
11738    No options
11739    No first char
11740    No need char
11741        bax
11742     0:
11743     0+ bax
11744    
11745    /z(*ACCEPT)a/+I
11746    Capturing subpattern count = 0
11747    No options
11748    First char = 'z'
11749    No need char
11750        baxzbx
11751     0: z
11752     0+ bx
11753    
11754    /a(?:.)*?a/ims
11755        \Mabbbbbbbbbbbbbbbbbbbbba
11756    Minimum match() limit = 65
11757    Minimum match() recursion limit = 2
11758     0: abbbbbbbbbbbbbbbbbbbbba
11759    
11760    /a(?:.(*THEN))*?a/ims
11761        \Mabbbbbbbbbbbbbbbbbbbbba
11762    Minimum match() limit = 86
11763    Minimum match() recursion limit = 45
11764     0: abbbbbbbbbbbbbbbbbbbbba
11765    
11766    /a(?:.(*THEN:ABC))*?a/ims
11767        \Mabbbbbbbbbbbbbbbbbbbbba
11768    Minimum match() limit = 86
11769    Minimum match() recursion limit = 45
11770     0: abbbbbbbbbbbbbbbbbbbbba
11771    
11772    /^(?>a+)(?>(z+))\w/BZ
11773    ------------------------------------------------------------------
11774            Bra
11775            ^
11776            Once_NC
11777            a+
11778            Ket
11779            Once
11780            CBra 1
11781            z+
11782            Ket
11783            Ket
11784            \w
11785            Ket
11786            End
11787    ------------------------------------------------------------------
11788        aaaazzzzb
11789     0: aaaazzzzb
11790     1: zzzz
11791        ** Failers
11792    No match
11793        aazz
11794    No match
11795    
11796    /(.)(\1|a(?2))/
11797        bab
11798     0: bab
11799     1: b
11800     2: ab
11801    
11802    /\1|(.)(?R)\1/
11803        cbbbc
11804     0: cbbbc
11805     1: c
11806    
11807    /(.)((?(1)c|a)|a(?2))/
11808        baa
11809    No match
11810    
11811    /(?P<abn>(?P=abn)xxx)/BZ
11812    ------------------------------------------------------------------
11813            Bra
11814            Once
11815            CBra 1
11816            \1
11817            xxx
11818            Ket
11819            Ket
11820            Ket
11821            End
11822    ------------------------------------------------------------------
11823    
11824    /(a\1z)/BZ
11825    ------------------------------------------------------------------
11826            Bra
11827            Once
11828            CBra 1
11829            a
11830            \1
11831            z
11832            Ket
11833            Ket
11834            Ket
11835            End
11836    ------------------------------------------------------------------
11837    
11838    /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
11839         \Maabbccddee
11840    Minimum match() limit = 12
11841    Minimum match() recursion limit = 3
11842     0: aabbccddee
11843    
11844    /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
11845         \Maabbccddee
11846    Minimum match() limit = 22
11847    Minimum match() recursion limit = 21
11848     0: aabbccddee
11849     1: aa
11850     2: bb
11851     3: cc
11852     4: dd
11853     5: ee
11854    
11855    /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
11856         \Maabbccddee
11857    Minimum match() limit = 18
11858    Minimum match() recursion limit = 13
11859     0: aabbccddee
11860     1: aa
11861     2: cc
11862     3: ee
11863    
11864    /^a\x41z/<JS>
11865        aAz
11866     0: aAz
11867        *** Failers
11868    No match
11869        ax41z
11870    No match
11871    
11872    /^a[m\x41]z/<JS>
11873        aAz
11874     0: aAz
11875    
11876    /^a\x1z/<JS>
11877        ax1z
11878     0: ax1z
11879    
11880    /^a\u0041z/<JS>
11881        aAz
11882     0: aAz
11883        *** Failers
11884    No match
11885        au0041z
11886    No match
11887    
11888    /^a[m\u0041]z/<JS>
11889        aAz
11890     0: aAz
11891    
11892    /^a\u041z/<JS>
11893        au041z
11894     0: au041z
11895        *** Failers
11896    No match
11897        aAz
11898    No match
11899    
11900    /^a\U0041z/<JS>
11901        aU0041z
11902     0: aU0041z
11903        *** Failers
11904    No match
11905        aAz
11906    No match
11907    
11908    /(?(?=c)c|d)++Y/BZ
11909    ------------------------------------------------------------------
11910            Bra
11911            BraPos
11912            Cond
11913            Assert
11914            c
11915            Ket
11916            c
11917            Alt
11918            d
11919            Ket
11920            KetRpos
11921            Y
11922            Ket
11923            End
11924    ------------------------------------------------------------------
11925    
11926    /(?(?=c)c|d)*+Y/BZ
11927    ------------------------------------------------------------------
11928            Bra
11929            Braposzero
11930            BraPos
11931            Cond
11932            Assert
11933            c
11934            Ket
11935            c
11936            Alt
11937            d
11938            Ket
11939            KetRpos
11940            Y
11941            Ket
11942            End
11943    ------------------------------------------------------------------
11944    
11945    /a[\NB]c/
11946    Failed: \N is not supported in a class at offset 3
11947    
11948    /a[B-\Nc]/
11949    Failed: \N is not supported in a class at offset 5
11950    
11951    /(a)(?2){0,1999}?(b)/
11952    
11953    /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
11954    
11955    /--- This test, with something more complicated than individual letters, causes
11956    different behaviour in Perl. Perhaps it disables some optimization; no tag is
11957    passed back for the failures, whereas in PCRE there is a tag. ---/
11958    
11959    /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
11960        AABC
11961     0: AB
11962     1: A
11963     2: B
11964    MK: A
11965        XXYZ
11966     0: XXY
11967     1: <unset>
11968     2: <unset>
11969     3: X
11970     4: X
11971     5: Y
11972    MK: B
11973        ** Failers
11974    No match
11975        XAQQ
11976    No match, mark = A
11977        XAQQXZZ
11978    No match, mark = A
11979        AXQQQ
11980    No match, mark = A
11981        AXXQQQ
11982    No match, mark = B
11983    
11984    /-- Perl doesn't give marks for these, though it does if the alternatives are
11985    replaced by single letters. --/
11986    
11987    /(b|q)(*:m)f|a(*:n)w/K
11988        aw
11989     0: aw
11990    MK: n
11991        ** Failers
11992    No match, mark = n
11993        abc
11994    No match, mark = m
11995    
11996    /(q|b)(*:m)f|a(*:n)w/K
11997        aw
11998     0: aw
11999    MK: n
12000        ** Failers
12001    No match, mark = n
12002        abc
12003    No match, mark = m
12004    
12005    /-- After a partial match, the behaviour is as for a failure. --/
12006    
12007    /^a(*:X)bcde/K
12008       abc\P
12009    Partial match, mark=X: abc
12010    
12011    /-- These are here because Perl doesn't return a mark, except for the first --/
12012    
12013    /(?=(*:x))(q|)/K+
12014        abc
12015     0:
12016     0+ abc
12017     1:
12018    MK: x
12019    
12020    /(?=(*:x))((*:y)q|)/K+
12021        abc
12022     0:
12023     0+ abc
12024     1:
12025    MK: x
12026    
12027    /(?=(*:x))(?:(*:y)q|)/K+
12028        abc
12029     0:
12030     0+ abc
12031    MK: x
12032    
12033    /(?=(*:x))(?>(*:y)q|)/K+
12034        abc
12035     0:
12036     0+ abc
12037    MK: x
12038    
12039    /(?=a(*:x))(?!a(*:y)c)/K+
12040        ab
12041     0:
12042     0+ ab
12043    MK: x
12044    
12045    /(?=a(*:x))(?=a(*:y)c|)/K+
12046        ab
12047     0:
12048     0+ ab
12049    MK: x
12050    
12051    /(..)\1/
12052        ab\P
12053    Partial match: ab
12054        aba\P
12055    Partial match: aba
12056        abab\P
12057     0: abab
12058     1: ab
12059    
12060    /(..)\1/i
12061        ab\P
12062    Partial match: ab
12063        abA\P
12064    Partial match: abA
12065        aBAb\P
12066     0: aBAb
12067     1: aB
12068    
12069    /(..)\1{2,}/
12070        ab\P
12071    Partial match: ab
12072        aba\P
12073    Partial match: aba
12074        abab\P
12075    Partial match: abab
12076        ababa\P
12077    Partial match: ababa
12078        ababab\P
12079     0: ababab
12080     1: ab
12081        ababab\P\P
12082    Partial match: ababab
12083        abababa\P
12084     0: ababab
12085     1: ab
12086        abababa\P\P
12087    Partial match: abababa
12088    
12089    /(..)\1{2,}/i
12090        ab\P
12091    Partial match: ab
12092        aBa\P
12093    Partial match: aBa
12094        aBAb\P
12095    Partial match: aBAb
12096        AbaBA\P
12097    Partial match: AbaBA
12098        abABAb\P
12099     0: abABAb
12100     1: ab
12101        aBAbaB\P\P
12102    Partial match: aBAbaB
12103        abABabA\P
12104     0: abABab
12105     1: ab
12106        abaBABa\P\P
12107    Partial match: abaBABa
12108    
12109    /(..)\1{2,}?x/i
12110        ab\P
12111    Partial match: ab
12112        abA\P
12113    Partial match: abA
12114        aBAb\P
12115    Partial match: aBAb
12116        abaBA\P
12117    Partial match: abaBA
12118        abAbaB\P
12119    Partial match: abAbaB
12120        abaBabA\P
12121    Partial match: abaBabA
12122        abAbABaBx\P
12123     0: abAbABaBx
12124     1: ab
12125    
12126    /^(..)\1/
12127        aba\P
12128    Partial match: aba
12129    
12130    /^(..)\1{2,3}x/
12131        aba\P
12132    Partial match: aba
12133        ababa\P
12134    Partial match: ababa
12135        ababa\P\P
12136    Partial match: ababa
12137        abababx
12138     0: abababx
12139     1: ab
12140        ababababx
12141     0: ababababx
12142     1: ab
12143    
12144    /^(..)\1{2,3}?x/
12145        aba\P
12146    Partial match: aba
12147        ababa\P
12148    Partial match: ababa
12149        ababa\P\P
12150    Partial match: ababa
12151        abababx
12152     0: abababx
12153     1: ab
12154        ababababx
12155     0: ababababx
12156     1: ab
12157    
12158    /^(..)(\1{2,3})ab/
12159        abababab
12160     0: abababab
12161     1: ab
12162     2: abab
12163    
12164    /^\R/
12165        \r\P
12166     0: \x0d
12167        \r\P\P
12168    Partial match: \x0d
12169    
12170    /^\R{2,3}x/
12171        \r\P
12172    Partial match: \x0d
12173        \r\P\P
12174    Partial match: \x0d
12175        \r\r\P
12176    Partial match: \x0d\x0d
12177        \r\r\P\P
12178    Partial match: \x0d\x0d
12179        \r\r\r\P
12180    Partial match: \x0d\x0d\x0d
12181        \r\r\r\P\P
12182    Partial match: \x0d\x0d\x0d
12183        \r\rx
12184     0: \x0d\x0dx
12185        \r\r\rx
12186     0: \x0d\x0d\x0dx
12187    
12188    /^\R{2,3}?x/
12189        \r\P
12190    Partial match: \x0d
12191        \r\P\P
12192    Partial match: \x0d
12193        \r\r\P
12194    Partial match: \x0d\x0d
12195        \r\r\P\P
12196    Partial match: \x0d\x0d
12197        \r\r\r\P
12198    Partial match: \x0d\x0d\x0d
12199        \r\r\r\P\P
12200    Partial match: \x0d\x0d\x0d
12201        \r\rx
12202     0: \x0d\x0dx
12203        \r\r\rx
12204     0: \x0d\x0d\x0dx
12205    
12206    /^\R?x/
12207        \r\P
12208    Partial match: \x0d
12209        \r\P\P
12210    Partial match: \x0d
12211        x
12212     0: x
12213        \rx
12214     0: \x0dx
12215    
12216    /^\R+x/
12217        \r\P
12218    Partial match: \x0d
12219        \r\P\P
12220    Partial match: \x0d
12221        \r\n\P
12222    Partial match: \x0d\x0a
12223        \r\n\P\P
12224    Partial match: \x0d\x0a
12225        \rx
12226     0: \x0dx
12227    
12228    /^a$/<CRLF>
12229        a\r\P
12230    Partial match: a\x0d
12231        a\r\P\P
12232    Partial match: a\x0d
12233    
12234    /^a$/m<CRLF>
12235        a\r\P
12236    Partial match: a\x0d
12237        a\r\P\P
12238    Partial match: a\x0d
12239    
12240    /^(a$|a\r)/<CRLF>
12241        a\r\P
12242     0: a\x0d
12243     1: a\x0d
12244        a\r\P\P
12245    Partial match: a\x0d
12246    
12247    /^(a$|a\r)/m<CRLF>
12248        a\r\P
12249     0: a\x0d
12250     1: a\x0d
12251        a\r\P\P
12252    Partial match: a\x0d
12253    
12254    /./<CRLF>
12255        \r\P
12256     0: \x0d
12257        \r\P\P
12258    Partial match: \x0d
12259    
12260    /.{2,3}/<CRLF>
12261        \r\P
12262    Partial match: \x0d
12263        \r\P\P
12264    Partial match: \x0d
12265        \r\r\P
12266     0: \x0d\x0d
12267        \r\r\P\P
12268    Partial match: \x0d\x0d
12269        \r\r\r\P
12270     0: \x0d\x0d\x0d
12271        \r\r\r\P\P
12272    Partial match: \x0d\x0d\x0d
12273    
12274    /.{2,3}?/<CRLF>
12275        \r\P
12276    Partial match: \x0d
12277        \r\P\P
12278    Partial match: \x0d
12279        \r\r\P
12280     0: \x0d\x0d
12281        \r\r\P\P
12282    Partial match: \x0d\x0d
12283        \r\r\r\P
12284     0: \x0d\x0d
12285        \r\r\r\P\P
12286     0: \x0d\x0d
12287    
12288    "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
12289        ABCDGHI\O03
12290    Matched, but too many substrings
12291     0: ABCD
12292    
12293    /-- These are all run as real matches in test 1; here we are just checking the
12294    settings of the anchored and startline bits. --/
12295    
12296    /(?>.*?a)(?<=ba)/I
12297    Capturing subpattern count = 0
12298    Max lookbehind = 2
12299    No options
12300    No first char
12301    Need char = 'a'
12302    
12303    /(?:.*?a)(?<=ba)/I
12304    Capturing subpattern count = 0
12305    Max lookbehind = 2
12306    No options
12307    First char at start or follows newline
12308    Need char = 'a'
12309    
12310    /.*?a(*PRUNE)b/I
12311    Capturing subpattern count = 0
12312    No options
12313    No first char
12314    Need char = 'b'
12315    
12316    /.*?a(*PRUNE)b/sI
12317    Capturing subpattern count = 0
12318    Options: dotall
12319    No first char
12320    Need char = 'b'
12321    
12322    /^a(*PRUNE)b/sI
12323    Capturing subpattern count = 0
12324    Options: anchored dotall
12325    No first char
12326    No need char
12327    
12328    /.*?a(*SKIP)b/I
12329    Capturing subpattern count = 0
12330    No options
12331    No first char
12332    Need char = 'b'
12333    
12334    /(?>.*?a)b/sI
12335    Capturing subpattern count = 0
12336    Options: dotall
12337    No first char
12338    Need char = 'b'
12339    
12340    /(?>.*?a)b/I
12341    Capturing subpattern count = 0
12342    No options
12343    No first char
12344    Need char = 'b'
12345    
12346    /(?>^a)b/sI
12347    Capturing subpattern count = 0
12348    Options: anchored dotall
12349    No first char
12350    No need char
12351    
12352    /(?>.*?)(?<=(abcd)|(wxyz))/I
12353    Capturing subpattern count = 2
12354    Max lookbehind = 4
12355    May match empty string
12356    No options
12357    No first char
12358    No need char
12359    
12360    /(?>.*)(?<=(abcd)|(wxyz))/I
12361    Capturing subpattern count = 2
12362    Max lookbehind = 4
12363    May match empty string
12364    No options
12365    No first char
12366    No need char
12367    
12368    "(?>.*)foo"I
12369    Capturing subpattern count = 0
12370    No options
12371    No first char
12372    Need char = 'o'
12373    
12374    "(?>.*?)foo"I
12375    Capturing subpattern count = 0
12376    No options
12377    No first char
12378    Need char = 'o'
12379    
12380    /(?>^abc)/mI
12381    Capturing subpattern count = 0
12382    Options: multiline
12383    First char at start or follows newline
12384    Need char = 'c'
12385    
12386    /(?>.*abc)/mI
12387    Capturing subpattern count = 0
12388    Options: multiline
12389    No first char
12390    Need char = 'c'
12391    
12392    /(?:.*abc)/mI
12393    Capturing subpattern count = 0
12394    Options: multiline
12395    First char at start or follows newline
12396    Need char = 'c'
12397    
12398    /-- Check PCRE_STUDY_EXTRA_NEEDED --/
12399    
12400    /.?/S-I
12401    Capturing subpattern count = 0
12402    May match empty string
12403    No options
12404    No first char
12405    No need char
12406    Study returned NULL
12407    
12408    /.?/S!I
12409    Capturing subpattern count = 0
12410    May match empty string
12411    No options
12412    No first char
12413    No need char
12414    Subject length lower bound = -1
12415    No set of starting bytes
12416    
12417    /(?:(a)+(?C1)bb|aa(?C2)b)/
12418        aab\C+
12419    Callout 1: last capture = 1
12420     0: <unset>
12421     1: a
12422    --->aab
12423        ^ ^     b
12424    Callout 1: last capture = 1
12425     0: <unset>
12426     1: a
12427    --->aab
12428        ^^      b
12429    Callout 2: last capture = -1
12430     0: <unset>
12431    --->aab
12432        ^ ^     b
12433     0: aab
12434    
12435    /(?:(a)++(?C1)bb|aa(?C2)b)/
12436        aab\C+
12437    Callout 1: last capture = 1
12438     0: <unset>
12439     1: a
12440    --->aab
12441        ^ ^     b
12442    Callout 2: last capture = -1
12443     0: <unset>
12444    --->aab
12445        ^ ^     b
12446     0: aab
12447    
12448    /(?:(?>(a))(?C1)bb|aa(?C2)b)/
12449        aab\C+
12450    Callout 1: last capture = 1
12451     0: <unset>
12452     1: a
12453    --->aab
12454        ^^      b
12455    Callout 2: last capture = -1
12456     0: <unset>
12457    --->aab
12458        ^ ^     b
12459     0: aab
12460    
12461    /(?:(?1)(?C1)x|ab(?C2))((a)){0}/
12462        aab\C+
12463    Callout 1: last capture = -1
12464     0: <unset>
12465    --->aab
12466        ^^      x
12467    Callout 1: last capture = -1
12468     0: <unset>
12469    --->aab
12470         ^^     x
12471    Callout 2: last capture = -1
12472     0: <unset>
12473    --->aab
12474         ^ ^    )
12475     0: ab
12476    
12477    /(?1)(?C1)((a)(?C2)){0}/
12478        aab\C+
12479    Callout 2: last capture = 2
12480     0: <unset>
12481     1: <unset>
12482     2: a
12483    --->aab
12484        ^^      )
12485    Callout 1: last capture = -1
12486     0: <unset>
12487    --->aab
12488        ^^      ((a)(?C2)){0}
12489     0: a
12490    
12491    /(?:(a)+(?C1)bb|aa(?C2)b)++/
12492        aab\C+
12493    Callout 1: last capture = 1
12494     0: <unset>
12495     1: a
12496    --->aab
12497        ^ ^     b
12498    Callout 1: last capture = 1
12499     0: <unset>
12500     1: a
12501    --->aab
12502        ^^      b
12503    Callout 2: last capture = -1
12504     0: <unset>
12505    --->aab
12506        ^ ^     b
12507     0: aab
12508        aab\C+\O2
12509    Callout 1: last capture = 1
12510     0: <unset>
12511    --->aab
12512        ^ ^     b
12513    Callout 1: last capture = 1
12514     0: <unset>
12515    --->aab
12516        ^^      b
12517    Callout 2: last capture = -1
12518     0: <unset>
12519    --->aab
12520        ^ ^     b
12521     0: aab
12522    
12523    /(ab)x|ab/
12524        ab\O3
12525     0: ab
12526        ab\O2
12527     0: ab
12528    
12529    /(ab)/
12530        ab\O3
12531    Matched, but too many substrings
12532     0: ab
12533        ab\O2
12534    Matched, but too many substrings
12535     0: ab
12536    
12537    /(?<=123)(*MARK:xx)abc/K
12538        xxxx123a\P\P
12539    Partial match at offset 7, mark=xx: 123a
12540        xxxx123a\P
12541    Partial match at offset 7, mark=xx: 123a
12542    
12543    /123\Kabc/
12544        xxxx123a\P\P
12545    Partial match: 123a
12546        xxxx123a\P
12547    Partial match: 123a
12548    
12549    /^(?(?=a)aa|bb)/C
12550        bb
12551    --->bb
12552     +0 ^      ^
12553     +1 ^      (?(?=a)aa|bb)
12554     +3 ^      (?=a)
12555     +6 ^      a
12556    +11 ^      b
12557    +12 ^^     b
12558    +13 ^ ^    )
12559    +14 ^ ^
12560     0: bb
12561    
12562    /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
12563        bb
12564    --->bb
12565      1 ^      ^
12566      2 ^      (?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))
12567     99 ^      (?=(?C3)a(?C4))
12568      3 ^      a
12569      8 ^      b
12570      9 ^^     b
12571     10 ^ ^    )
12572     11 ^ ^
12573     0: bb
12574    
12575    /-- Perl seems to have a bug with this one --/
12576    
12577    /aaaaa(*COMMIT)(*PRUNE)b|a+c/
12578        aaaaaac
12579     0: aaaac
12580    
12581    /-- Here are some that Perl treats differently because of the way it handles
12582    backtracking verbs. --/
12583    
12584     /(?!a(*COMMIT)b)ac|ad/
12585         ac
12586     0: ac
12587         ad
12588     0: ad
12589    
12590    /^(?!a(*THEN)b|ac)../
12591         ac
12592    No match
12593         ad
12594     0: ad
12595    
12596    /^(?=a(*THEN)b|ac)/
12597        ac
12598     0:
12599    
12600    /\A.*?(?:a|b(*THEN)c)/
12601        ba
12602     0: ba
12603    
12604    /\A.*?(?:a|b(*THEN)c)++/
12605        ba
12606     0: ba
12607    
12608    /\A.*?(?:a|b(*THEN)c|d)/
12609        ba
12610     0: ba
12611    
12612    /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
12613        aac
12614     0: aac
12615    
12616    /\A.*?(a|b(*THEN)c)/
12617        ba
12618     0: ba
12619     1: a
12620    
12621    /^(A(*THEN)B|A(*THEN)D)/
12622        AD
12623     0: AD
12624     1: AD
12625    
12626    /(?!b(*THEN)a)bn|bnn/
12627        bnn
12628     0: bn
12629    
12630    /(?(?=b(*SKIP)a)bn|bnn)/
12631        bnn
12632    No match
12633    
12634    /(?=b(*THEN)a|)bn|bnn/
12635        bnn
12636     0: bn
12637    
12638    /-------------------------/
12639    
12640    /(*LIMIT_MATCH=12bc)abc/
12641    Failed: (*VERB) not recognized or malformed at offset 7
12642    
12643    /(*LIMIT_MATCH=4294967290)abc/
12644    Failed: (*VERB) not recognized or malformed at offset 7
12645    
12646    /(*LIMIT_RECURSION=4294967280)abc/I
12647    Capturing subpattern count = 0
12648    Recursion limit = 4294967280
12649    No options
12650    First char = 'a'
12651    Need char = 'c'
12652    
12653    /(a+)*zz/
12654        aaaaaaaaaaaaaz
12655    No match
12656        aaaaaaaaaaaaaz\q3000
12657    Error -8 (match limit exceeded)
12658    
12659    /(a+)*zz/S-
12660        aaaaaaaaaaaaaz\Q10
12661    Error -21 (recursion limit exceeded)
12662    
12663    /(*LIMIT_MATCH=3000)(a+)*zz/I
12664    Capturing subpattern count = 1
12665    Match limit = 3000
12666    No options
12667    No first char
12668    Need char = 'z'
12669        aaaaaaaaaaaaaz
12670    Error -8 (match limit exceeded)
12671        aaaaaaaaaaaaaz\q60000
12672    Error -8 (match limit exceeded)
12673    
12674    /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
12675    Capturing subpattern count = 1
12676    Match limit = 3000
12677    No options
12678    No first char
12679    Need char = 'z'
12680        aaaaaaaaaaaaaz
12681    Error -8 (match limit exceeded)
12682    
12683    /(*LIMIT_MATCH=60000)(a+)*zz/I
12684    Capturing subpattern count = 1
12685    Match limit = 60000
12686    No options
12687    No first char
12688    Need char = 'z'
12689        aaaaaaaaaaaaaz
12690    No match
12691        aaaaaaaaaaaaaz\q3000
12692    Error -8 (match limit exceeded)
12693    
12694    /(*LIMIT_RECURSION=10)(a+)*zz/IS-
12695    Capturing subpattern count = 1
12696    Recursion limit = 10
12697    No options
12698    No first char
12699    Need char = 'z'
12700    Subject length lower bound = 2
12701    Starting byte set: a z
12702        aaaaaaaaaaaaaz
12703    Error -21 (recursion limit exceeded)
12704        aaaaaaaaaaaaaz\Q1000
12705    Error -21 (recursion limit exceeded)
12706    
12707    /(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/IS-
12708    Capturing subpattern count = 1
12709    Recursion limit = 10
12710    No options
12711    No first char
12712    Need char = 'z'
12713    Subject length lower bound = 2
12714    Starting byte set: a z
12715        aaaaaaaaaaaaaz
12716    Error -21 (recursion limit exceeded)
12717    
12718    /(*LIMIT_RECURSION=1000)(a+)*zz/IS-
12719    Capturing subpattern count = 1
12720    Recursion limit = 1000
12721    No options
12722    No first char
12723    Need char = 'z'
12724    Subject length lower bound = 2
12725    Starting byte set: a z
12726        aaaaaaaaaaaaaz
12727    No match
12728        aaaaaaaaaaaaaz\Q10
12729    Error -21 (recursion limit exceeded)
12730    
12731    /-- This test causes a segfault with Perl 5.18.0 --/
12732    
12733    /^(?=(a)){0}b(?1)/
12734        backgammon
12735     0: ba
12736    
12737    /(?|(?<n>f)|(?<n>b))/JI
12738    Capturing subpattern count = 1
12739    Named capturing subpatterns:
12740      n   1
12741    Options: dupnames
12742    No first char
12743    No need char
12744    
12745    /(?<a>abc)(?<a>z)\k<a>()/JDZS
12746    ------------------------------------------------------------------
12747            Bra
12748            CBra 1
12749            abc
12750            Ket
12751            CBra 2
12752            z
12753            Ket
12754            \k<a>2
12755            CBra 3
12756            Ket
12757            Ket
12758            End
12759    ------------------------------------------------------------------
12760    Capturing subpattern count = 3
12761    Max back reference = 2
12762    Named capturing subpatterns:
12763      a   1
12764      a   2
12765    Options: dupnames
12766    First char = 'a'
12767    Need char = 'z'
12768    Subject length lower bound = 5
12769    No set of starting bytes
12770    
12771  /-- End of testinput2 --/  /-- End of testinput2 --/

Legend:
Removed from v.621  
changed lines
  Added in v.1361

  ViewVC Help
Powered by ViewVC 1.1.5