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

Diff of /code/trunk/testdata/testinput2

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

revision 81 by nigel, Sat Feb 24 21:40:59 2007 UTC revision 651 by ph10, Mon Aug 1 16:32:40 2011 UTC
# Line 1  Line 1 
1  /(a)b|/  /-- This set of tests is not Perl-compatible. It checks on special features
2        of PCRE's API, error diagnostics, and the compiled code of some patterns.
3        It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4        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
6        bug. --/
7    
8    /-- Originally, the Perl >= 5.10 things were in here too, but now I have
9        separated many (most?) of them out into test 11. However, there may still
10        be some that were overlooked. --/
11    
12  /abc/  /(a)b|/I
13    
14    /abc/I
15      abc      abc
16      defabc      defabc
17      \Aabc      \Aabc
# Line 8  Line 19 
19      \Adefabc      \Adefabc
20      ABC      ABC
21    
22  /^abc/  /^abc/I
23      abc      abc
24      \Aabc      \Aabc
25      *** Failers      *** Failers
26      defabc      defabc
27      \Adefabc      \Adefabc
28    
29  /a+bc/  /a+bc/I
30    
31  /a*bc/  /a*bc/I
32    
33  /a{3}bc/  /a{3}bc/I
34    
35  /(abc|a+z)/  /(abc|a+z)/I
36    
37  /^abc$/  /^abc$/I
38      abc      abc
39      *** Failers      *** Failers
40      def\nabc      def\nabc
41    
42  /ab\gdef/X  /ab\idef/X
43    
44  /(?X)ab\gdef/X  /(?X)ab\idef/X
45    
46  /x{5,4}/  /x{5,4}/
47    
# Line 40  Line 51 
51    
52  /(?X)[\B]/  /(?X)[\B]/
53    
54    /(?X)[\R]/
55    
56    /(?X)[\X]/
57    
58    /[\B]/BZ
59    
60    /[\R]/BZ
61    
62    /[\X]/BZ
63    
64  /[z-a]/  /[z-a]/
65    
66  /^*/  /^*/
# Line 50  Line 71 
71    
72  /(?z)abc/  /(?z)abc/
73    
74  /.*b/  /.*b/I
75    
76  /.*?b/  /.*?b/I
77    
78  /cat|dog|elephant/  /cat|dog|elephant/I
79      this sentence eventually mentions a cat      this sentence eventually mentions a cat
80      this sentences rambles on and on for a while and then reaches elephant      this sentences rambles on and on for a while and then reaches elephant
81    
82  /cat|dog|elephant/S  /cat|dog|elephant/IS
83      this sentence eventually mentions a cat      this sentence eventually mentions a cat
84      this sentences rambles on and on for a while and then reaches elephant      this sentences rambles on and on for a while and then reaches elephant
85    
86  /cat|dog|elephant/iS  /cat|dog|elephant/IiS
87      this sentence eventually mentions a CAT cat      this sentence eventually mentions a CAT cat
88      this sentences rambles on and on for a while to elephant ElePhant      this sentences rambles on and on for a while to elephant ElePhant
89    
90  /a|[bcd]/S  /a|[bcd]/IS
91    
92  /(a|[^\dZ])/S  /(a|[^\dZ])/IS
93    
94  /(a|b)*[\s]/S  /(a|b)*[\s]/IS
95    
96  /(ab\2)/  /(ab\2)/
97    
98  /{4,5}abc/  /{4,5}abc/
99    
100  /(a)(b)(c)\2/  /(a)(b)(c)\2/I
101      abcb      abcb
102      \O0abcb      \O0abcb
103      \O3abcb      \O3abcb
104      \O6abcb      \O6abcb
105      \O9abcb      \O9abcb
106      \O12abcb      \O12abcb
107    
108  /(a)bc|(a)(b)\2/  /(a)bc|(a)(b)\2/I
109      abc      abc
110      \O0abc      \O0abc
111      \O3abc      \O3abc
# Line 96  Line 117 
117      \O9aba      \O9aba
118      \O12aba      \O12aba
119    
120  /abc$/E  /abc$/IE
121      abc      abc
122      *** Failers      *** Failers
123      abc\n      abc\n
# Line 104  Line 125 
125    
126  /(a)(b)(c)(d)(e)\6/  /(a)(b)(c)(d)(e)\6/
127    
128  /the quick brown fox/  /the quick brown fox/I
129      the quick brown fox      the quick brown fox
130      this is a line with the quick brown fox      this is a line with the quick brown fox
131    
132  /the quick brown fox/A  /the quick brown fox/IA
133      the quick brown fox      the quick brown fox
134      *** Failers      *** Failers
135      this is a line with the quick brown fox      this is a line with the quick brown fox
136    
137  /ab(?z)cd/  /ab(?z)cd/
138    
139  /^abc|def/  /^abc|def/I
140      abcdef      abcdef
141      abcdef\B      abcdef\B
142    
143  /.*((abc)$|(def))/  /.*((abc)$|(def))/I
144      defabc      defabc
145      \Zdefabc      \Zdefabc
146    
147  /abc/P  /abc/P
148      abc      abc
149      *** Failers      *** Failers
150    
151  /^abc|def/P  /^abc|def/P
152      abcdef      abcdef
153      abcdef\B      abcdef\B
# Line 134  Line 155 
155  /.*((abc)$|(def))/P  /.*((abc)$|(def))/P
156      defabc      defabc
157      \Zdefabc      \Zdefabc
158    
159  /the quick brown fox/P  /the quick brown fox/P
160      the quick brown fox      the quick brown fox
161      *** Failers      *** Failers
162      The Quick Brown Fox      The Quick Brown Fox
163    
164  /the quick brown fox/Pi  /the quick brown fox/Pi
165      the quick brown fox      the quick brown fox
166      The Quick Brown Fox      The Quick Brown Fox
167    
168  /abc.def/P  /abc.def/P
169      *** Failers      *** Failers
170      abc\ndef      abc\ndef
171    
172  /abc$/P  /abc$/P
173      abc      abc
174      abc\n      abc\n
175    
176  /(abc)\2/P  /(abc)\2/P
177    
# Line 161  Line 182 
182    
183  /a[]b/  /a[]b/
184    
185  /[^aeiou ]{3,}/  /[^aeiou ]{3,}/I
186      co-processors, and for      co-processors, and for
187    
188  /<.*>/  /<.*>/I
189      abc<def>ghi<klm>nop      abc<def>ghi<klm>nop
190    
191  /<.*?>/  /<.*?>/I
192      abc<def>ghi<klm>nop      abc<def>ghi<klm>nop
193    
194  /<.*>/U  /<.*>/IU
195      abc<def>ghi<klm>nop      abc<def>ghi<klm>nop
196    
197  /(?U)<.*>/  /(?U)<.*>/I
198      abc<def>ghi<klm>nop      abc<def>ghi<klm>nop
199    
200  /<.*?>/U  /<.*?>/IU
201      abc<def>ghi<klm>nop      abc<def>ghi<klm>nop
202    
203  /={3,}/U  /={3,}/IU
204      abc========def      abc========def
205    
206  /(?U)={3,}?/  /(?U)={3,}?/I
207      abc========def      abc========def
208    
209  /(?<!bar|cattle)foo/  /(?<!bar|cattle)foo/I
210      foo      foo
211      catfoo      catfoo
212      *** Failers      *** Failers
213      the barfoo      the barfoo
214      and cattlefoo      and cattlefoo
215    
216  /(?<=a+)b/  /(?<=a+)b/
217    
# Line 198  Line 219 
219    
220  /(?<!(foo)a\1)bar/  /(?<!(foo)a\1)bar/
221    
222  /(?i)abc/  /(?i)abc/I
223    
224  /(a|(?m)a)/  /(a|(?m)a)/I
225    
226  /(?i)^1234/  /(?i)^1234/I
227    
228  /(^b|(?i)^d)/  /(^b|(?i)^d)/I
229    
230  /(?s).*/  /(?s).*/I
231    
232  /[abcd]/S  /[abcd]/IS
233    
234  /(?i)[abcd]/S  /(?i)[abcd]/IS
235    
236  /(?m)[xy]|(b|c)/S  /(?m)[xy]|(b|c)/IS
237    
238  /(^a|^b)/m  /(^a|^b)/Im
239    
240  /(?i)(^a|^b)/m  /(?i)(^a|^b)/Im
241    
242  /(a)(?(1)a|b|c)/  /(a)(?(1)a|b|c)/
243    
# Line 224  Line 245 
245    
246  /(?(1a)/  /(?(1a)/
247    
248    /(?(1a))/
249    
250  /(?(?i))/  /(?(?i))/
251    
252  /(?(abc))/  /(?(abc))/
253    
254  /(?(?<ab))/  /(?(?<ab))/
255    
256  /((?s)blah)\s+\1/  /((?s)blah)\s+\1/I
257    
258  /((?i)blah)\s+\1/  /((?i)blah)\s+\1/I
259    
260  /((?i)b)/DS  /((?i)b)/IDZS
261    
262  /(a*b|(?i:c*(?-i)d))/S  /(a*b|(?i:c*(?-i)d))/IS
263    
264  /a$/  /a$/I
265      a      a
266      a\n      a\n
267      *** Failers      *** Failers
268      \Za      \Za
269      \Za\n      \Za\n
270    
271  /a$/m  /a$/Im
272      a      a
273      a\n      a\n
274      \Za\n      \Za\n
275      *** Failers      *** Failers
276      \Za      \Za
   
 /\Aabc/m  
277    
278  /^abc/m  /\Aabc/Im
279    
280    /^abc/Im
281    
282  /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/  /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
283    aaaaabbbbbcccccdef    aaaaabbbbbcccccdef
284    
285  /(?<=foo)[ab]/S  /(?<=foo)[ab]/IS
286    
287  /(?<!foo)(alpha|omega)/S  /(?<!foo)(alpha|omega)/IS
288    
289  /(?!alphabet)[ab]/S  /(?!alphabet)[ab]/IS
290    
291  /(?<=foo\n)^bar/m  /(?<=foo\n)^bar/Im
292      foo\nbarbar      foo\nbarbar
293      ***Failers      ***Failers
294      rhubarb      rhubarb
295      barbell      barbell
296      abc\nbarton      abc\nbarton
297    
298  /^(?<=foo\n)bar/m  /^(?<=foo\n)bar/Im
299      foo\nbarbar      foo\nbarbar
300      ***Failers      ***Failers
301      rhubarb      rhubarb
302      barbell      barbell
303      abc\nbarton      abc\nbarton
304    
305  /(?>^abc)/m  /(?>^abc)/Im
306      abc      abc
307      def\nabc      def\nabc
308      *** Failers      *** Failers
309      defabc      defabc
310    
311  /(?<=ab(c+)d)ef/  /(?<=ab(c+)d)ef/
312    
# Line 293  Line 316 
316    
317  /The next three are in testinput2 because they have variable length branches/  /The next three are in testinput2 because they have variable length branches/
318    
319  /(?<=bullock|donkey)-cart/  /(?<=bullock|donkey)-cart/I
320      the bullock-cart      the bullock-cart
321      a donkey-cart race      a donkey-cart race
322      *** Failers      *** Failers
323      cart      cart
324      horse-and-cart      horse-and-cart
   
 /(?<=ab(?i)x|y|z)/  
325    
326  /(?>.*)(?<=(abcd)|(xyz))/  /(?<=ab(?i)x|y|z)/I
327    
328    /(?>.*)(?<=(abcd)|(xyz))/I
329      alphabetabcd      alphabetabcd
330      endingxyz      endingxyz
331    
332  /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/  /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
333      abxyZZ      abxyZZ
334      abXyZZ      abXyZZ
335      ZZZ      ZZZ
336      zZZ      zZZ
337      bZZ      bZZ
338      BZZ      BZZ
339      *** Failers      *** Failers
340      ZZ      ZZ
341      abXYZZ      abXYZZ
342      zzz      zzz
343      bzz      bzz
344    
345  /(?<!(foo)a)bar/  /(?<!(foo)a)bar/I
346      bar      bar
347      foobbar      foobbar
348      *** Failers      *** Failers
349      fooabar      fooabar
350    
351  /This one is here because Perl 5.005_02 doesn't fail it/  /This one is here because Perl 5.005_02 doesn't fail it/I
352    
353  /^(a)?(?(1)a|b)+$/  /^(a)?(?(1)a|b)+$/I
354      *** Failers      *** Failers
355      a      a
356    
357  /This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/  /This one is here because Perl behaves differently; see also the following/I
358    
359  /^(a\1?){4}$/  /^(a\1?){4}$/I
360        aaaa
361      aaaaaa      aaaaaa
362    
363  /These are syntax tests from Perl 5.005/  /Perl does not fail these two for the final subjects. Neither did PCRE until/
364    /release 8.01. The problem is in backtracking into a subpattern that contains/
365    /a recursive reference to itself. PCRE has now made these into atomic patterns./
366    
367    /^(xa|=?\1a){2}$/
368        xa=xaa
369        ** Failers
370        xa=xaaa
371    
372    /^(xa|=?\1a)+$/
373        xa=xaa
374        ** Failers
375        xa=xaaa
376    
377    /These are syntax tests from Perl 5.005/I
378    
379  /a[b-a]/  /a[b-a]/
380    
# Line 362  Line 400 
400    
401  /(a)|\2/  /(a)|\2/
402    
403  /a[b-a]/i  /a[b-a]/Ii
404    
405  /a[]b/i  /a[]b/Ii
406    
407  /a[/i  /a[/Ii
408    
409  /*a/i  /*a/Ii
410    
411  /(*)b/i  /(*)b/Ii
412    
413  /abc)/i  /abc)/Ii
414    
415  /(abc/i  /(abc/Ii
416    
417  /a**/i  /a**/Ii
418    
419  /)(/i  /)(/Ii
420    
421  /:(?:/  /:(?:/
422    
# Line 396  Line 434 
434    
435  /(?(1?)a|b)/  /(?(1?)a|b)/
436    
 /(?(1)a|b|c)/  
   
437  /[a[:xyz:/  /[a[:xyz:/
438    
439  /(?<=x+)y/  /(?<=x+)y/
# Line 410  Line 446 
446    
447  /abc/\i  /abc/\i
448    
449  /(a)bc(d)/  /(a)bc(d)/I
450      abcd      abcd
451      abcd\C2      abcd\C2
452      abcd\C5      abcd\C5
453    
454  /(.{20})/  /(.{20})/I
455      abcdefghijklmnopqrstuvwxyz      abcdefghijklmnopqrstuvwxyz
456      abcdefghijklmnopqrstuvwxyz\C1      abcdefghijklmnopqrstuvwxyz\C1
457      abcdefghijklmnopqrstuvwxyz\G1      abcdefghijklmnopqrstuvwxyz\G1
458    
459  /(.{15})/  /(.{15})/I
460      abcdefghijklmnopqrstuvwxyz      abcdefghijklmnopqrstuvwxyz
461      abcdefghijklmnopqrstuvwxyz\C1\G1      abcdefghijklmnopqrstuvwxyz\C1\G1
462    
463  /(.{16})/  /(.{16})/I
464      abcdefghijklmnopqrstuvwxyz      abcdefghijklmnopqrstuvwxyz
465      abcdefghijklmnopqrstuvwxyz\C1\G1\L      abcdefghijklmnopqrstuvwxyz\C1\G1\L
   
 /^(a|(bc))de(f)/  
     adef\G1\G2\G3\G4\L  
     bcdef\G1\G2\G3\G4\L  
     adefghijk\C0  
   
 /^abc\00def/  
     abc\00def\L\C0  
   
 /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+  
 )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+  
 )?)?)?)?)?)?)?)?)?otherword/M  
