/[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 1348 by ph10, Fri Jul 5 10:38:37 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 6285  no parentheses with name "Z" Line 6207  no parentheses with name "Z"
6207   0: a1   0: a1
6208   1: a1   1: a1
6209   2: a1   2: a1
6210  copy substring Z failed -7  get substring Z failed -7
6211    G a1 (2) A    G a1 (2) A
6212    
6213  /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
# Line 6317  No need char Line 6239  No need char
6239    G a (1) A    G a (1) A
6240      cd\GA      cd\GA
6241   0: cd   0: cd
6242  copy substring A failed -7  get substring A failed -7
6243    
6244  /^(?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
6245  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 6485  No need char Line 6407  No need char
6407   9:   9:
6408  10: Y  10: Y
6409    
 /\777/I  
 Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3  
   
6410  /\s*,\s*/IS  /\s*,\s*/IS
6411  Capturing subpattern count = 0  Capturing subpattern count = 0
6412  No options  No options
# Line 6620  Unknown newline type at: <bad> Line 6539  Unknown newline type at: <bad>
6539    
6540  /.*/I<lf>  /.*/I<lf>
6541  Capturing subpattern count = 0  Capturing subpattern count = 0
6542    May match empty string
6543  Options:  Options:
6544  Forced newline sequence: LF  Forced newline sequence: LF
6545  First char at start or follows newline  First char at start or follows newline
# Line 6661  Need char = 'f' Line 6581  Need char = 'f'
6581    
6582  +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I  +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
6583  Capturing subpattern count = 1  Capturing subpattern count = 1
6584    May match empty string
6585  No options  No options
6586  No first char  No first char
6587  No need char  No need char
6588     /* this is a C style comment */\M     /* this is a C style comment */\M
6589  Minimum match() limit = 120  Minimum match() limit = 120
6590  Minimum match() recursion limit = 35  Minimum match() recursion limit = 6
6591   0: /* this is a C style comment */   0: /* this is a C style comment */
6592   1: /* this is a C style comment */   1: /* this is a C style comment */
6593    
# Line 7548  Matched, but too many substrings Line 7469  Matched, but too many substrings
7469  /[^a]+a/BZi  /[^a]+a/BZi
7470  ------------------------------------------------------------------  ------------------------------------------------------------------
7471          Bra          Bra
7472       /i [^A]++       /i [^a]++
7473       /i a       /i a
7474          Ket          Ket
7475          End          End
# Line 7557  Matched, but too many substrings Line 7478  Matched, but too many substrings
7478  /[^a]+A/BZi  /[^a]+A/BZi
7479  ------------------------------------------------------------------  ------------------------------------------------------------------
7480          Bra          Bra
7481       /i [^A]++       /i [^a]++
7482       /i A       /i A
7483          Ket          Ket
7484          End          End
# Line 7827  Named capturing subpatterns: Line 7748  Named capturing subpatterns:
7748    one     1    one     1
7749    three   3    three   3
7750    two     2    two     2
7751    May match empty string
7752  Options: anchored caseless  Options: anchored caseless
7753  No first char  No first char
7754  No need char  No need char
# Line 7944  Options: extended Line 7866  Options: extended
7866  First char = 'x'  First char = 'x'
7867  Need char = 'z'  Need char = 'z'
7868    
 /(?(DEFINE) abc){3} xyz/x  
 Failed: repeating a DEFINE group is not allowed at offset 17  
   
7869  /(a|)*\d/  /(a|)*\d/
7870    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7871  No match  No match
# Line 8506  Failed: syntax error in subpattern name Line 8425  Failed: syntax error in subpattern name
8425   3: <unset>   3: <unset>
8426   4: x   4: x
8427    
 /[\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  
 ------------------------------------------------------------------  
   
8428  /\H++X/BZ  /\H++X/BZ
8429  ------------------------------------------------------------------  ------------------------------------------------------------------
8430          Bra          Bra
# Line 8757  No match Line 8616  No match
8616  ------------------------------------------------------------------  ------------------------------------------------------------------
8617    
8618  /\( (?: [^()]* | (?R) )* \)/x  /\( (?: [^()]* | (?R) )* \)/x
8619  (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8620   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8621    
8622  /[\E]AAA/  /[\E]AAA/
# Line 8939  Failed: number is too big at offset 19 Line 8798  Failed: number is too big at offset 19
8798  /\g6666666666/  /\g6666666666/
8799  Failed: number is too big at offset 11  Failed: number is too big at offset 11
8800    
8801  /[\g6666666666]/  /[\g6666666666]/BZ
8802  Failed: number is too big at offset 12  ------------------------------------------------------------------
8803            Bra
8804            [6g]
8805            Ket
8806            End
8807    ------------------------------------------------------------------
8808    
8809  /(?1)\c[/  /(?1)\c[/
8810  Failed: reference to non-existent subpattern at offset 3  Failed: reference to non-existent subpattern at offset 3
# Line 8963  No match Line 8827  No match
8827   1: \x0a   1: \x0a
8828    
8829  /a(*CR)b/  /a(*CR)b/
8830  Failed: (*VERB) not recognized at offset 5  Failed: (*VERB) not recognized or malformed at offset 5
8831    
8832  /(*CR)a.b/  /(*CR)a.b/
8833      a\nb      a\nb
# Line 9246  Failed: subpattern name expected at offs Line 9110  Failed: subpattern name expected at offs
9110  /\k{}/  /\k{}/
9111  Failed: subpattern name expected at offset 3  Failed: subpattern name expected at offset 3
9112    
9113    /\k/
9114    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2
9115    
9116    /\kabc/
9117    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5
9118    
9119  /(?P=)/  /(?P=)/
9120  Failed: subpattern name expected at offset 4  Failed: subpattern name expected at offset 4
9121    
# Line 9418  Starting byte set: x y z Line 9288  Starting byte set: x y z
9288    
9289  /(?(?=.*b)b|^)/CI  /(?(?=.*b)b|^)/CI
9290  Capturing subpattern count = 0  Capturing subpattern count = 0
9291    May match empty string
9292  Options:  Options:
9293  No first char  No first char
9294  No need char  No need char
# Line 9430  No need char Line 9301  No need char
9301   +7 ^ ^     b   +7 ^ ^     b
9302   +7 ^^      b   +7 ^^      b
9303   +7 ^       b   +7 ^       b
9304    +11 ^       ^
9305  +12 ^       )  +12 ^       )
9306  +13 ^  +13 ^
9307   0:   0:
# Line 9467  No options Line 9339  No options
9339  First char at start or follows newline  First char at start or follows newline
9340  No need char  No need char
9341    
 /a?|b?/P  
     abc  
  0: a  
     ** Failers  
  0:  
     ddd\N  
 No match: POSIX code 17: match failed  
   
9342  /xyz/C  /xyz/C
9343    xyz    xyz
9344  --->xyz  --->xyz
# Line 9568  No match Line 9432  No match
9432   +3 ^ ^      (?(?=[a])[^"])   +3 ^ ^      (?(?=[a])[^"])
9433   +5 ^ ^      (?=[a])   +5 ^ ^      (?=[a])
9434   +8 ^ ^      [a]   +8 ^ ^      [a]
9435    +17 ^ ^      |
9436  +21 ^ ^      "  +21 ^ ^      "
9437  +18 ^ ^      b  +18 ^ ^      b
9438  +19 ^  ^     )  +19 ^  ^     )
9439   +3 ^  ^     (?(?=[a])[^"])   +3 ^  ^     (?(?=[a])[^"])
9440   +5 ^  ^     (?=[a])   +5 ^  ^     (?=[a])
9441   +8 ^  ^     [a]   +8 ^  ^     [a]
9442    +17 ^  ^     |
9443  +21 ^  ^     "  +21 ^  ^     "
9444  +22 ^   ^    $  +22 ^   ^    $
9445  +23 ^   ^  +23 ^   ^
# Line 9869  Partial match: the cat Line 9735  Partial match: the cat
9735     abc\P\P     abc\P\P
9736   0: abc   0: abc
9737    
 /\w+A/P  
    CDAAAAB  
  0: CDAAAA  
   
 /\w+A/PU  
    CDAAAAB  
  0: CDA  
   
9738  /abc\K123/  /abc\K123/
9739      xyzabc123pqr      xyzabc123pqr
9740   0: 123   0: 123
# Line 9889  Partial match: abc12 Line 9747  Partial match: abc12
9747      xyzabc123pqr      xyzabc123pqr
9748   0: 123   0: 123
9749      xyzabc12\P      xyzabc12\P
9750  Partial match: abc12  Partial match at offset 6: abc12
9751      xyzabc12\P\P      xyzabc12\P\P
9752  Partial match: abc12  Partial match at offset 6: abc12
9753    
9754  /\babc\b/  /\babc\b/
9755      +++abc+++      +++abc+++
9756   0: abc   0: abc
9757      +++ab\P      +++ab\P
9758  Partial match: +ab  Partial match at offset 3: +ab
9759      +++ab\P\P      +++ab\P\P
9760  Partial match: +ab  Partial match at offset 3: +ab
9761    
9762  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
9763  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 10269  Need char = ':' Line 10127  Need char = ':'
10127  Subject length lower bound = 22  Subject length lower bound = 22
10128  No set of starting bytes  No set of starting bytes
10129    
 /  (?: [\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  
   
10130  /<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
10131  Capturing subpattern count = 11  Capturing subpattern count = 11
10132  Options: caseless dotall  Options: caseless dotall
# Line 10484  No set of starting bytes Line 10138  No set of starting bytes
10138  "(?>.*/)foo"SI  "(?>.*/)foo"SI
10139  Capturing subpattern count = 0  Capturing subpattern count = 0
10140  No options  No options
10141  First char at start or follows newline  No first char
10142  Need char = 'o'  Need char = 'o'
10143  Subject length lower bound = 4  Subject length lower bound = 4
10144  No set of starting bytes  No set of starting bytes
# Line 10727  Partial match: abca Line 10381  Partial match: abca
10381      xxxxabcde\P\P      xxxxabcde\P\P
10382  Partial match: abcde  Partial match: abcde
10383    
10384  /-- 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
10385      broken and not behaving as specified in that it *does* bumpalong after      broken and not behaving as specified in that it *does* bumpalong after
10386      hitting (*COMMIT). --/      hitting (*COMMIT). --/
10387    
# Line 10923  No match Line 10577  No match
10577          End          End
10578  ------------------------------------------------------------------  ------------------------------------------------------------------
10579    
10580  / -- 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  
10581       believe this to be a Perl bug. --/       believe this to be a Perl bug. --/
10582    
 /(?=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  
   
10583  /(?>a\Kb)z|(ab)/  /(?>a\Kb)z|(ab)/
10584      ab      ab
10585   0: ab   0: ab
10586   1: ab   1: ab
10587    
 /----------------------/  
   
10588  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/  /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10589  Failed: recursive call could loop indefinitely at offset 31  Failed: recursive call could loop indefinitely at offset 31
10590    
# Line 10970  Failed: an argument is not allowed for ( Line 10604  Failed: an argument is not allowed for (
10604      ACABX      ACABX
10605  No match  No match
10606    
10607  /--- 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
10608       is a bug in Perl. ---/       is a bug in Perl. ---/
10609    
10610  /A(*THEN)B|A(*THEN)C/K  /A(*THEN)B|A(*THEN)C/K
# Line 10981  No match Line 10615  No match
10615      AC      AC
10616  No match  No match
10617    
10618  /--- 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,
10619       11 because Perl doesn't seem to follow its specification entirely  though PCRE does. ---/
      correctly. ---/  
   
 /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is  
      not clear how Perl defines "involved in the failure of the match". ---/  
   
 /^(A(*THEN:A)B|C(*THEN:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match  
     CB  
 No match, mark = B  
   
 /--- Check the use of names for success and failure. PCRE doesn't show these  
 names for success, though Perl does, contrary to its spec. ---/  
   
 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match, mark = A  
     CB  
 No match, mark = B  
   
 /--- An empty name does not pass back an empty string. It is the same as if no  
 name were given. ---/  
   
 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
   
 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/  
   
 /A(*PRUNE:A)B/K  
     ACAB  
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KSS  
     C  
  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  
 No match  
   
 /(*MARK:A)(*THEN:B)(C|X)/KSS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/  
   
 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- Same --/  
   
 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This should fail; the SKIP advances by one, but when we get to AC, the  
      PRUNE kills it. ---/  
   
 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /A(*:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This should fail, as a null name is the same as no name ---/  
   
 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This fails in PCRE, and I think that is in accordance with Perl's  
      documentation, though in Perl it succeeds. ---/  
   
 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK  
     AAAC  
 No match  
   
 /--- Mark names can be duplicated ---/  
10620    
 /A(*:A)B|X(*:A)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XY  
 MK: A  
   
10621  /^A(*:A)B|^X(*:A)Y/K  /^A(*:A)B|^X(*:A)Y/K
10622      ** Failers      ** Failers
10623  No match  No match
10624      XAQQ      XAQQ
10625  No match, mark = A  No match, mark = A
10626    
 /--- 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  
   
10627  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10628  optimizations defeat this. So does the PCRE optimization unless we disable it  optimizations defeat this. So does the PCRE optimization unless we disable it
10629  with \Y. ---/  with \Y. ---/
# Line 11155  No match Line 10636  No match
10636      DEFGABC\Y      DEFGABC\Y
10637  No match  No match
10638    
10639  /--- Repeat some tests with added studying. ---/  /^(ab (c+(*THEN)cd) | xyz)/x
10640        abcccd
10641    No match
10642    
10643  /A(*COMMIT)B/+KS  /^(ab (c+(*PRUNE)cd) | xyz)/x
10644      ACABX      abcccd
 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  
10645  No match  No match
10646    
10647  /^(ab (c+(*FAIL)cd) | xyz)/x  /^(ab (c+(*FAIL)cd) | xyz)/x
10648      abcccd      abcccd
10649  No match  No match
10650    
10651  /--- Perl 5.11 gets some of these wrong ---/  /--- Perl gets some of these wrong ---/
10652    
10653  /(?>.(*ACCEPT))*?5/  /(?>.(*ACCEPT))*?5/
10654      abcde      abcde
# Line 11395  No match Line 10756  No match
10756  /\s*\R/BZ  /\s*\R/BZ
10757  ------------------------------------------------------------------  ------------------------------------------------------------------
10758          Bra          Bra
10759          \s*+          \s*
10760            \R
10761            Ket
10762            End
10763    ------------------------------------------------------------------
10764        \x20\x0a
10765     0:  \x0a
10766        \x20\x0d
10767     0:  \x0d
10768        \x20\x0d\x0a
10769     0:  \x0d\x0a
10770    
10771    /\S*\R/BZ
10772    ------------------------------------------------------------------
10773            Bra
10774            \S*+
10775          \R          \R
10776          Ket          Ket
10777          End          End
10778  ------------------------------------------------------------------  ------------------------------------------------------------------
10779        a\x0a
10780     0: a\x0a
10781    
10782  /-- Perl treats this one differently, not failing the second string. I believe  /X\h*\R/BZ
10783      that is a bug in Perl. --/  ------------------------------------------------------------------
10784            Bra
10785            X
10786            \h*+
10787            \R
10788            Ket
10789            End
10790    ------------------------------------------------------------------
10791        X\x20\x0a
10792     0: X \x0a
10793    
10794  /^((abc|abcx)(*THEN)y|abcd)/  /X\H*\R/BZ
10795      abcd  ------------------------------------------------------------------
10796   0: abcd          Bra
10797   1: abcd          X
10798      *** Failers          \H*
10799  No match          \R
10800      abcxy          Ket
10801            End
10802    ------------------------------------------------------------------
10803        X\x0d\x0a
10804     0: X\x0d\x0a
10805    
10806    /X\H+\R/BZ
10807    ------------------------------------------------------------------
10808            Bra
10809            X
10810            \H+
10811            \R
10812            Ket
10813            End
10814    ------------------------------------------------------------------
10815        X\x0d\x0a
10816     0: X\x0d\x0a
10817    
10818    /X\H++\R/BZ
10819    ------------------------------------------------------------------
10820            Bra
10821            X
10822            \H++
10823            \R
10824            Ket
10825            End
10826    ------------------------------------------------------------------
10827        X\x0d\x0a
10828  No match  No match
10829    
10830  /(?<=abc)def/  /(?<=abc)def/
10831      abc\P\P      abc\P\P
10832  Partial match: abc  Partial match at offset 3: abc
10833    
10834  /abc$/  /abc$/
10835      abc      abc
# Line 11662  No need char Line 11076  No need char
11076    
11077  /(^ab|^)+/I  /(^ab|^)+/I
11078  Capturing subpattern count = 1  Capturing subpattern count = 1
11079    May match empty string
11080  Options: anchored  Options: anchored
11081  No first char  No first char
11082  No need char  No need char
11083    
11084  /(^ab|^)++/I  /(^ab|^)++/I
11085  Capturing subpattern count = 1  Capturing subpattern count = 1
11086    May match empty string
11087  Options: anchored  Options: anchored
11088  No first char  No first char
11089  No need char  No need char
# Line 11686  No need char Line 11102  No need char
11102    
11103  /(?:^ab|^)+/I  /(?:^ab|^)+/I
11104  Capturing subpattern count = 0  Capturing subpattern count = 0
11105    May match empty string
11106  Options: anchored  Options: anchored
11107  No first char  No first char
11108  No need char  No need char
11109    
11110  /(?:^ab|^)++/I  /(?:^ab|^)++/I
11111  Capturing subpattern count = 0  Capturing subpattern count = 0
11112    May match empty string
11113  Options: anchored  Options: anchored
11114  No first char  No first char
11115  No need char  No need char
# Line 11710  Need char = 'b' Line 11128  Need char = 'b'
11128    
11129  /(.*ab|.*)+/I  /(.*ab|.*)+/I
11130  Capturing subpattern count = 1  Capturing subpattern count = 1
11131    May match empty string
11132  No options  No options
11133  First char at start or follows newline  First char at start or follows newline
11134  No need char  No need char
11135    
11136  /(.*ab|.*)++/I  /(.*ab|.*)++/I
11137  Capturing subpattern count = 1  Capturing subpattern count = 1
11138    May match empty string
11139  No options  No options
11140  First char at start or follows newline  First char at start or follows newline
11141  No need char  No need char
# Line 11734  Need char = 'b' Line 11154  Need char = 'b'
11154    
11155  /(?:.*ab|.*)+/I  /(?:.*ab|.*)+/I
11156  Capturing subpattern count = 0  Capturing subpattern count = 0
11157    May match empty string
11158  No options  No options
11159  First char at start or follows newline  First char at start or follows newline
11160  No need char  No need char
11161    
11162  /(?:.*ab|.*)++/I  /(?:.*ab|.*)++/I
11163  Capturing subpattern count = 0  Capturing subpattern count = 0
11164    May match empty string
11165  No options  No options
11166  First char at start or follows newline  First char at start or follows newline
11167  No need char  No need char
# Line 11816  No match Line 11238  No match
11238    
11239  /^.*?(?(?=a)a|b(*THEN)c)/  /^.*?(?(?=a)a|b(*THEN)c)/
11240      ba      ba
11241   0: ba  No match
11242    
11243  /^.*?(?(?=a)a|bc)/  /^.*?(?(?=a)a|bc)/
11244      ba      ba
11245   0: ba   0: ba
11246    
11247    /^.*?(?(?=a)a(*THEN)b|c)/
11248        ac
11249    No match
11250    
11251    /^.*?(?(?=a)a(*THEN)b)c/
11252        ac
11253    No match
11254    
11255    /^.*?(a(*THEN)b)c/
11256        aabc
11257    No match
11258    
11259    /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
11260        aabc
11261     0: aabc
11262    
11263    /^.*?(a(*THEN)b|z)c/
11264        aabc
11265     0: aabc
11266     1: ab
11267    
11268    /^.*?(z|a(*THEN)b)c/
11269        aabc
11270     0: aabc
11271     1: ab
11272    
11273  /-- --/  /-- --/
11274    
11275  /-- 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 11281  No match
11281   1: C   1: C
11282  MK: A  MK: A
11283      D      D
11284  No match  No match, mark = A
11285    
11286  /(*:A)A+(*SKIP:A)(B|Z)/KS  /(*:A)A+(*SKIP:A)(B|Z)/KS
11287      AAAC      AAAC
11288  No match  No match, mark = A
11289    
11290  /-- --/  /-- --/
11291    
# Line 11866  No match Line 11314  No match
11314   1: a   1: a
11315   1+ a%   1+ a%
11316    
11317  /(a)b|ac/++  /(a)b|ac/++SS
11318      ac\O3      ac\O3
 Matched, but too many substrings  
11319   0: ac   0: ac
11320   0+   0+
11321    
11322    /(a)(b)x|abc/++
11323         abc\O6
11324     0: abc
11325     0+
11326    
11327    /(a)bc|(a)(b)\2/
11328        \O3abc
11329    Matched, but too many substrings
11330     0: abc
11331        \O4abc
11332    Matched, but too many substrings
11333     0: abc
11334    
11335  /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI  /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
11336  Capturing subpattern count = 2  Capturing subpattern count = 2
# Line 11907  No set of starting bytes Line 11367  No set of starting bytes
11367  /^(?>a)++/  /^(?>a)++/
11368      aa\M      aa\M
11369  Minimum match() limit = 5  Minimum match() limit = 5
11370  Minimum match() recursion limit = 3  Minimum match() recursion limit = 2
11371   0: aa   0: aa
11372      aaaaaaaaa\M      aaaaaaaaa\M
11373  Minimum match() limit = 12  Minimum match() limit = 12
11374  Minimum match() recursion limit = 3  Minimum match() recursion limit = 2
11375   0: aaaaaaaaa   0: aaaaaaaaa
11376    
11377  /(a)(?1)++/  /(a)(?1)++/
11378      aa\M      aa\M
11379  Minimum match() limit = 7  Minimum match() limit = 7
11380  Minimum match() recursion limit = 5  Minimum match() recursion limit = 4
11381   0: aa   0: aa
11382   1: a   1: a
11383      aaaaaaaaa\M      aaaaaaaaa\M
11384  Minimum match() limit = 21  Minimum match() limit = 21
11385  Minimum match() recursion limit = 5  Minimum match() recursion limit = 4
11386   0: aaaaaaaaa   0: aaaaaaaaa
11387   1: a   1: a
11388    
11389    /(?:(foo)|(bar)|(baz))X/SS=
11390        bazfooX
11391     0: fooX
11392     1: foo
11393     2: <unset>
11394     3: <unset>
11395        foobazbarX
11396     0: barX
11397     1: <unset>
11398     2: bar
11399     3: <unset>
11400        barfooX
11401     0: fooX
11402     1: foo
11403     2: <unset>
11404     3: <unset>
11405        bazX
11406     0: bazX
11407     1: <unset>
11408     2: <unset>
11409     3: baz
11410        foobarbazX
11411     0: bazX
11412     1: <unset>
11413     2: <unset>
11414     3: baz
11415        bazfooX\O0
11416    Matched, but too many substrings
11417        bazfooX\O2
11418    Matched, but too many substrings
11419     0: fooX
11420        bazfooX\O4
11421    Matched, but too many substrings
11422     0: fooX
11423     1: <unset>
11424        bazfooX\O6
11425    Matched, but too many substrings
11426     0: fooX
11427     1: foo
11428     2: <unset>
11429        bazfooX\O8
11430    Matched, but too many substrings
11431     0: fooX
11432     1: foo
11433     2: <unset>
11434     3: <unset>
11435        bazfooX\O10
11436     0: fooX
11437     1: foo
11438     2: <unset>
11439     3: <unset>
11440    
11441    /(?=abc){3}abc/BZ
11442    ------------------------------------------------------------------
11443            Bra
11444            Assert
11445            abc
11446            Ket
11447            abc
11448            Ket
11449            End
11450    ------------------------------------------------------------------
11451    
11452    /(?=abc)+abc/BZ
11453    ------------------------------------------------------------------
11454            Bra
11455            Assert
11456            abc
11457            Ket
11458            abc
11459            Ket
11460            End
11461    ------------------------------------------------------------------
11462    
11463    /(?=abc)++abc/BZ
11464    ------------------------------------------------------------------
11465            Bra
11466            Assert
11467            abc
11468            Ket
11469            abc
11470            Ket
11471            End
11472    ------------------------------------------------------------------
11473    
11474    /(?=abc){0}xyz/BZ
11475    ------------------------------------------------------------------
11476            Bra
11477            Skip zero
11478            Assert
11479            abc
11480            Ket
11481            xyz
11482            Ket
11483            End
11484    ------------------------------------------------------------------
11485    
11486    /(?=(a))?./BZ
11487    ------------------------------------------------------------------
11488            Bra
11489            Brazero
11490            Assert
11491            CBra 1
11492            a
11493            Ket
11494            Ket
11495            Any
11496            Ket
11497            End
11498    ------------------------------------------------------------------
11499    
11500    /(?=(a))??./BZ
11501    ------------------------------------------------------------------
11502            Bra
11503            Braminzero
11504            Assert
11505            CBra 1
11506            a
11507            Ket
11508            Ket
11509            Any
11510            Ket
11511            End
11512    ------------------------------------------------------------------
11513    
11514    /^(?=(a)){0}b(?1)/BZ
11515    ------------------------------------------------------------------
11516            Bra
11517            ^
11518            Skip zero
11519            Assert
11520            CBra 1
11521            a
11522            Ket
11523            Ket
11524            b
11525            Recurse
11526            Ket
11527            End
11528    ------------------------------------------------------------------
11529    
11530    /(?(DEFINE)(a))?b(?1)/BZ
11531    ------------------------------------------------------------------
11532            Bra
11533            Cond
11534            Cond def
11535            CBra 1
11536            a
11537            Ket
11538            Ket
11539            b
11540            Recurse
11541            Ket
11542            End
11543    ------------------------------------------------------------------
11544    
11545    /^(?=(?1))?[az]([abc])d/BZ
11546    ------------------------------------------------------------------
11547            Bra
11548            ^
11549            Brazero
11550            Assert
11551            Recurse
11552            Ket
11553            [az]
11554            CBra 1
11555            [a-c]
11556            Ket
11557            d
11558            Ket
11559            End
11560    ------------------------------------------------------------------
11561    
11562    /^(?!a){0}\w+/BZ
11563    ------------------------------------------------------------------
11564            Bra
11565            ^
11566            Skip zero
11567            Assert not
11568            a
11569            Ket
11570            \w+
11571            Ket
11572            End
11573    ------------------------------------------------------------------
11574    
11575    /(?<=(abc))?xyz/BZ
11576    ------------------------------------------------------------------
11577            Bra
11578            Brazero
11579            AssertB
11580            Reverse
11581            CBra 1
11582            abc
11583            Ket
11584            Ket
11585            xyz
11586            Ket
11587            End
11588    ------------------------------------------------------------------
11589    
11590    /[:a[:abc]b:]/BZ
11591    ------------------------------------------------------------------
11592            Bra
11593            [:[a-c]
11594            b:]
11595            Ket
11596            End
11597    ------------------------------------------------------------------
11598    
11599    /((?2))((?1))/SS
11600        abc
11601    Error -26 (nested recursion at the same subject position)
11602    
11603    /((?(R2)a+|(?1)b))/SS
11604        aaaabcde
11605    Error -26 (nested recursion at the same subject position)
11606    
11607    /(?(R)a*(?1)|((?R))b)/SS
11608        aaaabcde
11609    Error -26 (nested recursion at the same subject position)
11610    
11611    /(a+|(?R)b)/
11612    Failed: recursive call could loop indefinitely at offset 7
11613    
11614    /^(a(*:A)(d|e(*:B))z|aeq)/C
11615        adz
11616    --->adz
11617     +0 ^       ^
11618     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11619     +2 ^       a
11620     +3 ^^      (*:A)
11621     +8 ^^      (d|e(*:B))
11622    Latest Mark: A
11623     +9 ^^      d
11624    +10 ^ ^     |
11625    +18 ^ ^     z
11626    +19 ^  ^    |
11627    +24 ^  ^
11628     0: adz
11629     1: adz
11630     2: d
11631        aez
11632    --->aez
11633     +0 ^       ^
11634     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11635     +2 ^       a
11636     +3 ^^      (*:A)
11637     +8 ^^      (d|e(*:B))
11638    Latest Mark: A
11639     +9 ^^      d
11640    +11 ^^      e
11641    +12 ^ ^     (*:B)
11642    +17 ^ ^     )
11643    Latest Mark: B
11644    +18 ^ ^     z
11645    +19 ^  ^    |
11646    +24 ^  ^
11647     0: aez
11648     1: aez
11649     2: e
11650        aeqwerty
11651    --->aeqwerty
11652     +0 ^            ^
11653     +1 ^            (a(*:A)(d|e(*:B))z|aeq)
11654     +2 ^            a
11655     +3 ^^           (*:A)
11656     +8 ^^           (d|e(*:B))
11657    Latest Mark: A
11658     +9 ^^           d
11659    +11 ^^           e
11660    +12 ^ ^          (*:B)
11661    +17 ^ ^          )
11662    Latest Mark: B
11663    +18 ^ ^          z
11664    +20 ^            a
11665    +21 ^^           e
11666    +22 ^ ^          q
11667    +23 ^  ^         )
11668    +24 ^  ^
11669     0: aeq
11670     1: aeq
11671    
11672    /.(*F)/
11673        \P\Pabc
11674    No match
11675    
11676    /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
11677    Capturing subpattern count = 0
11678    Max lookbehind = 1
11679    No options
11680    First char = 't'
11681    Need char = 't'
11682    Subject length lower bound = 18
11683    No set of starting bytes
11684    
11685    /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
11686    Capturing subpattern count = 0
11687    Max lookbehind = 1
11688    No options
11689    No first char
11690    No need char
11691    Subject length lower bound = 8
11692    Starting byte set: < o t u
11693    
11694    /a(*SKIP)c|b(*ACCEPT)|/+S!I
11695    Capturing subpattern count = 0
11696    May match empty string
11697    No options
11698    No first char
11699    No need char
11700    Subject length lower bound = -1
11701    No set of starting bytes
11702        a
11703     0:
11704     0+
11705    
11706    /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
11707    Capturing subpattern count = 0
11708    No options
11709    No first char
11710    No need char
11711    Subject length lower bound = -1
11712    Starting byte set: a b x
11713        ax
11714     0: x
11715    
11716    'a*(*ACCEPT)b'+
11717        \N\N
11718    No match
11719        abc\N\N
11720     0: a
11721     0+ bc
11722        bbb\N\N
11723     0:
11724     0+ bb
11725    
11726    /(*ACCEPT)a/+I
11727    Capturing subpattern count = 0
11728    No options
11729    No first char
11730    No need char
11731        bax
11732     0:
11733     0+ bax
11734    
11735    /z(*ACCEPT)a/+I
11736    Capturing subpattern count = 0
11737    No options
11738    First char = 'z'
11739    No need char
11740        baxzbx
11741     0: z
11742     0+ bx
11743    
11744    /a(?:.)*?a/ims
11745        \Mabbbbbbbbbbbbbbbbbbbbba
11746    Minimum match() limit = 65
11747    Minimum match() recursion limit = 2
11748     0: abbbbbbbbbbbbbbbbbbbbba
11749    
11750    /a(?:.(*THEN))*?a/ims
11751        \Mabbbbbbbbbbbbbbbbbbbbba
11752    Minimum match() limit = 86
11753    Minimum match() recursion limit = 45
11754     0: abbbbbbbbbbbbbbbbbbbbba
11755    
11756    /a(?:.(*THEN:ABC))*?a/ims
11757        \Mabbbbbbbbbbbbbbbbbbbbba
11758    Minimum match() limit = 86
11759    Minimum match() recursion limit = 45
11760     0: abbbbbbbbbbbbbbbbbbbbba
11761    
11762    /^(?>a+)(?>(z+))\w/BZ
11763    ------------------------------------------------------------------
11764            Bra
11765            ^
11766            Once_NC
11767            a+
11768            Ket
11769            Once
11770            CBra 1
11771            z+
11772            Ket
11773            Ket
11774            \w
11775            Ket
11776            End
11777    ------------------------------------------------------------------
11778        aaaazzzzb
11779     0: aaaazzzzb
11780     1: zzzz
11781        ** Failers
11782    No match
11783        aazz
11784    No match
11785    
11786    /(.)(\1|a(?2))/
11787        bab
11788     0: bab
11789     1: b
11790     2: ab
11791    
11792    /\1|(.)(?R)\1/
11793        cbbbc
11794     0: cbbbc
11795     1: c
11796    
11797    /(.)((?(1)c|a)|a(?2))/
11798        baa
11799    No match
11800    
11801    /(?P<abn>(?P=abn)xxx)/BZ
11802    ------------------------------------------------------------------
11803            Bra
11804            Once
11805            CBra 1
11806            \1
11807            xxx
11808            Ket
11809            Ket
11810            Ket
11811            End
11812    ------------------------------------------------------------------
11813    
11814    /(a\1z)/BZ
11815    ------------------------------------------------------------------
11816            Bra
11817            Once
11818            CBra 1
11819            a
11820            \1
11821            z
11822            Ket
11823            Ket
11824            Ket
11825            End
11826    ------------------------------------------------------------------
11827    
11828    /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
11829         \Maabbccddee
11830    Minimum match() limit = 12
11831    Minimum match() recursion limit = 3
11832     0: aabbccddee
11833    
11834    /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
11835         \Maabbccddee
11836    Minimum match() limit = 22
11837    Minimum match() recursion limit = 21
11838     0: aabbccddee
11839     1: aa
11840     2: bb
11841     3: cc
11842     4: dd
11843     5: ee
11844    
11845    /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
11846         \Maabbccddee
11847    Minimum match() limit = 18
11848    Minimum match() recursion limit = 13
11849     0: aabbccddee
11850     1: aa
11851     2: cc
11852     3: ee
11853    
11854    /^a\x41z/<JS>
11855        aAz
11856     0: aAz
11857        *** Failers
11858    No match
11859        ax41z
11860    No match
11861    
11862    /^a[m\x41]z/<JS>
11863        aAz
11864     0: aAz
11865    
11866    /^a\x1z/<JS>
11867        ax1z
11868     0: ax1z
11869    
11870    /^a\u0041z/<JS>
11871        aAz
11872     0: aAz
11873        *** Failers
11874    No match
11875        au0041z
11876    No match
11877    
11878    /^a[m\u0041]z/<JS>
11879        aAz
11880     0: aAz
11881    
11882    /^a\u041z/<JS>
11883        au041z
11884     0: au041z
11885        *** Failers
11886    No match
11887        aAz
11888    No match
11889    
11890    /^a\U0041z/<JS>
11891        aU0041z
11892     0: aU0041z
11893        *** Failers
11894    No match
11895        aAz
11896    No match
11897    
11898    /(?(?=c)c|d)++Y/BZ
11899    ------------------------------------------------------------------
11900            Bra
11901            BraPos
11902            Cond
11903            Assert
11904            c
11905            Ket
11906            c
11907            Alt
11908            d
11909            Ket
11910            KetRpos
11911            Y
11912            Ket
11913            End
11914    ------------------------------------------------------------------
11915    
11916    /(?(?=c)c|d)*+Y/BZ
11917    ------------------------------------------------------------------
11918            Bra
11919            Braposzero
11920            BraPos
11921            Cond
11922            Assert
11923            c
11924            Ket
11925            c
11926            Alt
11927            d
11928            Ket
11929            KetRpos
11930            Y
11931            Ket
11932            End
11933    ------------------------------------------------------------------
11934    
11935    /a[\NB]c/
11936    Failed: \N is not supported in a class at offset 3
11937    
11938    /a[B-\Nc]/
11939    Failed: \N is not supported in a class at offset 5
11940    
11941    /(a)(?2){0,1999}?(b)/
11942    
11943    /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
11944    
11945    /--- This test, with something more complicated than individual letters, causes
11946    different behaviour in Perl. Perhaps it disables some optimization; no tag is
11947    passed back for the failures, whereas in PCRE there is a tag. ---/
11948    
11949    /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
11950        AABC
11951     0: AB
11952     1: A
11953     2: B
11954    MK: A
11955        XXYZ
11956     0: XXY
11957     1: <unset>
11958     2: <unset>
11959     3: X
11960     4: X
11961     5: Y
11962    MK: B
11963        ** Failers
11964    No match
11965        XAQQ
11966    No match, mark = A
11967        XAQQXZZ
11968    No match, mark = A
11969        AXQQQ
11970    No match, mark = A
11971        AXXQQQ
11972    No match, mark = B
11973    
11974    /-- Perl doesn't give marks for these, though it does if the alternatives are
11975    replaced by single letters. --/
11976    
11977    /(b|q)(*:m)f|a(*:n)w/K
11978        aw
11979     0: aw
11980    MK: n
11981        ** Failers
11982    No match, mark = n
11983        abc
11984    No match, mark = m
11985    
11986    /(q|b)(*:m)f|a(*:n)w/K
11987        aw
11988     0: aw
11989    MK: n
11990        ** Failers
11991    No match, mark = n
11992        abc
11993    No match, mark = m
11994    
11995    /-- After a partial match, the behaviour is as for a failure. --/
11996    
11997    /^a(*:X)bcde/K
11998       abc\P
11999    Partial match, mark=X: abc
12000    
12001    /-- These are here because Perl doesn't return a mark, except for the first --/
12002    
12003    /(?=(*:x))(q|)/K+
12004        abc
12005     0:
12006     0+ abc
12007     1:
12008    MK: x
12009    
12010    /(?=(*:x))((*:y)q|)/K+
12011        abc
12012     0:
12013     0+ abc
12014     1:
12015    MK: x
12016    
12017    /(?=(*:x))(?:(*:y)q|)/K+
12018        abc
12019     0:
12020     0+ abc
12021    MK: x
12022    
12023    /(?=(*:x))(?>(*:y)q|)/K+
12024        abc
12025     0:
12026     0+ abc
12027    MK: x
12028    
12029    /(?=a(*:x))(?!a(*:y)c)/K+
12030        ab
12031     0:
12032     0+ ab
12033    MK: x
12034    
12035    /(?=a(*:x))(?=a(*:y)c|)/K+
12036        ab
12037     0:
12038     0+ ab
12039    MK: x
12040    
12041    /(..)\1/
12042        ab\P
12043    Partial match: ab
12044        aba\P
12045    Partial match: aba
12046        abab\P
12047     0: abab
12048     1: ab
12049    
12050    /(..)\1/i
12051        ab\P
12052    Partial match: ab
12053        abA\P
12054    Partial match: abA
12055        aBAb\P
12056     0: aBAb
12057     1: aB
12058    
12059    /(..)\1{2,}/
12060        ab\P
12061    Partial match: ab
12062        aba\P
12063    Partial match: aba
12064        abab\P
12065    Partial match: abab
12066        ababa\P
12067    Partial match: ababa
12068        ababab\P
12069     0: ababab
12070     1: ab
12071        ababab\P\P
12072    Partial match: ababab
12073        abababa\P
12074     0: ababab
12075     1: ab
12076        abababa\P\P
12077    Partial match: abababa
12078    
12079    /(..)\1{2,}/i
12080        ab\P
12081    Partial match: ab
12082        aBa\P
12083    Partial match: aBa
12084        aBAb\P
12085    Partial match: aBAb
12086        AbaBA\P
12087    Partial match: AbaBA
12088        abABAb\P
12089     0: abABAb
12090     1: ab
12091        aBAbaB\P\P
12092    Partial match: aBAbaB
12093        abABabA\P
12094     0: abABab
12095     1: ab
12096        abaBABa\P\P
12097    Partial match: abaBABa
12098    
12099    /(..)\1{2,}?x/i
12100        ab\P
12101    Partial match: ab
12102        abA\P
12103    Partial match: abA
12104        aBAb\P
12105    Partial match: aBAb
12106        abaBA\P
12107    Partial match: abaBA
12108        abAbaB\P
12109    Partial match: abAbaB
12110        abaBabA\P
12111    Partial match: abaBabA
12112        abAbABaBx\P
12113     0: abAbABaBx
12114     1: ab
12115    
12116    /^(..)\1/
12117        aba\P
12118    Partial match: aba
12119    
12120    /^(..)\1{2,3}x/
12121        aba\P
12122    Partial match: aba
12123        ababa\P
12124    Partial match: ababa
12125        ababa\P\P
12126    Partial match: ababa
12127        abababx
12128     0: abababx
12129     1: ab
12130        ababababx
12131     0: ababababx
12132     1: ab
12133    
12134    /^(..)\1{2,3}?x/
12135        aba\P
12136    Partial match: aba
12137        ababa\P
12138    Partial match: ababa
12139        ababa\P\P
12140    Partial match: ababa
12141        abababx
12142     0: abababx
12143     1: ab
12144        ababababx
12145     0: ababababx
12146     1: ab
12147    
12148    /^(..)(\1{2,3})ab/
12149        abababab
12150     0: abababab
12151     1: ab
12152     2: abab
12153    
12154    /^\R/
12155        \r\P
12156     0: \x0d
12157        \r\P\P
12158    Partial match: \x0d
12159    
12160    /^\R{2,3}x/
12161        \r\P
12162    Partial match: \x0d
12163        \r\P\P
12164    Partial match: \x0d
12165        \r\r\P
12166    Partial match: \x0d\x0d
12167        \r\r\P\P
12168    Partial match: \x0d\x0d
12169        \r\r\r\P
12170    Partial match: \x0d\x0d\x0d
12171        \r\r\r\P\P
12172    Partial match: \x0d\x0d\x0d
12173        \r\rx
12174     0: \x0d\x0dx
12175        \r\r\rx
12176     0: \x0d\x0d\x0dx
12177    
12178    /^\R{2,3}?x/
12179        \r\P
12180    Partial match: \x0d
12181        \r\P\P
12182    Partial match: \x0d
12183        \r\r\P
12184    Partial match: \x0d\x0d
12185        \r\r\P\P
12186    Partial match: \x0d\x0d
12187        \r\r\r\P
12188    Partial match: \x0d\x0d\x0d
12189        \r\r\r\P\P
12190    Partial match: \x0d\x0d\x0d
12191        \r\rx
12192     0: \x0d\x0dx
12193        \r\r\rx
12194     0: \x0d\x0d\x0dx
12195    
12196    /^\R?x/
12197        \r\P
12198    Partial match: \x0d
12199        \r\P\P
12200    Partial match: \x0d
12201        x
12202     0: x
12203        \rx
12204     0: \x0dx
12205    
12206    /^\R+x/
12207        \r\P
12208    Partial match: \x0d
12209        \r\P\P
12210    Partial match: \x0d
12211        \r\n\P
12212    Partial match: \x0d\x0a
12213        \r\n\P\P
12214    Partial match: \x0d\x0a
12215        \rx
12216     0: \x0dx
12217    
12218    /^a$/<CRLF>
12219        a\r\P
12220    Partial match: a\x0d
12221        a\r\P\P
12222    Partial match: a\x0d
12223    
12224    /^a$/m<CRLF>
12225        a\r\P
12226    Partial match: a\x0d
12227        a\r\P\P
12228    Partial match: a\x0d
12229    
12230    /^(a$|a\r)/<CRLF>
12231        a\r\P
12232     0: a\x0d
12233     1: a\x0d
12234        a\r\P\P
12235    Partial match: a\x0d
12236    
12237    /^(a$|a\r)/m<CRLF>
12238        a\r\P
12239     0: a\x0d
12240     1: a\x0d
12241        a\r\P\P
12242    Partial match: a\x0d
12243    
12244    /./<CRLF>
12245        \r\P
12246     0: \x0d
12247        \r\P\P
12248    Partial match: \x0d
12249    
12250    /.{2,3}/<CRLF>
12251        \r\P
12252    Partial match: \x0d
12253        \r\P\P
12254    Partial match: \x0d
12255        \r\r\P
12256     0: \x0d\x0d
12257        \r\r\P\P
12258    Partial match: \x0d\x0d
12259        \r\r\r\P
12260     0: \x0d\x0d\x0d
12261        \r\r\r\P\P
12262    Partial match: \x0d\x0d\x0d
12263    
12264    /.{2,3}?/<CRLF>
12265        \r\P
12266    Partial match: \x0d
12267        \r\P\P
12268    Partial match: \x0d
12269        \r\r\P
12270     0: \x0d\x0d
12271        \r\r\P\P
12272    Partial match: \x0d\x0d
12273        \r\r\r\P
12274     0: \x0d\x0d
12275        \r\r\r\P\P
12276     0: \x0d\x0d
12277    
12278    "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
12279        ABCDGHI\O03
12280    Matched, but too many substrings
12281     0: ABCD
12282    
12283    /-- These are all run as real matches in test 1; here we are just checking the
12284    settings of the anchored and startline bits. --/
12285    
12286    /(?>.*?a)(?<=ba)/I
12287    Capturing subpattern count = 0
12288    Max lookbehind = 2
12289    No options
12290    No first char
12291    Need char = 'a'
12292    
12293    /(?:.*?a)(?<=ba)/I
12294    Capturing subpattern count = 0
12295    Max lookbehind = 2
12296    No options
12297    First char at start or follows newline
12298    Need char = 'a'
12299    
12300    /.*?a(*PRUNE)b/I
12301    Capturing subpattern count = 0
12302    No options
12303    No first char
12304    Need char = 'b'
12305    
12306    /.*?a(*PRUNE)b/sI
12307    Capturing subpattern count = 0
12308    Options: dotall
12309    No first char
12310    Need char = 'b'
12311    
12312    /^a(*PRUNE)b/sI
12313    Capturing subpattern count = 0
12314    Options: anchored dotall
12315    No first char
12316    No need char
12317    
12318    /.*?a(*SKIP)b/I
12319    Capturing subpattern count = 0
12320    No options
12321    No first char
12322    Need char = 'b'
12323    
12324    /(?>.*?a)b/sI
12325    Capturing subpattern count = 0
12326    Options: dotall
12327    No first char
12328    Need char = 'b'
12329    
12330    /(?>.*?a)b/I
12331    Capturing subpattern count = 0
12332    No options
12333    No first char
12334    Need char = 'b'
12335    
12336    /(?>^a)b/sI
12337    Capturing subpattern count = 0
12338    Options: anchored dotall
12339    No first char
12340    No need char
12341    
12342    /(?>.*?)(?<=(abcd)|(wxyz))/I
12343    Capturing subpattern count = 2
12344    Max lookbehind = 4
12345    May match empty string
12346    No options
12347    No first char
12348    No need char
12349    
12350    /(?>.*)(?<=(abcd)|(wxyz))/I
12351    Capturing subpattern count = 2
12352    Max lookbehind = 4
12353    May match empty string
12354    No options
12355    No first char
12356    No need char
12357    
12358    "(?>.*)foo"I
12359    Capturing subpattern count = 0
12360    No options
12361    No first char
12362    Need char = 'o'
12363    
12364    "(?>.*?)foo"I
12365    Capturing subpattern count = 0
12366    No options
12367    No first char
12368    Need char = 'o'
12369    
12370    /(?>^abc)/mI
12371    Capturing subpattern count = 0
12372    Options: multiline
12373    First char at start or follows newline
12374    Need char = 'c'
12375    
12376    /(?>.*abc)/mI
12377    Capturing subpattern count = 0
12378    Options: multiline
12379    No first char
12380    Need char = 'c'
12381    
12382    /(?:.*abc)/mI
12383    Capturing subpattern count = 0
12384    Options: multiline
12385    First char at start or follows newline
12386    Need char = 'c'
12387    
12388    /-- Check PCRE_STUDY_EXTRA_NEEDED --/
12389    
12390    /.?/S-I
12391    Capturing subpattern count = 0
12392    May match empty string
12393    No options
12394    No first char
12395    No need char
12396    Study returned NULL
12397    
12398    /.?/S!I
12399    Capturing subpattern count = 0
12400    May match empty string
12401    No options
12402    No first char
12403    No need char
12404    Subject length lower bound = -1
12405    No set of starting bytes
12406    
12407    /(?:(a)+(?C1)bb|aa(?C2)b)/
12408        aab\C+
12409    Callout 1: last capture = 1
12410     0: <unset>
12411     1: a
12412    --->aab
12413        ^ ^     b
12414    Callout 1: last capture = 1
12415     0: <unset>
12416     1: a
12417    --->aab
12418        ^^      b
12419    Callout 2: last capture = -1
12420     0: <unset>
12421    --->aab
12422        ^ ^     b
12423     0: aab
12424    
12425    /(?:(a)++(?C1)bb|aa(?C2)b)/
12426        aab\C+
12427    Callout 1: last capture = 1
12428     0: <unset>
12429     1: a
12430    --->aab
12431        ^ ^     b
12432    Callout 2: last capture = -1
12433     0: <unset>
12434    --->aab
12435        ^ ^     b
12436     0: aab
12437    
12438    /(?:(?>(a))(?C1)bb|aa(?C2)b)/
12439        aab\C+
12440    Callout 1: last capture = 1
12441     0: <unset>
12442     1: a
12443    --->aab
12444        ^^      b
12445    Callout 2: last capture = -1
12446     0: <unset>
12447    --->aab
12448        ^ ^     b
12449     0: aab
12450    
12451    /(?:(?1)(?C1)x|ab(?C2))((a)){0}/
12452        aab\C+
12453    Callout 1: last capture = -1
12454     0: <unset>
12455    --->aab
12456        ^^      x
12457    Callout 1: last capture = -1
12458     0: <unset>
12459    --->aab
12460         ^^     x
12461    Callout 2: last capture = -1
12462     0: <unset>
12463    --->aab
12464         ^ ^    )
12465     0: ab
12466    
12467    /(?1)(?C1)((a)(?C2)){0}/
12468        aab\C+
12469    Callout 2: last capture = 2
12470     0: <unset>
12471     1: <unset>
12472     2: a
12473    --->aab
12474        ^^      )
12475    Callout 1: last capture = -1
12476     0: <unset>
12477    --->aab
12478        ^^      ((a)(?C2)){0}
12479     0: a
12480    
12481    /(?:(a)+(?C1)bb|aa(?C2)b)++/
12482        aab\C+
12483    Callout 1: last capture = 1
12484     0: <unset>
12485     1: a
12486    --->aab
12487        ^ ^     b
12488    Callout 1: last capture = 1
12489     0: <unset>
12490     1: a
12491    --->aab
12492        ^^      b
12493    Callout 2: last capture = -1
12494     0: <unset>
12495    --->aab
12496        ^ ^     b
12497     0: aab
12498        aab\C+\O2
12499    Callout 1: last capture = 1
12500     0: <unset>
12501    --->aab
12502        ^ ^     b
12503    Callout 1: last capture = 1
12504     0: <unset>
12505    --->aab
12506        ^^      b
12507    Callout 2: last capture = -1
12508     0: <unset>
12509    --->aab
12510        ^ ^     b
12511     0: aab
12512    
12513    /(ab)x|ab/
12514        ab\O3
12515     0: ab
12516        ab\O2
12517     0: ab
12518    
12519    /(ab)/
12520        ab\O3
12521    Matched, but too many substrings
12522     0: ab
12523        ab\O2
12524    Matched, but too many substrings
12525     0: ab
12526    
12527    /(?<=123)(*MARK:xx)abc/K
12528        xxxx123a\P\P
12529    Partial match at offset 7, mark=xx: 123a
12530        xxxx123a\P
12531    Partial match at offset 7, mark=xx: 123a
12532    
12533    /123\Kabc/
12534        xxxx123a\P\P
12535    Partial match: 123a
12536        xxxx123a\P
12537    Partial match: 123a
12538    
12539    /^(?(?=a)aa|bb)/C
12540        bb
12541    --->bb
12542     +0 ^      ^
12543     +1 ^      (?(?=a)aa|bb)
12544     +3 ^      (?=a)
12545     +6 ^      a
12546    +11 ^      b
12547    +12 ^^     b
12548    +13 ^ ^    )
12549    +14 ^ ^
12550     0: bb
12551    
12552    /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
12553        bb
12554    --->bb
12555      1 ^      ^
12556      2 ^      (?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))
12557     99 ^      (?=(?C3)a(?C4))
12558      3 ^      a
12559      8 ^      b
12560      9 ^^     b
12561     10 ^ ^    )
12562     11 ^ ^
12563     0: bb
12564    
12565    /-- Perl seems to have a bug with this one --/
12566    
12567    /aaaaa(*COMMIT)(*PRUNE)b|a+c/
12568        aaaaaac
12569     0: aaaac
12570    
12571    /-- Here are some that Perl treats differently because of the way it handles
12572    backtracking verbs. --/
12573    
12574     /(?!a(*COMMIT)b)ac|ad/
12575         ac
12576     0: ac
12577         ad
12578     0: ad
12579    
12580    /^(?!a(*THEN)b|ac)../
12581         ac
12582    No match
12583         ad
12584     0: ad
12585    
12586    /^(?=a(*THEN)b|ac)/
12587        ac
12588     0:
12589    
12590    /\A.*?(?:a|b(*THEN)c)/
12591        ba
12592     0: ba
12593    
12594    /\A.*?(?:a|b(*THEN)c)++/
12595        ba
12596     0: ba
12597    
12598    /\A.*?(?:a|b(*THEN)c|d)/
12599        ba
12600     0: ba
12601    
12602    /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
12603        aac
12604     0: aac
12605    
12606    /\A.*?(a|b(*THEN)c)/
12607        ba
12608     0: ba
12609     1: a
12610    
12611    /^(A(*THEN)B|A(*THEN)D)/
12612        AD
12613     0: AD
12614     1: AD
12615    
12616    /(?!b(*THEN)a)bn|bnn/
12617        bnn
12618     0: bn
12619    
12620    /(?(?=b(*SKIP)a)bn|bnn)/
12621        bnn
12622    No match
12623    
12624    /(?=b(*THEN)a|)bn|bnn/
12625        bnn
12626     0: bn
12627    
12628    /-------------------------/
12629    
12630    /(*LIMIT_MATCH=12bc)abc/
12631    Failed: (*VERB) not recognized or malformed at offset 7
12632    
12633    /(*LIMIT_MATCH=4294967290)abc/
12634    Failed: (*VERB) not recognized or malformed at offset 7
12635    
12636    /(*LIMIT_RECURSION=4294967280)abc/I
12637    Capturing subpattern count = 0
12638    Recursion limit = 4294967280
12639    No options
12640    First char = 'a'
12641    Need char = 'c'
12642    
12643    /(a+)*zz/
12644        aaaaaaaaaaaaaz
12645    No match
12646        aaaaaaaaaaaaaz\q3000
12647    Error -8 (match limit exceeded)
12648    
12649    /(a+)*zz/S-
12650        aaaaaaaaaaaaaz\Q10
12651    Error -21 (recursion limit exceeded)
12652    
12653    /(*LIMIT_MATCH=3000)(a+)*zz/I
12654    Capturing subpattern count = 1
12655    Match limit = 3000
12656    No options
12657    No first char
12658    Need char = 'z'
12659        aaaaaaaaaaaaaz
12660    Error -8 (match limit exceeded)
12661        aaaaaaaaaaaaaz\q60000
12662    Error -8 (match limit exceeded)
12663    
12664    /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
12665    Capturing subpattern count = 1
12666    Match limit = 3000
12667    No options
12668    No first char
12669    Need char = 'z'
12670        aaaaaaaaaaaaaz
12671    Error -8 (match limit exceeded)
12672    
12673    /(*LIMIT_MATCH=60000)(a+)*zz/I
12674    Capturing subpattern count = 1
12675    Match limit = 60000
12676    No options
12677    No first char
12678    Need char = 'z'
12679        aaaaaaaaaaaaaz
12680    No match
12681        aaaaaaaaaaaaaz\q3000
12682    Error -8 (match limit exceeded)
12683    
12684    /(*LIMIT_RECURSION=10)(a+)*zz/IS-
12685    Capturing subpattern count = 1
12686    Recursion limit = 10
12687    No options
12688    No first char
12689    Need char = 'z'
12690    Subject length lower bound = 2
12691    Starting byte set: a z
12692        aaaaaaaaaaaaaz
12693    Error -21 (recursion limit exceeded)
12694        aaaaaaaaaaaaaz\Q1000
12695    Error -21 (recursion limit exceeded)
12696    
12697    /(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/IS-
12698    Capturing subpattern count = 1
12699    Recursion limit = 10
12700    No options
12701    No first char
12702    Need char = 'z'
12703    Subject length lower bound = 2
12704    Starting byte set: a z
12705        aaaaaaaaaaaaaz
12706    Error -21 (recursion limit exceeded)
12707    
12708    /(*LIMIT_RECURSION=1000)(a+)*zz/IS-
12709    Capturing subpattern count = 1
12710    Recursion limit = 1000
12711    No options
12712    No first char
12713    Need char = 'z'
12714    Subject length lower bound = 2
12715    Starting byte set: a z
12716        aaaaaaaaaaaaaz
12717    No match
12718        aaaaaaaaaaaaaz\Q10
12719    Error -21 (recursion limit exceeded)
12720    
12721  /-- End of testinput2 --/  /-- End of testinput2 --/

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

  ViewVC Help
Powered by ViewVC 1.1.5