466    
467  /.*X/D  /^(a|(bc))de(f)/I
468        adef\G1\G2\G3\G4\L
469        bcdef\G1\G2\G3\G4\L
470        adefghijk\C0
471    
472  /.*X/Ds  /^abc\00def/I
473        abc\00def\L\C0
474    
475  /(.*X|^B)/D  /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
476    )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
477    )?)?)?)?)?)?)?)?)?otherword/I
478    
479  /(.*X|^B)/Ds  /.*X/IDZ
480    
481  /(?s)(.*X|^B)/D  /.*X/IDZs
482    
483    /(.*X|^B)/IDZ
484    
485    /(.*X|^B)/IDZs
486    
487    /(?s)(.*X|^B)/IDZ
488    
489  /(?s:.*X|^B)/D  /(?s:.*X|^B)/IDZ
490    
491  /\Biss\B/+  /\Biss\B/I+
492      Mississippi      Mississippi
493    
494  /\Biss\B/+P  /\Biss\B/I+P
495      Mississippi      Mississippi
496    
497  /iss/G+  /iss/IG+
498      Mississippi      Mississippi
499    
500  /\Biss\B/G+  /\Biss\B/IG+
501      Mississippi      Mississippi
502    
503  /\Biss\B/g+  /\Biss\B/Ig+
504      Mississippi      Mississippi
505      *** Failers      *** Failers
506      Mississippi\A      Mississippi\A
507    
508  /(?<=[Ms])iss/g+  /(?<=[Ms])iss/Ig+
509      Mississippi      Mississippi
510    
511  /(?<=[Ms])iss/G+  /(?<=[Ms])iss/IG+
512      Mississippi      Mississippi
513    
514  /^iss/g+  /^iss/Ig+
515      ississippi      ississippi
   
 /.*iss/g+  
     abciss\nxyzisspqr  
516    
517  /.i./+g  /.*iss/Ig+
518        abciss\nxyzisspqr
519    
520    /.i./I+g
521      Mississippi      Mississippi
522      Mississippi\A      Mississippi\A
523      Missouri river      Missouri river
524      Missouri river\A      Missouri river\A
525    
526  /^.is/+g  /^.is/I+g
527      Mississippi      Mississippi
528    
529  /^ab\n/g+  /^ab\n/Ig+
530      ab\nab\ncd      ab\nab\ncd
531    
532  /^ab\n/mg+  /^ab\n/Img+
533      ab\nab\ncd      ab\nab\ncd
534    
535  /abc/  /abc/I
536    
537  /abc|bac/  /abc|bac/I
538    
539  /(abc|bac)/  /(abc|bac)/I
540    
541  /(abc|(c|dc))/  /(abc|(c|dc))/I
542    
543  /(abc|(d|de)c)/  /(abc|(d|de)c)/I
544    
545  /a*/  /a*/I
546    
547  /a+/  /a+/I
548    
549  /(baa|a+)/  /(baa|a+)/I
550    
551  /a{0,3}/  /a{0,3}/I
552    
553  /baa{3,}/  /baa{3,}/I
554    
555  /"([^\\"]+|\\.)*"/  /"([^\\"]+|\\.)*"/I
556    
557  /(abc|ab[cd])/  /(abc|ab[cd])/I
558    
559  /(a|.)/  /(a|.)/I
560    
561  /a|ba|\w/  /a|ba|\w/I
562    
563  /abc(?=pqr)/  /abc(?=pqr)/I
564    
565  /...(?<=abc)/  /...(?<=abc)/I
566    
567  /abc(?!pqr)/  /abc(?!pqr)/I
568    
569  /ab./  /ab./I
570    
571  /ab[xyz]/  /ab[xyz]/I
572    
573  /abc*/  /abc*/I
574    
575  /ab.c*/  /ab.c*/I
576    
577  /a.c*/  /a.c*/I
578    
579  /.c*/  /.c*/I
580    
581  /ac*/  /ac*/I
582    
583  /(a.c*|b.c*)/  /(a.c*|b.c*)/I
584    
585  /a.c*|aba/  /a.c*|aba/I
586    
587  /.+a/  /.+a/I
588    
589  /(?=abcda)a.*/  /(?=abcda)a.*/I
590    
591  /(?=a)a.*/  /(?=a)a.*/I
592    
593  /a(b)*/  /a(b)*/I
594    
595  /a\d*/  /a\d*/I
596    
597  /ab\d*/  /ab\d*/I
598    
599  /a(\d)*/  /a(\d)*/I
600    
601  /abcde{0,0}/  /abcde{0,0}/I
602    
603  /ab\d+/  /ab\d+/I
604    
605  /a(?(1)b)/  /a(?(1)b)(.)/I
606    
607  /a(?(1)bag|big)/  /a(?(1)bag|big)(.)/I
608    
609  /a(?(1)bag|big)*/  /a(?(1)bag|big)*(.)/I
610    
611  /a(?(1)bag|big)+/  /a(?(1)bag|big)+(.)/I
612    
613  /a(?(1)b..|b..)/  /a(?(1)b..|b..)(.)/I
614    
615  /ab\d{0}e/  /ab\d{0}e/I
616    
617  /a?b?/  /a?b?/I
618      a      a
619      b      b
620      ab      ab
621      \      \
622      *** Failers      *** Failers
623      \N      \N
624    
625  /|-/  /|-/I
626      abcd      abcd
627      -abc      -abc
628      \Nab-c      \Nab-c
629      *** Failers      *** Failers
630      \Nabc      \Nabc
631    
632  /a*(b+)(z)(z)/P  /a*(b+)(z)(z)/P
633      aaaabbbbzzzz      aaaabbbbzzzz
# Line 601  Line 637 
637      aaaabbbbzzzz\O3      aaaabbbbzzzz\O3
638      aaaabbbbzzzz\O4      aaaabbbbzzzz\O4
639      aaaabbbbzzzz\O5      aaaabbbbzzzz\O5
640    
641  /^.?abcd/S  /^.?abcd/IS
642    
643  /\(             # ( at start  /\(             # ( at start
644    (?:           # Non-capturing bracket    (?:           # Non-capturing bracket
# Line 611  Line 647 
647    (?R)          # Recurse - i.e. nested bracketed string    (?R)          # Recurse - i.e. nested bracketed string
648    )*            # Zero or more contents    )*            # Zero or more contents
649    \)            # Closing )    \)            # Closing )
650    /x    /Ix
651      (abcd)      (abcd)
652      (abcd)xyz      (abcd)xyz
653      xyz(abcd)      xyz(abcd)
654      (ab(xy)cd)pqr      (ab(xy)cd)pqr
655      (ab(xycd)pqr      (ab(xycd)pqr
656      () abc ()      () abc ()
657      12(abcde(fsh)xyz(foo(bar))lmno)89      12(abcde(fsh)xyz(foo(bar))lmno)89
658      *** Failers      *** Failers
659      abcd      abcd
660      abcd)      abcd)
661      (abcd      (abcd
662    
663  /\(  ( (?>[^()]+) | (?R) )* \) /xg  /\(  ( (?>[^()]+) | (?R) )* \) /Ixg
664      (ab(xy)cd)pqr      (ab(xy)cd)pqr
665      1(abcd)(x(y)z)pqr      1(abcd)(x(y)z)pqr
666    
667  /\(  (?: (?>[^()]+) | (?R) ) \) /x  /\(  (?: (?>[^()]+) | (?R) ) \) /Ix
668      (abcd)      (abcd)
669      (ab(xy)cd)      (ab(xy)cd)
670      (a(b(c)d)e)      (a(b(c)d)e)
671      ((ab))      ((ab))
672      *** Failers      *** Failers
673      ()      ()
674    
675  /\(  (?: (?>[^()]+) | (?R) )? \) /x  /\(  (?: (?>[^()]+) | (?R) )? \) /Ix
676      ()      ()
677      12(abcde(fsh)xyz(foo(bar))lmno)89      12(abcde(fsh)xyz(foo(bar))lmno)89
678    
679  /\(  ( (?>[^()]+) | (?R) )* \) /x  /\(  ( (?>[^()]+) | (?R) )* \) /Ix
680      (ab(xy)cd)      (ab(xy)cd)
681    
682  /\( ( ( (?>[^()]+) | (?R) )* ) \) /x  /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
683      (ab(xy)cd)      (ab(xy)cd)
684    
685  /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /x  /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
686      (ab(xy)cd)      (ab(xy)cd)
687      (123ab(xy)cd)      (123ab(xy)cd)
688    
689  /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /x  /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
690      (ab(xy)cd)      (ab(xy)cd)
691      (123ab(xy)cd)      (123ab(xy)cd)
692    
693  /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /x  /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
694      (ab(xy)cd)      (ab(xy)cd)
695    
696  /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /x  /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
697      (abcd(xyz<p>qrs)123)      (abcd(xyz<p>qrs)123)
698    
699  /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /x  /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
700      (ab(cd)ef)      (ab(cd)ef)
701      (ab(cd(ef)gh)ij)      (ab(cd(ef)gh)ij)
702    
703  /^[[:alnum:]]/D  /^[[:alnum:]]/DZ
704    
705    /^[[:^alnum:]]/DZ
706    
707    /^[[:alpha:]]/DZ
708    
709    /^[[:^alpha:]]/DZ
710    
711  /^[[:^alnum:]]/D  /[_[:alpha:]]/IS
712    
713  /^[[:alpha:]]/D  /^[[:ascii:]]/DZ
714    
715  /^[[:^alpha:]]/D  /^[[:^ascii:]]/DZ
   
 /^[[:ascii:]]/D  
716    
717  /^[[:^ascii:]]/D  /^[[:blank:]]/DZ
718    
719  /^[[:blank:]]/D  /^[[:^blank:]]/DZ
720    
721  /^[[:cntrl:]]/D  /[\n\x0b\x0c\x0d[:blank:]]/IS
722    
723  /^[[:digit:]]/D  /^[[:cntrl:]]/DZ
724    
725  /^[[:graph:]]/D  /^[[:digit:]]/DZ
726    
727  /^[[:lower:]]/D  /^[[:graph:]]/DZ
728    
729  /^[[:print:]]/D  /^[[:lower:]]/DZ
730    
731  /^[[:punct:]]/D  /^[[:print:]]/DZ
732    
733  /^[[:space:]]/D  /^[[:punct:]]/DZ
734    
735  /^[[:upper:]]/D  /^[[:space:]]/DZ
736    
737  /^[[:xdigit:]]/D  /^[[:upper:]]/DZ
738    
739  /^[[:word:]]/D  /^[[:xdigit:]]/DZ
740    
741  /^[[:^cntrl:]]/D  /^[[:word:]]/DZ
742    
743  /^[12[:^digit:]]/D  /^[[:^cntrl:]]/DZ
744    
745  /^[[:^blank:]]/D  /^[12[:^digit:]]/DZ
746    
747  /[01[:alpha:]%]/D  /^[[:^blank:]]/DZ
748    
749  /[[.ch.]]/  /[01[:alpha:]%]/DZ
750    
751  /[[=ch=]]/  /[[.ch.]]/I
752    
753  /[[:rhubarb:]]/  /[[=ch=]]/I
754    
755  /[[:upper:]]/i  /[[:rhubarb:]]/I
756    
757    /[[:upper:]]/Ii
758      A      A
759      a      a
760    
761  /[[:lower:]]/i  /[[:lower:]]/Ii
762      A      A
763      a      a
764    
765  /((?-i)[[:lower:]])[[:lower:]]/i  /((?-i)[[:lower:]])[[:lower:]]/Ii
766      ab      ab
767      aB      aB
768      *** Failers      *** Failers
769      Ab      Ab
770      AB      AB
771    
772  /[\200-\410]/  /[\200-\110]/I
773    
774  /^(?(0)f|b)oo/  /^(?(0)f|b)oo/I
775    
776  /This one's here because of the large output vector needed/  /This one's here because of the large output vector needed/I
777    
778  /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/  /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I
779      \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC      \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC
780    
781  /This one's here because Perl does this differently and PCRE can't at present/  /This one's here because Perl does this differently and PCRE can't at present/I
782    
783  /(main(O)?)+/  /(main(O)?)+/I
784      mainmain      mainmain
785      mainOmain      mainOmain
   
 /These are all cases where Perl does it differently (nested captures)/  
786    
787  /^(a(b)?)+$/  /These are all cases where Perl does it differently (nested captures)/I
788    
789    /^(a(b)?)+$/I
790      aba      aba
   
 /^(aa(bb)?)+$/  
     aabbaa  
   
 /^(aa|aa(bb))+$/  
     aabbaa  
   
 /^(aa(bb)??)+$/  
     aabbaa  
   
 /^(?:aa(bb)?)+$/  
     aabbaa  
   
 /^(aa(b(b))?)+$/  
     aabbaa  
791    
792  /^(?:aa(b(b))?)+$/  /^(aa(bb)?)+$/I
793      aabbaa      aabbaa
794    
795  /^(?:aa(b(?:b))?)+$/  /^(aa|aa(bb))+$/I
796      aabbaa      aabbaa
797    
798  /^(?:aa(bb(?:b))?)+$/  /^(aa(bb)??)+$/I
799      aabbbaa      aabbaa
   
 /^(?:aa(b(?:bb))?)+$/  
     aabbbaa  
800    
801  /^(?:aa(?:b(b))?)+$/  /^(?:aa(bb)?)+$/I
802      aabbaa      aabbaa
803    
804  /^(?:aa(?:b(bb))?)+$/  /^(aa(b(b))?)+$/I
805      aabbbaa      aabbaa
806    
807  /^(aa(b(bb))?)+$/  /^(?:aa(b(b))?)+$/I
808      aabbbaa      aabbaa
809    
810  /^(aa(bb(bb))?)+$/  /^(?:aa(b(?:b))?)+$/I
811      aabbbbaa      aabbaa
812    
813  /--------------------------------------------------------------------/  /^(?:aa(bb(?:b))?)+$/I
814        aabbbaa
815  /#/xMD  
816    /^(?:aa(b(?:bb))?)+$/I
817        aabbbaa
818    
819    /^(?:aa(?:b(b))?)+$/I
820        aabbaa
821    
822    /^(?:aa(?:b(bb))?)+$/I
823        aabbbaa
824    
825    /^(aa(b(bb))?)+$/I
826        aabbbaa
827    
828    /^(aa(bb(bb))?)+$/I
829        aabbbbaa
830    
831    /--------------------------------------------------------------------/I
832    
833  /a#/xMD  /#/IxDZ
834    
835  /[\s]/D  /a#/IxDZ
836    
837  /[\S]/D  /[\s]/DZ
838    
839  /a(?i)b/D  /[\S]/DZ
840    
841    /a(?i)b/DZ
842      ab      ab
843      aB      aB
844      *** Failers      *** Failers
845      AB      AB
846    
847  /(a(?i)b)/D  /(a(?i)b)/DZ
848      ab      ab
849      aB      aB
850      *** Failers      *** Failers
851      AB      AB
852    
853  /   (?i)abc/xD  /   (?i)abc/IxDZ
854    
855  /#this is a comment  /#this is a comment
856    (?i)abc/xD    (?i)abc/IxDZ
857    
858  /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/D  /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
859    
860  /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/D  /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
861    
862  /\Q\E/D  /\Q\E/DZ
863      \      \
864    
865  /\Q\Ex/D  /\Q\Ex/DZ
866    
867  / \Q\E/D  / \Q\E/DZ
868    
869  /a\Q\E/D  /a\Q\E/DZ
870    abc    abc
871    bca    bca
872    bac    bac
873    
874  /a\Q\Eb/D  /a\Q\Eb/DZ
875    abc    abc
876    
877  /\Q\Eabc/D  /\Q\Eabc/DZ
878    
879  /x*+\w/D  /x*+\w/DZ
880      *** Failers      *** Failers
881      xxxxx      xxxxx
   
 /x?+/D  
882    
883  /x++/D  /x?+/DZ
884    
885  /x{1,3}+/D  /x++/DZ
886    
887  /(x)*+/D  /x{1,3}+/DZ
888    
889  /^(\w++|\s++)*$/  /(x)*+/DZ
890    
891    /^(\w++|\s++)*$/I
892      now is the time for all good men to come to the aid of the party      now is the time for all good men to come to the aid of the party
893      *** Failers      *** Failers
894      this is not a line with only words and spaces!      this is not a line with only words and spaces!
895    
896  /(\d++)(\w)/  /(\d++)(\w)/I
897      12345a      12345a
898      *** Failers      *** Failers
899      12345+      12345+
900    
901  /a++b/  /a++b/I
902      aaab      aaab
903    
904  /(a++b)/  /(a++b)/I
905      aaab      aaab
906    
907  /(a++)b/  /(a++)b/I
908      aaab      aaab
909    
910  /([^()]++|\([^()]*\))+/  /([^()]++|\([^()]*\))+/I
911      ((abc(ade)ufh()()x      ((abc(ade)ufh()()x
912    
913  /\(([^()]++|\([^()]+\))+\)/  /\(([^()]++|\([^()]+\))+\)/I
914      (abc)      (abc)
915      (abc(def)xyz)      (abc(def)xyz)
916      *** Failers      *** Failers
917      ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa      ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
918    
919  /(abc){1,3}+/D  /(abc){1,3}+/DZ
920    
921  /a+?+/  /a+?+/I
922    
923  /a{2,3}?+b/  /a{2,3}?+b/I
924    
925  /(?U)a+?+/  /(?U)a+?+/I
926    
927  /a{2,3}?+b/U  /a{2,3}?+b/IU
928    
929  /x(?U)a++b/D  /x(?U)a++b/DZ
930      xaaaab      xaaaab
931    
932  /(?U)xa++b/D  /(?U)xa++b/DZ
933      xaaaab      xaaaab
934    
935  /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/D  /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
936    
937  /^x(?U)a+b/D  /^x(?U)a+b/DZ
938    
939  /^x(?U)(a+)b/D  /^x(?U)(a+)b/DZ
940    
941  /[.x.]/  /[.x.]/I
942    
943  /[=x=]/  /[=x=]/I
944    
945  /[:x:]/  /[:x:]/I
946    
947  /\l/  /\l/I
948    
949  /\L/  /\L/I
950    
951  /\N{name}/  /\N{name}/I
952    
953  /\u/  /\u/I
954    
955  /\U/  /\U/I
956    
957  /[/  /[/I
958    
959  /[a-/  /[a-/I
960    
961  /[[:space:]/  /[[:space:]/I
962    
963  /[\s]/DM  /[\s]/IDZ
964    
965  /[[:space:]]/DM  /[[:space:]]/IDZ
966    
967  /[[:space:]abcde]/DM  /[[:space:]abcde]/IDZ
968    
969  /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x  /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/Ix
970      <>      <>
971      <abcd>      <abcd>
972      <abc <123> hij>      <abc <123> hij>
973      <abc <def> hij>      <abc <def> hij>
974      <abc<>def>      <abc<>def>
975      <abc<>      <abc<>
976      *** Failers      *** Failers
977      <abc      <abc
978    
979  |8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|DM  |8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
980    
981  |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|DM  |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
982    
983  /(.*)\d+\1/I  /(.*)\d+\1/I
984    
985  /(.*)\d+/I  /(.*)\d+/I
986    
987  /(.*)\d+\1/Is  /(.*)\d+\1/Is
988    
989  /(.*)\d+/Is  /(.*)\d+/Is
# Line 950  Line 992 
992    
993  /((.*))\d+\1/I  /((.*))\d+\1/I
994      abc123bc      abc123bc
995    
996  /a[b]/I  /a[b]/I
997    
998  /(?=a).*/I  /(?=a).*/I
999    
1000  /(?=abc).xyz/iI  /(?=abc).xyz/IiI
1001    
1002  /(?=abc)(?i).xyz/I  /(?=abc)(?i).xyz/I
1003    
# Line 969  Line 1011 
1011    
1012  /()a/I  /()a/I
1013    
1014  /(?(1)ab|ac)/I  /(?(1)ab|ac)(.)/I
1015    
1016  /(?(1)abz|acz)/I  /(?(1)abz|acz)(.)/I
1017    
1018  /(?(1)abz)/I  /(?(1)abz)(.)/I
1019    
1020  /(?(1)abz)123/I  /(?(1)abz)(1)23/I
1021    
1022  /(a)+/I  /(a)+/I
1023    
# Line 997  Line 1039 
1039    
1040  /a^b/I  /a^b/I
1041    
1042  /^a/mI  /^a/Im
1043    abcde    abcde
1044    xy\nabc    xy\nabc
1045    *** Failers    *** Failers
1046    xyabc    xyabc
1047    
1048  /c|abc/I  /c|abc/I
1049    
# Line 1009  Line 1051 
1051    
1052  /[ab](?i)cd/IS  /[ab](?i)cd/IS
1053    
1054  /abc(?C)def/  /abc(?C)def/I
1055      abcdef      abcdef
1056      1234abcdef      1234abcdef
1057      *** Failers      *** Failers
1058      abcxyz      abcxyz
1059      abcxyzf      abcxyzf
1060    
1061  /abc(?C)de(?C1)f/  /abc(?C)de(?C1)f/I
1062      123abcdef      123abcdef
1063    
1064  /(?C1)\dabc(?C2)def/  /(?C1)\dabc(?C2)def/IS
1065      1234abcdef      1234abcdef
1066      *** Failers      *** Failers
1067      abcdef      abcdef
1068    
1069  /(?C255)ab/  /(?C1)\dabc(?C2)def/ISS
1070        1234abcdef
1071        *** Failers
1072        abcdef
1073    
1074  /(?C256)ab/  /(?C255)ab/I
1075    
1076  /(?Cab)xx/  /(?C256)ab/I
1077    
1078  /(?C12vr)x/  /(?Cab)xx/I
1079    
1080  /abc(?C)def/  /(?C12vr)x/I
1081    
1082    /abc(?C)def/I
1083      *** Failers      *** Failers
1084      \x83\x0\x61bcdef      \x83\x0\x61bcdef
1085    
1086  /(abc)(?C)de(?C1)f/  /(abc)(?C)de(?C1)f/I
1087      123abcdef      123abcdef
1088      123abcdef\C+      123abcdef\C+
1089      123abcdef\C-      123abcdef\C-
1090      *** Failers      *** Failers
1091      123abcdef\C!1      123abcdef\C!1
1092    
1093  /(?C0)(abc(?C1))*/  /(?C0)(abc(?C1))*/I
1094      abcabcabc      abcabcabc
1095      abcabc\C!1!3      abcabc\C!1!3
1096      *** Failers      *** Failers
1097      abcabcabc\C!1!3      abcabcabc\C!1!3
1098    
1099  /(\d{3}(?C))*/  /(\d{3}(?C))*/I
1100      123\C+      123\C+
1101      123456\C+      123456\C+
1102      123456789\C+      123456789\C+
1103    
1104  /((xyz)(?C)p|(?C1)xyzabc)/  /((xyz)(?C)p|(?C1)xyzabc)/I
1105      xyzabc\C+      xyzabc\C+
1106    
1107  /(X)((xyz)(?C)p|(?C1)xyzabc)/  /(X)((xyz)(?C)p|(?C1)xyzabc)/I
1108      Xxyzabc\C+      Xxyzabc\C+
1109    
1110  /(?=(abc))(?C)abcdef/  /(?=(abc))(?C)abcdef/I
1111      abcdef\C+      abcdef\C+
   
 /(?!(abc)(?C1)d)(?C2)abcxyz/  
     abcxyz\C+  
1112    
1113  /(?<=(abc)(?C))xyz/  /(?!(abc)(?C1)d)(?C2)abcxyz/I
1114        abcxyz\C+
1115    
1116    /(?<=(abc)(?C))xyz/I
1117     abcxyz\C+     abcxyz\C+
1118    
1119  /a(b+)(c*)(?C1)/  /a(b+)(c*)(?C1)/I
1120      abbbbbccc\C*1      abbbbbccc\C*1
1121    
1122  /a(b+?)(c*?)(?C1)/  /a(b+?)(c*?)(?C1)/I
1123      abbbbbccc\C*1      abbbbbccc\C*1
   
 /(?C)abc/  
1124    
1125  /(?C)^abc/  /(?C)abc/I
1126    
1127  /(?C)a|b/S  /(?C)^abc/I
1128    
1129  /(?R)/  /(?C)a|b/IS
1130    
1131  /(a|(?R))/  /(?R)/I
1132    
1133  /(ab|(bc|(de|(?R))))/  /(a|(?R))/I
1134    
1135  /x(ab|(bc|(de|(?R))))/  /(ab|(bc|(de|(?R))))/I
1136    
1137    /x(ab|(bc|(de|(?R))))/I
1138      xab      xab
1139      xbc      xbc
1140      xde      xde
1141      xxab      xxab
1142      xxxab      xxxab
1143      *** Failers      *** Failers
1144      xyab      xyab
1145    
1146  /(ab|(bc|(de|(?1))))/  /(ab|(bc|(de|(?1))))/I
1147    
1148  /x(ab|(bc|(de|(?1)x)x)x)/  /x(ab|(bc|(de|(?1)x)x)x)/I
1149    
1150  /^([^()]|\((?1)*\))*$/  /^([^()]|\((?1)*\))*$/I
1151      abc      abc
1152      a(b)c      a(b)c
1153      a(b(c))d      a(b(c))d
1154      *** Failers)      *** Failers)
1155      a(b(c)d      a(b(c)d
1156    
1157  /^>abc>([^()]|\((?1)*\))*<xyz<$/  /^>abc>([^()]|\((?1)*\))*<xyz<$/I
1158     >abc>123<xyz<     >abc>123<xyz<
1159     >abc>1(2)3<xyz<     >abc>1(2)3<xyz<
1160     >abc>(1(2)3)<xyz<     >abc>(1(2)3)<xyz<
1161    
1162  /(a(?1)b)/D  /(a(?1)b)/DZ
1163    
1164  /(a(?1)+b)/D  /(a(?1)+b)/DZ
1165    
1166  /^\W*(?:((.)\W*(?1)\W*\2|)|((.)\W*(?3)\W*\4|\W*.\W*))\W*$/i  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
     1221  
     Satan, oscillate my metallic sonatas!  
     A man, a plan, a canal: Panama!  
     Able was I ere I saw Elba.  
     *** Failers  
     The quick brown fox  
   
 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/  
1167      12      12
1168      (((2+2)*-3)-7)      (((2+2)*-3)-7)
1169      -12      -12
1170      *** Failers      *** Failers
1171      ((2+2)*-3)-7)      ((2+2)*-3)-7)
1172    
1173  /^(x(y|(?1){2})z)/  /^(x(y|(?1){2})z)/I
1174      xyz      xyz
1175      xxyzxyzz      xxyzxyzz
1176      *** Failers      *** Failers
1177      xxyzz      xxyzz
1178      xxyzxyzxyzz      xxyzxyzxyzz
1179    
1180  /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x  /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/Ix
1181      <>      <>
1182      <abcd>      <abcd>
1183      <abc <123> hij>      <abc <123> hij>
1184      <abc <def> hij>      <abc <def> hij>
1185      <abc<>def>      <abc<>def>
1186      <abc<>      <abc<>
1187      *** Failers      *** Failers
1188      <abc      <abc
1189    
1190  /(?1)/  /(?1)/I
1191    
1192  /((?2)(abc)/  /((?2)(abc)/I
1193    
1194  /^(abc)def(?1)/  /^(abc)def(?1)/I
1195      abcdefabc      abcdefabc
1196    
1197  /^(a|b|c)=(?1)+/  /^(a|b|c)=(?1)+/I
1198      a=a      a=a
1199      a=b      a=b
1200      a=bc      a=bc
1201    
1202  /^(a|b|c)=((?1))+/  /^(a|b|c)=((?1))+/I
1203      a=a      a=a
1204      a=b      a=b
1205      a=bc      a=bc
1206    
1207  /a(?P<name1>b|c)d(?P<longername2>e)/D  /a(?P<name1>b|c)d(?P<longername2>e)/DZ
1208      abde      abde
1209      acde      acde
1210    
1211  /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/D  /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ
1212    
1213  /(?P<a>a)...(?P=a)bbb(?P>a)d/D  /(?P<a>a)...(?P=a)bbb(?P>a)d/DZ
1214    
1215  /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/i  /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii
1216      1221      1221
1217      Satan, oscillate my metallic sonatas!      Satan, oscillate my metallic sonatas!
1218      A man, a plan, a canal: Panama!      A man, a plan, a canal: Panama!
1219      Able was I ere I saw Elba.      Able was I ere I saw Elba.
1220      *** Failers      *** Failers
1221      The quick brown fox      The quick brown fox
1222    
1223  /((?(R)a|b))\1(?1)?/  /((?(R)a|b))\1(?1)?/I
1224    bb    bb
1225    bbaa    bbaa
1226    
1227  /(.*)a/sI  /(.*)a/Is
1228    
1229  /(.*)a\1/sI  /(.*)a\1/Is
1230    
1231  /(.*)a(b)\2/sI  /(.*)a(b)\2/Is
1232    
1233  /((.*)a|(.*)b)z/sI  /((.*)a|(.*)b)z/Is
1234    
1235  /((.*)a|(.*)b)z\1/sI  /((.*)a|(.*)b)z\1/Is
1236    
1237  /((.*)a|(.*)b)z\2/sI  /((.*)a|(.*)b)z\2/Is
1238    
1239  /((.*)a|(.*)b)z\3/sI  /((.*)a|(.*)b)z\3/Is
1240    
1241  /((.*)a|^(.*)b)z\3/sI  /((.*)a|^(.*)b)z\3/Is
1242    
1243  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/sI  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
1244    
1245  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/sI  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
1246    
1247  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/sI  /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
1248    
1249  /(a)(bc)/ND  /(a)(bc)/INDZ
1250    abc    abc
1251    
1252  /(?P<one>a)(bc)/ND  /(?P<one>a)(bc)/INDZ
1253    abc    abc
1254    
1255  /(a)(?P<named>bc)/ND  /(a)(?P<named>bc)/INDZ
1256    
1257  /(a+)*zz/  /(a+)*zz/I
1258    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
1259    aaaaaaaaaaaaaz\M    aaaaaaaaaaaaaz\M
1260    
1261  /(aaa(?C1)bbb|ab)/  /(aaa(?C1)bbb|ab)/I
1262     aaabbb     aaabbb
1263     aaabbb\C*0     aaabbb\C*0
1264     aaabbb\C*1     aaabbb\C*1
1265     aaabbb\C*-1     aaabbb\C*-1
1266    
1267  /ab(?P<one>cd)ef(?P<two>gh)/  /ab(?P<one>cd)ef(?P<two>gh)/I
1268      abcdefgh      abcdefgh
1269      abcdefgh\C1\Gtwo      abcdefgh\C1\Gtwo
1270      abcdefgh\Cone\Ctwo      abcdefgh\Cone\Ctwo
1271      abcdefgh\Cthree      abcdefgh\Cthree
1272    
1273  /(?P<Tes>)(?P<Test>)/D  /(?P<Tes>)(?P<Test>)/DZ
1274    
1275  /(?P<Test>)(?P<Tes>)/D  /(?P<Test>)(?P<Tes>)/DZ
1276    
1277  /(?P<Z>zz)(?P<A>aa)/  /(?P<Z>zz)(?P<A>aa)/I
1278      zzaa\CZ      zzaa\CZ
1279      zzaa\CA      zzaa\CA
1280    
1281  /(?P<x>eks)(?P<x>eccs)/  /(?P<x>eks)(?P<x>eccs)/I
1282    
1283  /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/  /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
1284    
1285  "\[((?P<elem>\d+)(,(?P>elem))*)\]"  "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
1286      [10,20,30,5,5,4,4,2,43,23,4234]      [10,20,30,5,5,4,4,2,43,23,4234]
1287      *** Failers      *** Failers
1288      []      []
1289    
1290  "\[((?P<elem>\d+)(,(?P>elem))*)?\]"  "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
1291      [10,20,30,5,5,4,4,2,43,23,4234]      [10,20,30,5,5,4,4,2,43,23,4234]
1292      []      []
1293    
1294  /(a(b(?2)c))?/D  /(a(b(?2)c))?/DZ
1295    
1296  /(a(b(?2)c))*/D  /(a(b(?2)c))*/DZ
1297    
1298  /(a(b(?2)c)){0,2}/D  /(a(b(?2)c)){0,2}/DZ
1299    
1300  /[ab]{1}+/D  /[ab]{1}+/DZ
1301    
1302  /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/i  /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
1303       Baby Bjorn Active Carrier - With free SHIPPING!!       Baby Bjorn Active Carrier - With free SHIPPING!!
1304    
1305  /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/iS  /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS
1306       Baby Bjorn Active Carrier - With free SHIPPING!!       Baby Bjorn Active Carrier - With free SHIPPING!!
   
 /a*.*b/SD  
1307    
1308  /(a|b)*.?c/SD  /a*.*b/ISDZ
1309    
1310  /abc(?C255)de(?C)f/D  /(a|b)*.?c/ISDZ
1311    
1312  /abcde/CD  /abc(?C255)de(?C)f/DZ
1313    
1314    /abcde/ICDZ
1315    abcde    abcde
1316    abcdfe    abcdfe
1317    
1318  /a*b/CD  /a*b/ICDZS
1319      ab
1320      aaaab
1321      aaaacb
1322    
1323    /a*b/ICDZSS
1324    ab    ab
1325    aaaab    aaaab
1326    aaaacb    aaaacb
1327    
1328  /a+b/CD  /a+b/ICDZ
1329    ab    ab
1330    aaaab    aaaab
1331    aaaacb    aaaacb
1332    
1333    /(abc|def)x/ICDZS
1334      abcx
1335      defx
1336      ** Failers
1337      abcdefzx
1338    
1339  /(abc|def)x/CD  /(abc|def)x/ICDZSS
1340    abcx    abcx
1341    defx    defx
1342      ** Failers
1343    abcdefzx    abcdefzx
1344    
1345  /(ab|cd){3,4}/C  /(ab|cd){3,4}/IC
1346    ababab    ababab
1347    abcdabcd    abcdabcd
1348    abcdcdcdcdcd    abcdcdcdcdcd
1349    
1350    /([ab]{,4}c|xy)/ICDZS
1351        Note: that { does NOT introduce a quantifier
1352    
1353  /([ab]{,4}c|xy)/CD  /([ab]{,4}c|xy)/ICDZSS
1354      Note: that { does NOT introduce a quantifier      Note: that { does NOT introduce a quantifier
1355    
1356  /([ab]{1,4}c|xy){4,5}?123/CD  /([ab]{1,4}c|xy){4,5}?123/ICDZ
1357      aacaacaacaacaac123      aacaacaacaacaac123
1358    
1359  /\b.*/I  /\b.*/I
1360    ab cd\>1    ab cd\>1
1361    
1362  /\b.*/Is  /\b.*/Is
1363    ab cd\>1    ab cd\>1
1364    
1365  /(?!.bcd).*/I  /(?!.bcd).*/I
1366    Xbcd12345    Xbcd12345
1367    
1368  /abcde/  /abcde/I
1369      ab\P      ab\P
1370      abc\P      abc\P
1371      abcd\P      abcd\P
1372      abcde\P      abcde\P
1373      the quick brown abc\P      the quick brown abc\P
1374      ** Failers\P      ** Failers\P
1375      the quick brown abxyz fox\P      the quick brown abxyz fox\P
1376    
1377  "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"  "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
1378      13/05/04\P      13/05/04\P
1379      13/5/2004\P      13/5/2004\P
1380      02/05/09\P      02/05/09\P
1381      1\P      1\P
1382      1/2\P      1/2\P
1383      1/2/0\P      1/2/0\P
1384      1/2/04\P      1/2/04\P
1385      0\P      0\P
1386      02/\P      02/\P
1387      02/0\P      02/0\P
1388      02/1\P      02/1\P
1389      ** Failers\P      ** Failers\P
1390      \P      \P
# Line 1338  Line 1392 
1392      33/4/04\P      33/4/04\P
1393      3/13/04\P      3/13/04\P
1394      0/1/2003\P      0/1/2003\P
1395      0/\P      0/\P
1396      02/0/\P      02/0/\P
1397      02/13\P      02/13\P
1398    
1399  /0{0,2}ABC/I  /0{0,2}ABC/I
1400    
1401  /\d{3,}ABC/I  /\d{3,}ABC/I
1402    
1403  /\d*ABC/I  /\d*ABC/I
1404    
1405  /[abc]+DE/I  /[abc]+DE/I
1406    
1407  /[abc]?123/  /[abc]?123/I
1408      123\P      123\P
1409      a\P      a\P
1410      b\P      b\P
1411      c\P      c\P
1412      c12\P      c12\P
1413      c123\P      c123\P
1414    
1415  /^(?:\d){3,5}X/  /^(?:\d){3,5}X/I
1416      1\P      1\P
1417      123\P      123\P
1418      123X      123X
1419      1234\P      1234\P
1420      1234X      1234X
1421      12345\P      12345\P
1422      12345X      12345X
1423      *** Failers      *** Failers
1424      1X      1X
1425      123456\P      123456\P
1426    
1427  /abc/>testsavedregex  /abc/IS>testsavedregex
1428  <testsavedregex  <testsavedregex
1429      abc      abc
1430      ** Failers      ** Failers
1431      bca      bca
1432    
1433  /abc/F>testsavedregex  /abc/ISS>testsavedregex
1434  <testsavedregex  <testsavedregex
1435      abc      abc
1436      ** Failers      ** Failers
1437      bca      bca
1438    
1439  /(a|b)/S>testsavedregex  /abc/IFS>testsavedregex
1440  <testsavedregex  <testsavedregex
1441      abc      abc
1442      ** Failers      ** Failers
1443      def      bca
1444    
1445  /(a|b)/SF>testsavedregex  /abc/IFSS>testsavedregex
1446  <testsavedregex  <testsavedregex
1447      abc      abc
1448      ** Failers      ** Failers
1449      def      bca
1450    
1451  ~<(\w+)/?>(.)*</(\1)>~smg  /(a|b)/IS>testsavedregex
1452    <testsavedregex
1453        abc
1454        ** Failers
1455        def
1456    
1457    /(a|b)/ISS>testsavedregex
1458    <testsavedregex
1459        abc
1460        ** Failers
1461        def
1462    
1463    /(a|b)/ISF>testsavedregex
1464    <testsavedregex
1465        abc
1466        ** Failers
1467        def
1468    
1469    /(a|b)/ISSF>testsavedregex
1470    <testsavedregex
1471        abc
1472        ** Failers
1473        def
1474    
1475    ~<(\w+)/?>(.)*</(\1)>~smgI
1476      <!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>      <!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>
1477    
1478  /^a/IF  /^a/IF
1479    
1480  /line\nbreak/  /line\nbreak/I
1481      this is a line\nbreak      this is a line\nbreak
1482      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1483    
1484  /line\nbreak/f  /line\nbreak/If
1485      this is a line\nbreak      this is a line\nbreak
1486      ** Failers      ** Failers
1487      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1488    
1489  /line\nbreak/mf  /line\nbreak/Imf
1490      this is a line\nbreak      this is a line\nbreak
1491      ** Failers      ** Failers
1492      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1493    
1494  /ab.cd/P  /ab.cd/P
1495      ab-cd      ab-cd
1496      ab=cd      ab=cd
1497      ** Failers      ** Failers
1498      ab\ncd      ab\ncd
1499    
1500  /ab.cd/Ps  /ab.cd/Ps
1501      ab-cd      ab-cd
1502      ab=cd      ab=cd
1503      ab\ncd      ab\ncd
1504    
1505  /(?i)(?-i)AbCd/  /(?i)(?-i)AbCd/I
1506      AbCd      AbCd
1507      ** Failers      ** Failers
1508      abcd      abcd
   
 /a{11111111111111111111}/  
1509    
1510  /(){64294967295}/  /a{11111111111111111111}/I
1511    
1512  /(){2,4294967295}/  /(){64294967295}/I
1513    
1514  "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"  /(){2,4294967295}/I
1515    
1516    "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I
1517      abcdefghijklAkB      abcdefghijklAkB
1518    
1519  "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"  "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I
1520      abcdefghijklAkB      abcdefghijklAkB
1521    
1522  "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"  "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
1523      abcdefghijklAkB      abcdefghijklAkB
1524    
1525  "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"  "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I
1526      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1527    
1528  "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"  "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I
1529      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1530    
1531  / End of testinput2 /  /[^()]*(?:\((?R)\)[^()]*)*/I
1532        (this(and)that
1533        (this(and)that)
1534        (this(and)that)stuff
1535    
1536    /[^()]*(?:\((?>(?R))\)[^()]*)*/I
1537        (this(and)that
1538        (this(and)that)
1539    
1540    /[^()]*(?:\((?R)\))*[^()]*/I
1541        (this(and)that
1542        (this(and)that)
1543    
1544    /(?:\((?R)\))*[^()]*/I
1545        (this(and)that
1546        (this(and)that)
1547        ((this))
1548    
1549    /(?:\((?R)\))|[^()]*/I
1550        (this(and)that
1551        (this(and)that)
1552        (this)
1553        ((this))
1554    
1555    /a(b)c/PN
1556        abc
1557    
1558    /a(?P<name>b)c/PN
1559        abc
1560    
1561    /\x{100}/I
1562    
1563    /\x{0000ff}/I
1564    
1565    /^((?P<A>a1)|(?P<A>a2)b)/I
1566    
1567    /^((?P<A>a1)|(?P<A>a2)b)/IJ
1568        a1b\CA
1569        a2b\CA
1570        ** Failers
1571        a1b\CZ\CA
1572    
1573    /^(?P<A>a)(?P<A>b)/IJ
1574        ab\CA
1575    
1576    /^(?P<A>a)(?P<A>b)|cd/IJ
1577        ab\CA
1578        cd\CA
1579    
1580    /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
1581        cdefgh\CA
1582    
1583    /^((?P<A>a1)|(?P<A>a2)b)/IJ
1584        a1b\GA
1585        a2b\GA
1586        ** Failers
1587        a1b\GZ\GA
1588    
1589    /^(?P<A>a)(?P<A>b)/IJ
1590        ab\GA
1591    
1592    /^(?P<A>a)(?P<A>b)|cd/IJ
1593        ab\GA
1594        cd\GA
1595    
1596    /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
1597        cdefgh\GA
1598    
1599    /(?J)^((?P<A>a1)|(?P<A>a2)b)/I
1600        a1b\CA
1601        a2b\CA
1602    
1603    /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I
1604    
1605    / In this next test, J is not set at the outer level; consequently it isn't
1606    set in the pattern's options; consequently pcre_get_named_substring() produces
1607    a random value. /Ix
1608    
1609    /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
1610        a bc d\CA\CB\CC
1611    
1612    /^(?P<A>a)?(?(A)a|b)/I
1613        aabc
1614        bc
1615        ** Failers
1616        abc
1617    
1618    /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
1619        bXaX
1620    
1621    /(?:(?(2y)a|b)(X))+/I
1622    
1623    /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
1624    
1625    /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
1626        bbXaaX
1627    
1628    /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
1629        (b)\\Xa\\X
1630    
1631    /(?P<ABC/I
1632    
1633    /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1634        bXXaYYaY
1635        bXYaXXaX
1636    
1637    /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1638        bXXaYYaY
1639    
1640    /\777/I
1641    
1642    /\s*,\s*/IS
1643        \x0b,\x0b
1644        \x0c,\x0d
1645    
1646    /^abc/Im
1647        xyz\nabc
1648        xyz\nabc\<lf>
1649        xyz\r\nabc\<lf>
1650        xyz\rabc\<cr>
1651        xyz\r\nabc\<crlf>
1652        ** Failers
1653        xyz\nabc\<cr>
1654        xyz\r\nabc\<cr>
1655        xyz\nabc\<crlf>
1656        xyz\rabc\<crlf>
1657        xyz\rabc\<lf>
1658    
1659    /abc$/Im<lf>
1660        xyzabc
1661        xyzabc\n
1662        xyzabc\npqr
1663        xyzabc\r\<cr>
1664        xyzabc\rpqr\<cr>
1665        xyzabc\r\n\<crlf>
1666        xyzabc\r\npqr\<crlf>
1667        ** Failers
1668        xyzabc\r
1669        xyzabc\rpqr
1670        xyzabc\r\n
1671        xyzabc\r\npqr
1672    
1673    /^abc/Im<cr>
1674        xyz\rabcdef
1675        xyz\nabcdef\<lf>
1676        ** Failers
1677        xyz\nabcdef
1678    
1679    /^abc/Im<lf>
1680        xyz\nabcdef
1681        xyz\rabcdef\<cr>
1682        ** Failers
1683        xyz\rabcdef
1684    
1685    /^abc/Im<crlf>
1686        xyz\r\nabcdef
1687        xyz\rabcdef\<cr>
1688        ** Failers
1689        xyz\rabcdef
1690    
1691    /^abc/Im<bad>
1692    
1693    /abc/I
1694        xyz\rabc\<bad>
1695        abc
1696    
1697    /.*/I<lf>
1698        abc\ndef
1699        abc\rdef
1700        abc\r\ndef
1701        \<cr>abc\ndef
1702        \<cr>abc\rdef
1703        \<cr>abc\r\ndef
1704        \<crlf>abc\ndef
1705        \<crlf>abc\rdef
1706        \<crlf>abc\r\ndef
1707    
1708    /\w+(.)(.)?def/Is
1709        abc\ndef
1710        abc\rdef
1711        abc\r\ndef
1712    
1713    +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
1714       /* this is a C style comment */\M
1715    
1716    /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
1717    
1718    /()()()()()()()()()()()()()()()()()()()()
1719     ()()()()()()()()()()()()()()()()()()()()
1720     ()()()()()()()()()()()()()()()()()()()()
1721     ()()()()()()()()()()()()()()()()()()()()
1722     ()()()()()()()()()()()()()()()()()()()()
1723     (.(.))/Ix
1724        XY\O400
1725    
1726    /(a*b|(?i:c*(?-i)d))/IS
1727    
1728    /()[ab]xyz/IS
1729    
1730    /(|)[ab]xyz/IS
1731    
1732    /(|c)[ab]xyz/IS
1733    
1734    /(|c?)[ab]xyz/IS
1735    
1736    /(d?|c?)[ab]xyz/IS
1737    
1738    /(d?|c)[ab]xyz/IS
1739    
1740    /^a*b\d/DZ
1741    
1742    /^a*+b\d/DZ
1743    
1744    /^a*?b\d/DZ
1745    
1746    /^a+A\d/DZ
1747        aaaA5
1748        ** Failers
1749        aaaa5
1750    
1751    /^a*A\d/IiDZ
1752        aaaA5
1753        aaaa5
1754    
1755    /(a*|b*)[cd]/IS
1756    
1757    /(a+|b*)[cd]/IS
1758    
1759    /(a*|b+)[cd]/IS
1760    
1761    /(a+|b+)[cd]/IS
1762    
1763    /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1764     ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1765     (((
1766     a
1767     ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
1768     ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
1769     )))
1770    /Ix
1771      large nest
1772    
1773    /a*\d/BZ
1774    
1775    /a*\D/BZ
1776    
1777    /0*\d/BZ
1778    
1779    /0*\D/BZ
1780    
1781    /a*\s/BZ
1782    
1783    /a*\S/BZ
1784    
1785    / *\s/BZ
1786    
1787    / *\S/BZ
1788    
1789    /a*\w/BZ
1790    
1791    /a*\W/BZ
1792    
1793    /=*\w/BZ
1794    
1795    /=*\W/BZ
1796    
1797    /\d*a/BZ
1798    
1799    /\d*2/BZ
1800    
1801    /\d*\d/BZ
1802    
1803    /\d*\D/BZ
1804    
1805    /\d*\s/BZ
1806    
1807    /\d*\S/BZ
1808    
1809    /\d*\w/BZ
1810    
1811    /\d*\W/BZ
1812    
1813    /\D*a/BZ
1814    
1815    /\D*2/BZ
1816    
1817    /\D*\d/BZ
1818    
1819    /\D*\D/BZ
1820    
1821    /\D*\s/BZ
1822    
1823    /\D*\S/BZ
1824    
1825    /\D*\w/BZ
1826    
1827    /\D*\W/BZ
1828    
1829    /\s*a/BZ
1830    
1831    /\s*2/BZ
1832    
1833    /\s*\d/BZ
1834    
1835    /\s*\D/BZ
1836    
1837    /\s*\s/BZ
1838    
1839    /\s*\S/BZ
1840    
1841    /\s*\w/BZ
1842    
1843    /\s*\W/BZ
1844    
1845    /\S*a/BZ
1846    
1847    /\S*2/BZ
1848    
1849    /\S*\d/BZ
1850    
1851    /\S*\D/BZ
1852    
1853    /\S*\s/BZ
1854    
1855    /\S*\S/BZ
1856    
1857    /\S*\w/BZ
1858    
1859    /\S*\W/BZ
1860    
1861    /\w*a/BZ
1862    
1863    /\w*2/BZ
1864    
1865    /\w*\d/BZ
1866    
1867    /\w*\D/BZ
1868    
1869    /\w*\s/BZ
1870    
1871    /\w*\S/BZ
1872    
1873    /\w*\w/BZ
1874    
1875    /\w*\W/BZ
1876    
1877    /\W*a/BZ
1878    
1879    /\W*2/BZ
1880    
1881    /\W*\d/BZ
1882    
1883    /\W*\D/BZ
1884    
1885    /\W*\s/BZ
1886    
1887    /\W*\S/BZ
1888    
1889    /\W*\w/BZ
1890    
1891    /\W*\W/BZ
1892    
1893    /[^a]+a/BZ
1894    
1895    /[^a]+a/BZi
1896    
1897    /[^a]+A/BZi
1898    
1899    /[^a]+b/BZ
1900    
1901    /[^a]+\d/BZ
1902    
1903    /a*[^a]/BZ
1904    
1905    /(?P<abc>x)(?P<xyz>y)/I
1906        xy\Cabc\Cxyz
1907    
1908    /(?<abc>x)(?'xyz'y)/I
1909        xy\Cabc\Cxyz
1910    
1911    /(?<abc'x)(?'xyz'y)/I
1912    
1913    /(?<abc>x)(?'xyz>y)/I
1914    
1915    /(?P'abc'x)(?P<xyz>y)/I
1916    
1917    /^(?:(?(ZZ)a|b)(?<ZZ>X))+/
1918        bXaX
1919        bXbX
1920        ** Failers
1921        aXaX
1922        aXbX
1923    
1924    /^(?P>abc)(?<abcd>xxx)/
1925    
1926    /^(?P>abc)(?<abc>x|y)/
1927        xx
1928        xy
1929        yy
1930        yx
1931    
1932    /^(?P>abc)(?P<abc>x|y)/
1933        xx
1934        xy
1935        yy
1936        yx
1937    
1938    /^((?(abc)a|b)(?<abc>x|y))+/
1939        bxay
1940        bxby
1941        ** Failers
1942        axby
1943    
1944    /^(((?P=abc)|X)(?<abc>x|y))+/
1945        XxXxxx
1946        XxXyyx
1947        XxXyxx
1948        ** Failers
1949        x
1950    
1951    /^(?1)(abc)/
1952        abcabc
1953    
1954    /^(?:(?:\1|X)(a|b))+/
1955        Xaaa
1956        Xaba
1957    
1958    /^[\E\Qa\E-\Qz\E]+/BZ
1959    
1960    /^[a\Q]bc\E]/BZ
1961    
1962    /^[a-\Q\E]/BZ
1963    
1964    /^(?P>abc)[()](?<abc>)/BZ
1965    
1966    /^((?(abc)y)[()](?P<abc>x))+/BZ
1967        (xy)x
1968    
1969    /^(?P>abc)\Q()\E(?<abc>)/BZ
1970    
1971    /^(?P>abc)[a\Q(]\E(](?<abc>)/BZ
1972    
1973    /^(?P>abc) # this is (a comment)
1974      (?<abc>)/BZx
1975    
1976    /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii
1977        1221
1978        Satan, oscillate my metallic sonatas!
1979        A man, a plan, a canal: Panama!
1980        Able was I ere I saw Elba.
1981        *** Failers
1982        The quick brown fox
1983    
1984    /(?=(\w+))\1:/I
1985        abcd:
1986    
1987    /(?=(?'abc'\w+))\k<abc>:/I
1988        abcd:
1989    
1990    /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1991        adaa
1992        ** Failers
1993        addd
1994        adbb
1995    
1996    /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J
1997        bdaa
1998        bdab
1999        ** Failers
2000        bddd
2001    
2002    /(?(<bc))/
2003    
2004    /(?(''))/
2005    
2006    /(?('R')stuff)/
2007    
2008    /((abc (?(R) (?(R1)1) (?(R2)2) X  |  (?1)  (?2)   (?R) ))) /x
2009        abcabc1Xabc2XabcXabcabc
2010    
2011    /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
2012        abcabc1Xabc2XabcXabcabc
2013    
2014    /(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
2015    
2016    /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
2017        abcabc1Xabc2XabcXabcabc
2018    
2019    /^(?(DEFINE) abc | xyz ) /x
2020    
2021    /(?(DEFINE) abc) xyz/xI
2022    
2023    /(a|)*\d/
2024      \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2025      \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
2026    
2027    /^a.b/<lf>
2028        a\rb
2029        a\nb\<cr>
2030        a\x85b\<anycrlf>
2031        ** Failers
2032        a\nb
2033        a\nb\<any>
2034        a\rb\<cr>
2035        a\rb\<any>
2036        a\x85b\<any>
2037        a\rb\<anycrlf>
2038    
2039    /^abc./mgx<any>
2040        abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
2041    
2042    /abc.$/mgx<any>
2043        abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
2044    
2045    /a/<cr><any>
2046    
2047    /a/<any><crlf>
2048    
2049    /^a\Rb/<bsr_unicode>
2050        a\nb
2051        a\rb
2052        a\r\nb
2053        a\x0bb
2054        a\x0cb
2055        a\x85b
2056        ** Failers
2057        a\n\rb
2058    
2059    /^a\R*b/<bsr_unicode>
2060        ab
2061        a\nb
2062        a\rb
2063        a\r\nb
2064        a\x0bb
2065        a\x0cb
2066        a\x85b
2067        a\n\rb
2068        a\n\r\x85\x0cb
2069    
2070    /^a\R+b/<bsr_unicode>
2071        a\nb
2072        a\rb
2073        a\r\nb
2074        a\x0bb
2075        a\x0cb
2076        a\x85b
2077        a\n\rb
2078        a\n\r\x85\x0cb
2079        ** Failers
2080        ab
2081    
2082    /^a\R{1,3}b/<bsr_unicode>
2083        a\nb
2084        a\n\rb
2085        a\n\r\x85b
2086        a\r\n\r\nb
2087        a\r\n\r\n\r\nb
2088        a\n\r\n\rb
2089        a\n\n\r\nb
2090        ** Failers
2091        a\n\n\n\rb
2092        a\r
2093    
2094    /^a[\R]b/<bsr_unicode>
2095        aRb
2096        ** Failers
2097        a\nb
2098    
2099    /(?&abc)X(?<abc>P)/I
2100        abcPXP123
2101    
2102    /(?1)X(?<abc>P)/I
2103        abcPXP123
2104    
2105    /(?:a(?&abc)b)*(?<abc>x)/
2106        123axbaxbaxbx456
2107        123axbaxbaxb456
2108    
2109    /(?:a(?&abc)b){1,5}(?<abc>x)/
2110        123axbaxbaxbx456
2111    
2112    /(?:a(?&abc)b){2,5}(?<abc>x)/
2113        123axbaxbaxbx456
2114    
2115    /(?:a(?&abc)b){2,}(?<abc>x)/
2116        123axbaxbaxbx456
2117    
2118    /(abc)(?i:(?1))/
2119       defabcabcxyz
2120       DEFabcABCXYZ
2121    
2122    /(abc)(?:(?i)(?1))/
2123       defabcabcxyz
2124       DEFabcABCXYZ
2125    
2126    /^(a)\g-2/
2127    
2128    /^(a)\g/
2129    
2130    /^(a)\g{0}/
2131    
2132    /^(a)\g{3/
2133    
2134    /^(a)\g{4a}/
2135    
2136    /^a.b/<lf>
2137        a\rb
2138        *** Failers
2139        a\nb
2140    
2141    /.+foo/
2142        afoo
2143        ** Failers
2144        \r\nfoo
2145        \nfoo
2146    
2147    /.+foo/<crlf>
2148        afoo
2149        \nfoo
2150        ** Failers
2151        \r\nfoo
2152    
2153    /.+foo/<any>
2154        afoo
2155        ** Failers
2156        \nfoo
2157        \r\nfoo
2158    
2159    /.+foo/s
2160        afoo
2161        \r\nfoo
2162        \nfoo
2163    
2164    /^$/mg<any>
2165        abc\r\rxyz
2166        abc\n\rxyz
2167        ** Failers
2168        abc\r\nxyz
2169    
2170    /(?m)^$/<any>g+
2171        abc\r\n\r\n
2172    
2173    /(?m)^$|^\r\n/<any>g+
2174        abc\r\n\r\n
2175    
2176    /(?m)$/<any>g+
2177        abc\r\n\r\n
2178    
2179    /abc.$/mgx<anycrlf>
2180        abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
2181    
2182    /^X/m
2183        XABC
2184        ** Failers
2185        XABC\B
2186    
2187    /(ab|c)(?-1)/BZ
2188        abc
2189    
2190    /xy(?+1)(abc)/BZ
2191        xyabcabc
2192        ** Failers
2193        xyabc
2194    
2195    /x(?-0)y/
2196    
2197    /x(?-1)y/
2198    
2199    /x(?+0)y/
2200    
2201    /x(?+1)y/
2202    
2203    /^(abc)?(?(-1)X|Y)/BZ
2204        abcX
2205        Y
2206        ** Failers
2207        abcY
2208    
2209    /^((?(+1)X|Y)(abc))+/BZ
2210        YabcXabc
2211        YabcXabcXabc
2212        ** Failers
2213        XabcXabc
2214    
2215    /(?(-1)a)/BZ
2216    
2217    /((?(-1)a))/BZ
2218    
2219    /((?(-2)a))/BZ
2220    
2221    /^(?(+1)X|Y)(.)/BZ
2222        Y!
2223    
2224    /(?<A>tom|bon)-\k{A}/
2225        tom-tom
2226        bon-bon
2227        ** Failers
2228        tom-bon
2229    
2230    /\g{A/
2231    
2232    /(?|(abc)|(xyz))/BZ
2233       >abc<
2234       >xyz<
2235    
2236    /(x)(?|(abc)|(xyz))(x)/BZ
2237        xabcx
2238        xxyzx
2239    
2240    /(x)(?|(abc)(pqr)|(xyz))(x)/BZ
2241        xabcpqrx
2242        xxyzx
2243    
2244    /[\h]/BZ
2245        >\x09<
2246    
2247    /[\h]+/BZ
2248        >\x09\x20\xa0<
2249    
2250    /[\v]/BZ
2251    
2252    /[\H]/BZ
2253    
2254    /[^\h]/BZ
2255    
2256    /[\V]/BZ
2257    
2258    /[\x0a\V]/BZ
2259    
2260    /\H++X/BZ
2261        ** Failers
2262        XXXX
2263    
2264    /\H+\hY/BZ
2265        XXXX Y
2266    
2267    /\H+ Y/BZ
2268    
2269    /\h+A/BZ
2270    
2271    /\v*B/BZ
2272    
2273    /\V+\x0a/BZ
2274    
2275    /A+\h/BZ
2276    
2277    / *\H/BZ
2278    
2279    /A*\v/BZ
2280    
2281    /\x0b*\V/BZ
2282    
2283    /\d+\h/BZ
2284    
2285    /\d*\v/BZ
2286    
2287    /S+\h\S+\v/BZ
2288    
2289    /\w{3,}\h\w+\v/BZ
2290    
2291    /\h+\d\h+\w\h+\S\h+\H/BZ
2292    
2293    /\v+\d\v+\w\v+\S\v+\V/BZ
2294    
2295    /\H+\h\H+\d/BZ
2296    
2297    /\V+\v\V+\w/BZ
2298    
2299    /\( (?: [^()]* | (?R) )* \)/x
2300    (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
2301    
2302    /[\E]AAA/
2303    
2304    /[\Q\E]AAA/
2305    
2306    /[^\E]AAA/
2307    
2308    /[^\Q\E]AAA/
2309    
2310    /[\E^]AAA/
2311    
2312    /[\Q\E^]AAA/
2313    
2314    /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
2315    
2316    /^a+(*FAIL)/C
2317        aaaaaa
2318    
2319    /a+b?c+(*FAIL)/C
2320        aaabccc
2321    
2322    /a+b?(*PRUNE)c+(*FAIL)/C
2323        aaabccc
2324    
2325    /a+b?(*COMMIT)c+(*FAIL)/C
2326        aaabccc
2327    
2328    /a+b?(*SKIP)c+(*FAIL)/C
2329        aaabcccaaabccc
2330    
2331    /a+b?(*THEN)c+(*FAIL)/C
2332        aaabccc
2333    
2334    /a(*MARK)b/
2335    
2336    /(?i:A{1,}\6666666666)/
2337    
2338    /\g6666666666/
2339    
2340    /[\g6666666666]/BZ
2341    
2342    /(?1)\c[/
2343    
2344    /.+A/<crlf>
2345        \r\nA
2346    
2347    /\nA/<crlf>
2348        \r\nA
2349    
2350    /[\r\n]A/<crlf>
2351        \r\nA
2352    
2353    /(\r|\n)A/<crlf>
2354        \r\nA
2355    
2356    /a(*CR)b/
2357    
2358    /(*CR)a.b/
2359        a\nb
2360        ** Failers
2361        a\rb
2362    
2363    /(*CR)a.b/<lf>
2364        a\nb
2365        ** Failers
2366        a\rb
2367    
2368    /(*LF)a.b/<CRLF>
2369        a\rb
2370        ** Failers
2371        a\nb
2372    
2373    /(*CRLF)a.b/
2374        a\rb
2375        a\nb
2376        ** Failers
2377        a\r\nb
2378    
2379    /(*ANYCRLF)a.b/<CR>
2380        ** Failers
2381        a\rb
2382        a\nb
2383        a\r\nb
2384    
2385    /(*ANY)a.b/<cr>
2386        ** Failers
2387        a\rb
2388        a\nb
2389        a\r\nb
2390        a\x85b
2391    
2392    /(*ANY).*/g
2393        abc\r\ndef
2394    
2395    /(*ANYCRLF).*/g
2396        abc\r\ndef
2397    
2398    /(*CRLF).*/g
2399        abc\r\ndef
2400    
2401    /a\Rb/I<bsr_anycrlf>
2402        a\rb
2403        a\nb
2404        a\r\nb
2405        ** Failers
2406        a\x85b
2407        a\x0bb
2408    
2409    /a\Rb/I<bsr_unicode>
2410        a\rb
2411        a\nb
2412        a\r\nb
2413        a\x85b
2414        a\x0bb
2415        ** Failers
2416        a\x85b\<bsr_anycrlf>
2417        a\x0bb\<bsr_anycrlf>
2418    
2419    /a\R?b/I<bsr_anycrlf>
2420        a\rb
2421        a\nb
2422        a\r\nb
2423        ** Failers
2424        a\x85b
2425        a\x0bb
2426    
2427    /a\R?b/I<bsr_unicode>
2428        a\rb
2429        a\nb
2430        a\r\nb
2431        a\x85b
2432        a\x0bb
2433        ** Failers
2434        a\x85b\<bsr_anycrlf>
2435        a\x0bb\<bsr_anycrlf>
2436    
2437    /a\R{2,4}b/I<bsr_anycrlf>
2438        a\r\n\nb
2439        a\n\r\rb
2440        a\r\n\r\n\r\n\r\nb
2441        ** Failers
2442        a\x85\85b
2443        a\x0b\0bb
2444    
2445    /a\R{2,4}b/I<bsr_unicode>
2446        a\r\rb
2447        a\n\n\nb
2448        a\r\n\n\r\rb
2449        a\x85\85b
2450        a\x0b\0bb
2451        ** Failers
2452        a\r\r\r\r\rb
2453        a\x85\85b\<bsr_anycrlf>
2454        a\x0b\0bb\<bsr_anycrlf>
2455    
2456    /(*BSR_ANYCRLF)a\Rb/I
2457        a\nb
2458        a\rb
2459    
2460    /(*BSR_UNICODE)a\Rb/I
2461        a\x85b
2462    
2463    /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
2464        a\nb
2465        a\rb
2466    
2467    /(*CRLF)(*BSR_UNICODE)a\Rb/I
2468        a\x85b
2469    
2470    /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
2471    
2472    /(?<a>)(?&)/
2473    
2474    /(?<abc>)(?&a)/
2475    
2476    /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
2477    
2478    /(?+-a)/
2479    
2480    /(?-+a)/
2481    
2482    /(?(-1))/
2483    
2484    /(?(+10))/
2485    
2486    /(?(10))/
2487    
2488    /(?(+2))()()/
2489    
2490    /(?(2))()()/
2491    
2492    /\k''/
2493    
2494    /\k<>/
2495    
2496    /\k{}/
2497    
2498    /\k/
2499    
2500    /\kabc/
2501    
2502    /(?P=)/
2503    
2504    /(?P>)/
2505    
2506    /(?!\w)(?R)/
2507    
2508    /(?=\w)(?R)/
2509    
2510    /(?<!\w)(?R)/
2511    
2512    /(?<=\w)(?R)/
2513    
2514    /[[:foo:]]/
2515    
2516    /[[:1234:]]/
2517    
2518    /[[:f\oo:]]/
2519    
2520    /[[: :]]/
2521    
2522    /[[:...:]]/
2523    
2524    /[[:l\ower:]]/
2525    
2526    /[[:abc\:]]/
2527    
2528    /[abc[:x\]pqr:]]/
2529    
2530    /[[:a\dz:]]/
2531    
2532    /(^(a|b\g<-1'c))/
2533    
2534    /^(?+1)(?<a>x|y){0}z/
2535        xzxx
2536        yzyy
2537        ** Failers
2538        xxz
2539    
2540    /(\3)(\1)(a)/
2541        cat
2542    
2543    /(\3)(\1)(a)/<JS>
2544        cat
2545    
2546    /TA]/
2547        The ACTA] comes
2548    
2549    /TA]/<JS>
2550        The ACTA] comes
2551    
2552    /(?2)[]a()b](abc)/
2553        abcbabc
2554    
2555    /(?2)[^]a()b](abc)/
2556        abcbabc
2557    
2558    /(?1)[]a()b](abc)/
2559        abcbabc
2560        ** Failers
2561        abcXabc
2562    
2563    /(?1)[^]a()b](abc)/
2564        abcXabc
2565        ** Failers
2566        abcbabc
2567    
2568    /(?2)[]a()b](abc)(xyz)/
2569        xyzbabcxyz
2570    
2571    /(?&N)[]a(?<N>)](?<M>abc)/
2572       abc<abc
2573    
2574    /(?&N)[]a(?<N>)](abc)/
2575       abc<abc
2576    
2577    /a[]b/
2578    
2579    /a[^]b/
2580    
2581    /a[]b/<JS>
2582        ** Failers
2583        ab
2584    
2585    /a[]+b/<JS>
2586        ** Failers
2587        ab
2588    
2589    /a[]*+b/<JS>
2590        ** Failers
2591        ab
2592    
2593    /a[^]b/<JS>
2594        aXb
2595        a\nb
2596        ** Failers
2597        ab
2598    
2599    /a[^]+b/<JS>
2600        aXb
2601        a\nX\nXb
2602        ** Failers
2603        ab
2604    
2605    /a(?!)+b/
2606    
2607    /a(*FAIL)+b/
2608    
2609    /(abc|pqr|123){0}[xyz]/SI
2610    
2611    /(?(?=.*b)b|^)/CI
2612       adc
2613       abc
2614    
2615    /(?(?=b).*b|^d)/I
2616    
2617    /(?(?=.*b).*b|^d)/I
2618    
2619    /a?|b?/P
2620        abc
2621        ** Failers
2622        ddd\N
2623    
2624    /xyz/C
2625      xyz
2626      abcxyz
2627      abcxyz\Y
2628      ** Failers
2629      abc
2630      abc\Y
2631      abcxypqr
2632      abcxypqr\Y
2633    
2634    /(*NO_START_OPT)xyz/C
2635      abcxyz
2636    
2637    /xyz/CY
2638      abcxyz
2639    
2640    /^"((?(?=[a])[^"])|b)*"$/C
2641        "ab"
2642    
2643    /^"((?(?=[a])[^"])|b)*"$/
2644        "ab"
2645    
2646    /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2647        XYabcdY
2648    
2649    /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2650        XYabcdY
2651    
2652    /Xa{2,4}b/
2653        X\P
2654        Xa\P
2655        Xaa\P
2656        Xaaa\P
2657        Xaaaa\P
2658    
2659    /Xa{2,4}?b/
2660        X\P
2661        Xa\P
2662        Xaa\P
2663        Xaaa\P
2664        Xaaaa\P
2665    
2666    /Xa{2,4}+b/
2667        X\P
2668        Xa\P
2669        Xaa\P
2670        Xaaa\P
2671        Xaaaa\P
2672    
2673    /X\d{2,4}b/
2674        X\P
2675        X3\P
2676        X33\P
2677        X333\P
2678        X3333\P
2679    
2680    /X\d{2,4}?b/
2681        X\P
2682        X3\P
2683        X33\P
2684        X333\P
2685        X3333\P
2686    
2687    /X\d{2,4}+b/
2688        X\P
2689        X3\P
2690        X33\P
2691        X333\P
2692        X3333\P
2693    
2694    /X\D{2,4}b/
2695        X\P
2696        Xa\P
2697        Xaa\P
2698        Xaaa\P
2699        Xaaaa\P
2700    
2701    /X\D{2,4}?b/
2702        X\P
2703        Xa\P
2704        Xaa\P
2705        Xaaa\P
2706        Xaaaa\P
2707    
2708    /X\D{2,4}+b/
2709        X\P
2710        Xa\P
2711        Xaa\P
2712        Xaaa\P
2713        Xaaaa\P
2714    
2715    /X[abc]{2,4}b/
2716        X\P
2717        Xa\P
2718        Xaa\P
2719        Xaaa\P
2720        Xaaaa\P
2721    
2722    /X[abc]{2,4}?b/
2723        X\P
2724        Xa\P
2725        Xaa\P
2726        Xaaa\P
2727        Xaaaa\P
2728    
2729    /X[abc]{2,4}+b/
2730        X\P
2731        Xa\P
2732        Xaa\P
2733        Xaaa\P
2734        Xaaaa\P
2735    
2736    /X[^a]{2,4}b/
2737        X\P
2738        Xz\P
2739        Xzz\P
2740        Xzzz\P
2741        Xzzzz\P
2742    
2743    /X[^a]{2,4}?b/
2744        X\P
2745        Xz\P
2746        Xzz\P
2747        Xzzz\P
2748        Xzzzz\P
2749    
2750    /X[^a]{2,4}+b/
2751        X\P
2752        Xz\P
2753        Xzz\P
2754        Xzzz\P
2755        Xzzzz\P
2756    
2757    /(Y)X\1{2,4}b/
2758        YX\P
2759        YXY\P
2760        YXYY\P
2761        YXYYY\P
2762        YXYYYY\P
2763    
2764    /(Y)X\1{2,4}?b/
2765        YX\P
2766        YXY\P
2767        YXYY\P
2768        YXYYY\P
2769        YXYYYY\P
2770    
2771    /(Y)X\1{2,4}+b/
2772        YX\P
2773        YXY\P
2774        YXYY\P
2775        YXYYY\P
2776        YXYYYY\P
2777    
2778    /\++\KZ|\d+X|9+Y/
2779        ++++123999\P
2780        ++++123999Y\P
2781        ++++Z1234\P
2782    
2783    /Z(*F)/
2784        Z\P
2785        ZA\P
2786    
2787    /Z(?!)/
2788        Z\P
2789        ZA\P
2790    
2791    /dog(sbody)?/
2792        dogs\P
2793        dogs\P\P
2794    
2795    /dog(sbody)??/
2796        dogs\P
2797        dogs\P\P
2798    
2799    /dog|dogsbody/
2800        dogs\P
2801        dogs\P\P
2802    
2803    /dogsbody|dog/
2804        dogs\P
2805        dogs\P\P
2806    
2807    /\bthe cat\b/
2808        the cat\P
2809        the cat\P\P
2810    
2811    /abc/
2812       abc\P
2813       abc\P\P
2814    
2815    /\w+A/P
2816       CDAAAAB
2817    
2818    /\w+A/PU
2819       CDAAAAB
2820    
2821    /abc\K123/
2822        xyzabc123pqr
2823        xyzabc12\P
2824        xyzabc12\P\P
2825    
2826    /(?<=abc)123/
2827        xyzabc123pqr
2828        xyzabc12\P
2829        xyzabc12\P\P
2830    
2831    /\babc\b/
2832        +++abc+++
2833        +++ab\P
2834        +++ab\P\P
2835    
2836    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2837    
2838    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2839    
2840    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2841    
2842    /abc\K/+
2843        abcdef
2844        abcdef\N\N
2845        xyzabcdef\N\N
2846        ** Failers
2847        abcdef\N
2848        xyzabcdef\N
2849    
2850    /^(?:(?=abc)|abc\K)/+
2851        abcdef
2852        abcdef\N\N
2853        ** Failers
2854        abcdef\N
2855    
2856    /a?b?/+
2857        xyz
2858        xyzabc
2859        xyzabc\N
2860        xyzabc\N\N
2861        xyz\N\N
2862        ** Failers
2863        xyz\N
2864    
2865    /^a?b?/+
2866        xyz
2867        xyzabc
2868        ** Failers
2869        xyzabc\N
2870        xyzabc\N\N
2871        xyz\N\N
2872        xyz\N
2873    
2874    /^(?<name>a|b\g<name>c)/
2875        aaaa
2876        bacxxx
2877        bbaccxxx
2878        bbbacccxx
2879    
2880    /^(?<name>a|b\g'name'c)/
2881        aaaa
2882        bacxxx
2883        bbaccxxx
2884        bbbacccxx
2885    
2886    /^(a|b\g<1>c)/
2887        aaaa
2888        bacxxx
2889        bbaccxxx
2890        bbbacccxx
2891    
2892    /^(a|b\g'1'c)/
2893        aaaa
2894        bacxxx
2895        bbaccxxx
2896        bbbacccxx
2897    
2898    /^(a|b\g'-1'c)/
2899        aaaa
2900        bacxxx
2901        bbaccxxx
2902        bbbacccxx
2903    
2904    /(^(a|b\g<-1>c))/
2905        aaaa
2906        bacxxx
2907        bbaccxxx
2908        bbbacccxx
2909    
2910    /(?-i:\g<name>)(?i:(?<name>a))/
2911        XaaX
2912        XAAX
2913    
2914    /(?i:\g<name>)(?-i:(?<name>a))/
2915        XaaX
2916        ** Failers
2917        XAAX
2918    
2919    /(?-i:\g<+1>)(?i:(a))/
2920        XaaX
2921        XAAX
2922    
2923    /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
2924    
2925    /(?<n>a|b|c)\g<n>*/
2926       abc
2927       accccbbb
2928    
2929    /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2930        XYabcdY
2931    
2932    /(?<=b(?1)|zzz)(a)/
2933        xbaax
2934        xzzzax
2935    
2936    /(a)(?<=b\1)/
2937    
2938    /(a)(?<=b+(?1))/
2939    
2940    /(a+)(?<=b(?1))/
2941    
2942    /(a(?<=b(?1)))/
2943    
2944    /(?<=b(?1))xyz/
2945    
2946    /(?<=b(?1))xyz(b+)pqrstuvew/
2947    
2948    /(a|bc)\1/SI
2949    
2950    /(a|bc)\1{2,3}/SI
2951    
2952    /(a|bc)(?1)/SI
2953    
2954    /(a|b\1)(a|b\1)/SI
2955    
2956    /(a|b\1){2}/SI
2957    
2958    /(a|bbbb\1)(a|bbbb\1)/SI
2959    
2960    /(a|bbbb\1){2}/SI
2961    
2962    /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
2963    
2964    /  (?: [\040\t] |  \(
2965    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2966    \)  )*                          # optional leading comment
2967    (?:    (?:
2968    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2969    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2970    |
2971    " (?:                      # opening quote...
2972    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2973    |                     #    or
2974    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2975    )* "  # closing quote
2976    )                    # initial word
2977    (?:  (?: [\040\t] |  \(
2978    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2979    \)  )*  \.  (?: [\040\t] |  \(
2980    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2981    \)  )*   (?:
2982    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2983    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2984    |
2985    " (?:                      # opening quote...
2986    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2987    |                     #    or
2988    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2989    )* "  # closing quote
2990    )  )* # further okay, if led by a period
2991    (?: [\040\t] |  \(
2992    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2993    \)  )*  @  (?: [\040\t] |  \(
2994    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2995    \)  )*    (?:
2996    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2997    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2998    |   \[                         # [
2999    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3000    \]                        #           ]
3001    )                           # initial subdomain
3002    (?:                                  #
3003    (?: [\040\t] |  \(
3004    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3005    \)  )*  \.                        # if led by a period...
3006    (?: [\040\t] |  \(
3007    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3008    \)  )*   (?:
3009    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3010    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3011    |   \[                         # [
3012    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3013    \]                        #           ]
3014    )                     #   ...further okay
3015    )*
3016    # address
3017    |                     #  or
3018    (?:
3019    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3020    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3021    |
3022    " (?:                      # opening quote...
3023    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3024    |                     #    or
3025    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3026    )* "  # closing quote
3027    )             # one word, optionally followed by....
3028    (?:
3029    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
3030    \(
3031    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3032    \)       |  # comments, or...
3033    
3034    " (?:                      # opening quote...
3035    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3036    |                     #    or
3037    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3038    )* "  # closing quote
3039    # quoted strings
3040    )*
3041    <  (?: [\040\t] |  \(
3042    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3043    \)  )*                     # leading <
3044    (?:  @  (?: [\040\t] |  \(
3045    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3046    \)  )*    (?:
3047    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3048    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3049    |   \[                         # [
3050    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3051    \]                        #           ]
3052    )                           # initial subdomain
3053    (?:                                  #
3054    (?: [\040\t] |  \(
3055    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3056    \)  )*  \.                        # if led by a period...
3057    (?: [\040\t] |  \(
3058    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3059    \)  )*   (?:
3060    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3061    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3062    |   \[                         # [
3063    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3064    \]                        #           ]
3065    )                     #   ...further okay
3066    )*
3067    
3068    (?:  (?: [\040\t] |  \(
3069    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3070    \)  )*  ,  (?: [\040\t] |  \(
3071    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3072    \)  )*  @  (?: [\040\t] |  \(
3073    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3074    \)  )*    (?:
3075    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3076    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3077    |   \[                         # [
3078    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3079    \]                        #           ]
3080    )                           # initial subdomain
3081    (?:                                  #
3082    (?: [\040\t] |  \(
3083    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3084    \)  )*  \.                        # if led by a period...
3085    (?: [\040\t] |  \(
3086    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3087    \)  )*   (?:
3088    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3089    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3090    |   \[                         # [
3091    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3092    \]                        #           ]
3093    )                     #   ...further okay
3094    )*
3095    )* # further okay, if led by comma
3096    :                                # closing colon
3097    (?: [\040\t] |  \(
3098    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3099    \)  )*  )? #       optional route
3100    (?:
3101    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3102    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3103    |
3104    " (?:                      # opening quote...
3105    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3106    |                     #    or
3107    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3108    )* "  # closing quote
3109    )                    # initial word
3110    (?:  (?: [\040\t] |  \(
3111    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3112    \)  )*  \.  (?: [\040\t] |  \(
3113    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3114    \)  )*   (?:
3115    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3116    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3117    |
3118    " (?:                      # opening quote...
3119    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3120    |                     #    or
3121    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3122    )* "  # closing quote
3123    )  )* # further okay, if led by a period
3124    (?: [\040\t] |  \(
3125    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3126    \)  )*  @  (?: [\040\t] |  \(
3127    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3128    \)  )*    (?:
3129    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3130    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3131    |   \[                         # [
3132    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3133    \]                        #           ]
3134    )                           # initial subdomain
3135    (?:                                  #
3136    (?: [\040\t] |  \(
3137    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3138    \)  )*  \.                        # if led by a period...
3139    (?: [\040\t] |  \(
3140    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3141    \)  )*   (?:
3142    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3143    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3144    |   \[                         # [
3145    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3146    \]                        #           ]
3147    )                     #   ...further okay
3148    )*
3149    #       address spec
3150    (?: [\040\t] |  \(
3151    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3152    \)  )*  > #                  trailing >
3153    # name and address
3154    )  (?: [\040\t] |  \(
3155    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3156    \)  )*                       # optional trailing comment
3157    /xSI
3158    
3159    /<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
3160    
3161    "(?>.*/)foo"SI
3162    
3163    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3164    
3165    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3166    
3167    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3168    
3169    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3170     ([\"\'])?                       # find single or double quote
3171     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3172                                     # quote, otherwise match up to next space
3173    /isxSI
3174    
3175    /^(?!:)                       # colon disallowed at start
3176      (?:                         # start of item
3177        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3178        (?(1)0 | () ) )           # if null previously matched, fail; else null
3179        :                         # followed by colon
3180      ){1,7}                      # end item; 1-7 of them required
3181      [0-9a-f]{1,4} $             # final hex number at end of string
3182      (?(1)|.)                    # check that there was an empty component
3183      /xiIS
3184    
3185    /(?|(?<a>A)|(?<a>B))/I
3186        AB\Ca
3187        BA\Ca
3188    
3189    /(?|(?<a>A)|(?<b>B))/
3190    
3191    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3192        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3193        (?('quote')[a-z]+|[0-9]+)/JIx
3194        a"aaaaa
3195        b"aaaaa
3196        ** Failers
3197        b"11111
3198        a"11111
3199    
3200    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3201        abcdX
3202        eX
3203        ** Failers
3204        abcdY
3205        ey
3206    
3207    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3208        abcdd
3209        ** Failers
3210        abcdde
3211    
3212    /abcd*/
3213        xxxxabcd\P
3214        xxxxabcd\P\P
3215    
3216    /abcd*/i
3217        xxxxabcd\P
3218        xxxxabcd\P\P
3219        XXXXABCD\P
3220        XXXXABCD\P\P
3221    
3222    /abc\d*/
3223        xxxxabc1\P
3224        xxxxabc1\P\P
3225    
3226    /(a)bc\1*/
3227        xxxxabca\P
3228        xxxxabca\P\P
3229    
3230    /abc[de]*/
3231        xxxxabcde\P
3232        xxxxabcde\P\P
3233    
3234    /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
3235        broken and not behaving as specified in that it *does* bumpalong after
3236        hitting (*COMMIT). --/
3237    
3238    /(?1)(A(*COMMIT)|B)D/
3239        ABD
3240        XABD
3241        BAD
3242        ABXABD
3243        ** Failers
3244        ABX
3245        BAXBAD
3246    
3247    /(\3)(\1)(a)/<JS>
3248        cat
3249    
3250    /(\3)(\1)(a)/SI<JS>
3251        cat
3252    
3253    /(\3)(\1)(a)/SI
3254        cat
3255    
3256    /i(?(DEFINE)(?<s>a))/SI
3257        i
3258    
3259    /()i(?(1)a)/SI
3260        ia
3261    
3262    /(?i)a(?-i)b|c/BZ
3263        XabX
3264        XAbX
3265        CcC
3266        ** Failers
3267        XABX
3268    
3269    /(?i)a(?s)b|c/BZ
3270    
3271    /(?i)a(?s-i)b|c/BZ
3272    
3273    /^(ab(c\1)d|x){2}$/BZ
3274        xabcxd
3275    
3276    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3277    
3278    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3279    
3280    / -- The first four of these are not in the Perl >= 5.10 test because Perl
3281         documents that the use of \K in assertions is "not well defined". The
3282         last is here because Perl gives the match as "b" rather than "ab". I
3283         believe this to be a Perl bug. --/
3284    
3285    /(?=a\Kb)ab/
3286        ab
3287    
3288    /(?!a\Kb)ac/
3289        ac
3290    
3291    /^abc(?<=b\Kc)d/
3292        abcd
3293    
3294    /^abc(?<!b\Kq)d/
3295        abcd
3296    
3297    /(?>a\Kb)z|(ab)/
3298        ab
3299    
3300    /----------------------/
3301    
3302    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3303    
3304    /abc(*MARK:)pqr/
3305    
3306    /abc(*:)pqr/
3307    
3308    /abc(*FAIL:123)xyz/
3309    
3310    /--- This should, and does, fail. In Perl, it does not, which I think is a
3311         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3312    
3313    /A(*COMMIT)B/+K
3314        ACABX
3315    
3316    /--- These should be different, but in Perl 5.11 are not, which I think
3317         is a bug in Perl. ---/
3318    
3319    /A(*THEN)B|A(*THEN)C/K
3320        AC
3321    
3322    /A(*PRUNE)B|A(*PRUNE)C/K
3323        AC
3324    
3325    /--- A whole lot of tests of verbs with arguments are here rather than in test
3326         11 because Perl doesn't seem to follow its specification entirely
3327         correctly. ---/
3328    
3329    /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
3330         not clear how Perl defines "involved in the failure of the match". ---/
3331    
3332    /^(A(*THEN:A)B|C(*THEN:B)D)/K
3333        AB
3334        CD
3335        ** Failers
3336        AC
3337        CB
3338    
3339    /--- Check the use of names for success and failure. PCRE doesn't show these
3340    names for success, though Perl does, contrary to its spec. ---/
3341    
3342    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
3343        AB
3344        CD
3345        ** Failers
3346        AC
3347        CB
3348    
3349    /--- An empty name does not pass back an empty string. It is the same as if no
3350    name were given. ---/
3351    
3352    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
3353        AB
3354        CD
3355    
3356    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
3357    
3358    /A(*PRUNE:A)B/K
3359        ACAB
3360    
3361    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3362        C
3363        D
3364    
3365    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
3366        C
3367        D
3368    
3369    /(*MARK:A)(*THEN:B)(C|X)/KS
3370        C
3371        D
3372    
3373    /(*MARK:A)(*THEN:B)(C|X)/KSS
3374        C
3375        D
3376    
3377    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
3378    
3379    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
3380        AAAC
3381    
3382    /--- Same --/
3383    
3384    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
3385        AAAC
3386    
3387    /--- This should fail; the SKIP advances by one, but when we get to AC, the
3388         PRUNE kills it. ---/
3389    
3390    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3391        AAAC
3392    
3393    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
3394        AAAC
3395    
3396    /--- This should fail, as a null name is the same as no name ---/
3397    
3398    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
3399        AAAC
3400    
3401    /--- This fails in PCRE, and I think that is in accordance with Perl's
3402         documentation, though in Perl it succeeds. ---/
3403    
3404    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
3405        AAAC
3406    
3407    /--- Mark names can be duplicated ---/
3408    
3409    /A(*:A)B|X(*:A)Y/K
3410        AABC
3411        XXYZ
3412    
3413    /^A(*:A)B|^X(*:A)Y/K
3414        ** Failers
3415        XAQQ
3416    
3417    /--- A check on what happens after hitting a mark and them bumping along to
3418    something that does not even start. Perl reports tags after the failures here,
3419    though it does not when the individual letters are made into something
3420    more complicated. ---/
3421    
3422    /A(*:A)B|XX(*:B)Y/K
3423        AABC
3424        XXYZ
3425        ** Failers
3426        XAQQ
3427        XAQQXZZ
3428        AXQQQ
3429        AXXQQQ
3430    
3431    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3432    optimizations defeat this. So does the PCRE optimization unless we disable it
3433    with \Y. ---/
3434    
3435    /(*COMMIT)ABC/
3436        ABCDEFG
3437        ** Failers
3438        DEFGABC\Y
3439    
3440    /--- Repeat some tests with added studying. ---/
3441    
3442    /A(*COMMIT)B/+KS
3443        ACABX
3444    
3445    /A(*THEN)B|A(*THEN)C/KS
3446        AC
3447    
3448    /A(*PRUNE)B|A(*PRUNE)C/KS
3449        AC
3450    
3451    /^(A(*THEN:A)B|C(*THEN:B)D)/KS
3452        AB
3453        CD
3454        ** Failers
3455        AC
3456        CB
3457    
3458    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
3459        AB
3460        CD
3461        ** Failers
3462        AC
3463        CB
3464    
3465    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
3466        AB
3467        CD
3468    
3469    /A(*PRUNE:A)B/KS
3470        ACAB
3471    
3472    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3473        C
3474        D
3475    
3476    /(*MARK:A)(*THEN:B)(C|X)/KS
3477        C
3478        D
3479    
3480    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
3481        AAAC
3482    
3483    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
3484        AAAC
3485    
3486    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
3487        AAAC
3488    
3489    /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
3490        AAAC
3491    
3492    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
3493        AAAC
3494    
3495    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
3496        AAAC
3497    
3498    /A(*:A)B|XX(*:B)Y/KS
3499        AABC
3500        XXYZ
3501        ** Failers
3502        XAQQ
3503        XAQQXZZ
3504        AXQQQ
3505        AXXQQQ
3506    
3507    /(*COMMIT)ABC/
3508        ABCDEFG
3509        ** Failers
3510        DEFGABC\Y
3511    
3512    /^(ab (c+(*THEN)cd) | xyz)/x
3513        abcccd
3514    
3515    /^(ab (c+(*PRUNE)cd) | xyz)/x
3516        abcccd
3517    
3518    /^(ab (c+(*FAIL)cd) | xyz)/x
3519        abcccd
3520    
3521    /--- Perl 5.11 gets some of these wrong ---/
3522    
3523    /(?>.(*ACCEPT))*?5/
3524        abcde
3525    
3526    /(.(*ACCEPT))*?5/
3527        abcde
3528    
3529    /(.(*ACCEPT))5/
3530        abcde
3531    
3532    /(.(*ACCEPT))*5/
3533        abcde
3534    
3535    /A\NB./BZ
3536        ACBD
3537        *** Failers
3538        A\nB
3539        ACB\n
3540    
3541    /A\NB./sBZ
3542        ACBD
3543        ACB\n
3544        *** Failers
3545        A\nB
3546    
3547    /A\NB/<crlf>
3548        A\nB
3549        A\rB
3550        ** Failers
3551        A\r\nB
3552    
3553    /\R+b/BZ
3554    
3555    /\R+\n/BZ
3556    
3557    /\R+\d/BZ
3558    
3559    /\d*\R/BZ
3560    
3561    /\s*\R/BZ
3562    
3563    /-- Perl treats this one differently, not failing the second string. I believe
3564        that is a bug in Perl. --/
3565    
3566    /^((abc|abcx)(*THEN)y|abcd)/
3567        abcd
3568        *** Failers
3569        abcxy
3570    
3571    /(?<=abc)def/
3572        abc\P\P
3573    
3574    /abc$/
3575        abc
3576        abc\P
3577        abc\P\P
3578    
3579    /abc$/m
3580        abc
3581        abc\n
3582        abc\P\P
3583        abc\n\P\P
3584        abc\P
3585        abc\n\P
3586    
3587    /abc\z/
3588        abc
3589        abc\P
3590        abc\P\P
3591    
3592    /abc\Z/
3593        abc
3594        abc\P
3595        abc\P\P
3596    
3597    /abc\b/
3598        abc
3599        abc\P
3600        abc\P\P
3601    
3602    /abc\B/
3603        abc
3604        abc\P
3605        abc\P\P
3606    
3607    /.+/
3608        abc\>0
3609        abc\>1
3610        abc\>2
3611        abc\>3
3612        abc\>4
3613        abc\>-4
3614    
3615    /^\cģ/
3616    
3617    /(?P<abn>(?P=abn)xxx)/BZ
3618    
3619    /(a\1z)/BZ
3620    
3621    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
3622    
3623    /(?P<abn>(?P=axn)xxx)/BZ
3624    
3625    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
3626    
3627    /-- These tests are here because Perl gets the first one wrong. --/
3628    
3629    /(\R*)(.)/s
3630        \r\n
3631        \r\r\n\n\r
3632        \r\r\n\n\r\n
3633    
3634    /(\R)*(.)/s
3635        \r\n
3636        \r\r\n\n\r
3637        \r\r\n\n\r\n
3638    
3639    /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
3640        \r\n
3641        \r\r\n\n\r
3642        \r\r\n\n\r\n
3643    
3644    /-- --/
3645    
3646    /^abc$/BZ
3647    
3648    /^abc$/BZm
3649    
3650    /^(a)*+(\w)/S
3651        aaaaX
3652        ** Failers
3653        aaaa
3654    
3655    /^(?:a)*+(\w)/S
3656        aaaaX
3657        ** Failers
3658        aaaa
3659    
3660    /(a)++1234/SDZ
3661    
3662    /([abc])++1234/SI
3663    
3664    /(?<=(abc)+)X/
3665    
3666    /(^ab)/I
3667    
3668    /(^ab)++/I
3669    
3670    /(^ab|^)+/I
3671    
3672    /(^ab|^)++/I
3673    
3674    /(?:^ab)/I
3675    
3676    /(?:^ab)++/I
3677    
3678    /(?:^ab|^)+/I
3679    
3680    /(?:^ab|^)++/I
3681    
3682    /(.*ab)/I
3683