/[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 49 by nigel, Sat Feb 24 21:39:33 2007 UTC revision 613 by ph10, Sat Jul 2 16:59:52 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 38  Line 49 
49    
50  /[abcd/  /[abcd/
51    
52  /[\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    
# 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
293        ***Failers
294        rhubarb
295        barbell
296        abc\nbarton
297    
298    /^(?<=foo\n)bar/Im
299        foo\nbarbar
300        ***Failers
301        rhubarb
302        barbell
303        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 281  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 350  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 384  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 398  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
   
 /(?s)(.*X|^B)/D  
480    
481  /(?s:.*X|^B)/D  /.*X/IDZs
482    
483  /\Biss\B/+  /(.*X|^B)/IDZ
484    
485    /(.*X|^B)/IDZs
486    
487    /(?s)(.*X|^B)/IDZ
488    
489    /(?s:.*X|^B)/IDZ
490    
491    /\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 589  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 599  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  /^[[:alpha:]]/D  /[_[:alpha:]]/IS
   
 /^[[:ascii:]]/D  
712    
713  /^[[:cntrl:]]/D  /^[[:ascii:]]/DZ
714    
715  /^[[:digit:]]/D  /^[[:^ascii:]]/DZ
716    
717  /^[[:graph:]]/D  /^[[:blank:]]/DZ
718    
719  /^[[:lower:]]/D  /^[[:^blank:]]/DZ
720    
721  /^[[:print:]]/D  /[\n\x0b\x0c\x0d[:blank:]]/IS
722    
723  /^[[:punct:]]/D  /^[[:cntrl:]]/DZ
724    
725  /^[[:space:]]/D  /^[[:digit:]]/DZ
726    
727  /^[[:upper:]]/D  /^[[:graph:]]/DZ
728    
729  /^[[:xdigit:]]/D  /^[[:lower:]]/DZ
730    
731  /^[[:word:]]/D  /^[[:print:]]/DZ
732    
733  /^[[:^cntrl:]]/D  /^[[:punct:]]/DZ
734    
735  /^[12[:^digit:]]/D  /^[[:space:]]/DZ
736    
737  /[01[:alpha:]%]/D  /^[[:upper:]]/DZ
738    
739  /[[.ch.]]/  /^[[:xdigit:]]/DZ
740    
741  /[[=ch=]]/  /^[[:word:]]/DZ
742    
743  /[[:rhubarb:]]/  /^[[:^cntrl:]]/DZ
744    
745  /[[:upper:]]/i  /^[12[:^digit:]]/DZ
746    
747    /^[[:^blank:]]/DZ
748    
749    /[01[:alpha:]%]/DZ
750    
751    /[[.ch.]]/I
752    
753    /[[=ch=]]/I
754    
755    /[[: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-\110]/I
773    
774    /^(?(0)f|b)oo/I
775    
776    /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)/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
780    
781    /This one's here because Perl does this differently and PCRE can't at present/I
782    
783    /(main(O)?)+/I
784        mainmain
785        mainOmain
786    
787    /These are all cases where Perl does it differently (nested captures)/I
788    
789    /^(a(b)?)+$/I
790        aba
791    
792    /^(aa(bb)?)+$/I
793        aabbaa
794    
795    /^(aa|aa(bb))+$/I
796        aabbaa
797    
798    /^(aa(bb)??)+$/I
799        aabbaa
800    
801    /^(?:aa(bb)?)+$/I
802        aabbaa
803    
804    /^(aa(b(b))?)+$/I
805        aabbaa
806    
807    /^(?:aa(b(b))?)+$/I
808        aabbaa
809    
810    /^(?:aa(b(?:b))?)+$/I
811        aabbaa
812    
813    /^(?:aa(bb(?:b))?)+$/I
814        aabbbaa
815    
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    /#/IxDZ
834    
835    /a#/IxDZ
836    
837    /[\s]/DZ
838    
839    /[\S]/DZ
840    
841    /a(?i)b/DZ
842        ab
843        aB
844        *** Failers
845        AB
846    
847    /(a(?i)b)/DZ
848        ab
849        aB
850        *** Failers
851        AB
852    
853    /   (?i)abc/IxDZ
854    
855    /#this is a comment
856      (?i)abc/IxDZ
857    
858    /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
859    
860    /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
861    
862    /\Q\E/DZ
863        \
864    
865    /\Q\Ex/DZ
866    
867    / \Q\E/DZ
868    
869    /a\Q\E/DZ
870      abc
871      bca
872      bac
873    
874    /a\Q\Eb/DZ
875      abc
876    
877    /\Q\Eabc/DZ
878    
879    /x*+\w/DZ
880        *** Failers
881        xxxxx
882    
883    /x?+/DZ
884    
885    /x++/DZ
886    
887    /x{1,3}+/DZ
888    
889    /(x)*+/DZ
890    
891    /^(\w++|\s++)*$/I
892        now is the time for all good men to come to the aid of the party
893        *** Failers
894        this is not a line with only words and spaces!
895    
896    /(\d++)(\w)/I
897        12345a
898        *** Failers
899        12345+
900    
901    /a++b/I
902        aaab
903    
904    /(a++b)/I
905        aaab
906    
907    /(a++)b/I
908        aaab
909    
910    /([^()]++|\([^()]*\))+/I
911        ((abc(ade)ufh()()x
912    
913    /\(([^()]++|\([^()]+\))+\)/I
914        (abc)
915        (abc(def)xyz)
916        *** Failers
917        ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
918    
919    /(abc){1,3}+/DZ
920    
921    /a+?+/I
922    
923    /a{2,3}?+b/I
924    
925    /(?U)a+?+/I
926    
927    /a{2,3}?+b/IU
928    
929    /x(?U)a++b/DZ
930        xaaaab
931    
932    /(?U)xa++b/DZ
933        xaaaab
934    
935    /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
936    
937    /^x(?U)a+b/DZ
938    
939    /^x(?U)(a+)b/DZ
940    
941    /[.x.]/I
942    
943    /[=x=]/I
944    
945    /[:x:]/I
946    
947    /\l/I
948    
949    /\L/I
950    
951    /\N{name}/I
952    
953    /\u/I
954    
955    /\U/I
956    
957    /[/I
958    
959    /[a-/I
960    
961    /[[:space:]/I
962    
963    /[\s]/IDZ
964    
965    /[[:space:]]/IDZ
966    
967    /[[:space:]abcde]/IDZ
968    
969    /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/Ix
970        <>
971        <abcd>
972        <abc <123> hij>
973        <abc <def> hij>
974        <abc<>def>
975        <abc<>
976        *** Failers
977        <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|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|IDZ
982    
983    /(.*)\d+\1/I
984    
985    /(.*)\d+/I
986    
987    /(.*)\d+\1/Is
988    
989    /(.*)\d+/Is
990    
991    /(.*(xyz))\d+\2/I
992    
993    /((.*))\d+\1/I
994        abc123bc
995    
996    /a[b]/I
997    
998    /(?=a).*/I
999    
1000    /(?=abc).xyz/IiI
1001    
1002    /(?=abc)(?i).xyz/I
1003    
1004    /(?=a)(?=b)/I
1005    
1006    /(?=.)a/I
1007    
1008    /((?=abcda)a)/I
1009    
1010    /((?=abcda)ab)/I
1011    
1012    /()a/I
1013    
1014    /(?(1)ab|ac)(.)/I
1015    
1016    /(?(1)abz|acz)(.)/I
1017    
1018    /(?(1)abz)(.)/I
1019    
1020    /(?(1)abz)(1)23/I
1021    
1022    /(a)+/I
1023    
1024    /(a){2,3}/I
1025    
1026    /(a)*/I
1027    
1028    /[a]/I
1029    
1030    /[ab]/I
1031    
1032    /[ab]/IS
1033    
1034    /[^a]/I
1035    
1036    /\d456/I
1037    
1038    /\d456/IS
1039    
1040    /a^b/I
1041    
1042    /^a/Im
1043      abcde
1044      xy\nabc
1045      *** Failers
1046      xyabc
1047    
1048    /c|abc/I
1049    
1050    /(?i)[ab]/IS
1051    
1052    /[ab](?i)cd/IS
1053    
1054    /abc(?C)def/I
1055        abcdef
1056        1234abcdef
1057        *** Failers
1058        abcxyz
1059        abcxyzf
1060    
1061    /abc(?C)de(?C1)f/I
1062        123abcdef
1063    
1064    /(?C1)\dabc(?C2)def/IS
1065        1234abcdef
1066        *** Failers
1067        abcdef
1068    
1069    /(?C1)\dabc(?C2)def/ISS
1070        1234abcdef
1071        *** Failers
1072        abcdef
1073    
1074    /(?C255)ab/I
1075    
1076    /(?C256)ab/I
1077    
1078    /(?Cab)xx/I
1079    
1080    /(?C12vr)x/I
1081    
1082    /abc(?C)def/I
1083        *** Failers
1084        \x83\x0\x61bcdef
1085    
1086    /(abc)(?C)de(?C1)f/I
1087        123abcdef
1088        123abcdef\C+
1089        123abcdef\C-
1090        *** Failers
1091        123abcdef\C!1
1092    
1093    /(?C0)(abc(?C1))*/I
1094        abcabcabc
1095        abcabc\C!1!3
1096        *** Failers
1097        abcabcabc\C!1!3
1098    
1099    /(\d{3}(?C))*/I
1100        123\C+
1101        123456\C+
1102        123456789\C+
1103    
1104    /((xyz)(?C)p|(?C1)xyzabc)/I
1105        xyzabc\C+
1106    
1107    /(X)((xyz)(?C)p|(?C1)xyzabc)/I
1108        Xxyzabc\C+
1109    
1110    /(?=(abc))(?C)abcdef/I
1111        abcdef\C+
1112    
1113    /(?!(abc)(?C1)d)(?C2)abcxyz/I
1114        abcxyz\C+
1115    
1116    /(?<=(abc)(?C))xyz/I
1117       abcxyz\C+
1118    
1119    /a(b+)(c*)(?C1)/I
1120        abbbbbccc\C*1
1121    
1122    /a(b+?)(c*?)(?C1)/I
1123        abbbbbccc\C*1
1124    
1125    /(?C)abc/I
1126    
1127    /(?C)^abc/I
1128    
1129    /(?C)a|b/IS
1130    
1131    /(?R)/I
1132    
1133    /(a|(?R))/I
1134    
1135    /(ab|(bc|(de|(?R))))/I
1136    
1137    /x(ab|(bc|(de|(?R))))/I
1138        xab
1139        xbc
1140        xde
1141        xxab
1142        xxxab
1143        *** Failers
1144        xyab
1145    
1146    /(ab|(bc|(de|(?1))))/I
1147    
1148    /x(ab|(bc|(de|(?1)x)x)x)/I
1149    
1150    /^([^()]|\((?1)*\))*$/I
1151        abc
1152        a(b)c
1153        a(b(c))d
1154        *** Failers)
1155        a(b(c)d
1156    
1157    /^>abc>([^()]|\((?1)*\))*<xyz<$/I
1158       >abc>123<xyz<
1159       >abc>1(2)3<xyz<
1160       >abc>(1(2)3)<xyz<
1161    
1162    /(a(?1)b)/DZ
1163    
1164    /(a(?1)+b)/DZ
1165    
1166    /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1167        12
1168        (((2+2)*-3)-7)
1169        -12
1170        *** Failers
1171        ((2+2)*-3)-7)
1172    
1173    /^(x(y|(?1){2})z)/I
1174        xyz
1175        xxyzxyzz
1176        *** Failers
1177        xxyzz
1178        xxyzxyzxyzz
1179    
1180    /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/Ix
1181        <>
1182        <abcd>
1183        <abc <123> hij>
1184        <abc <def> hij>
1185        <abc<>def>
1186        <abc<>
1187        *** Failers
1188        <abc
1189    
1190    /(?1)/I
1191    
1192    /((?2)(abc)/I
1193    
1194    /^(abc)def(?1)/I
1195        abcdefabc
1196    
1197    /^(a|b|c)=(?1)+/I
1198        a=a
1199        a=b
1200        a=bc
1201    
1202    /^(a|b|c)=((?1))+/I
1203        a=a
1204        a=b
1205        a=bc
1206    
1207    /a(?P<name1>b|c)d(?P<longername2>e)/DZ
1208        abde
1209        acde
1210    
1211    /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ
1212    
1213    /(?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*$/Ii
1216        1221
1217        Satan, oscillate my metallic sonatas!
1218        A man, a plan, a canal: Panama!
1219        Able was I ere I saw Elba.
1220        *** Failers
1221        The quick brown fox
1222    
1223    /((?(R)a|b))\1(?1)?/I
1224      bb
1225      bbaa
1226    
1227    /(.*)a/Is
1228    
1229    /(.*)a\1/Is
1230    
1231    /(.*)a(b)\2/Is
1232    
1233  /[\200-\410]/  /((.*)a|(.*)b)z/Is
1234    
1235    /((.*)a|(.*)b)z\1/Is
1236    
1237    /((.*)a|(.*)b)z\2/Is
1238    
1239    /((.*)a|(.*)b)z\3/Is
1240    
1241    /((.*)a|^(.*)b)z\3/Is
1242    
1243    /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
1244    
1245    /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
1246    
1247    /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
1248    
1249    /(a)(bc)/INDZ
1250      abc
1251    
1252    /(?P<one>a)(bc)/INDZ
1253      abc
1254    
1255    /(a)(?P<named>bc)/INDZ
1256    
1257    /(a+)*zz/I
1258      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
1259      aaaaaaaaaaaaaz\M
1260    
1261    /(aaa(?C1)bbb|ab)/I
1262       aaabbb
1263       aaabbb\C*0
1264       aaabbb\C*1
1265       aaabbb\C*-1
1266    
1267    /ab(?P<one>cd)ef(?P<two>gh)/I
1268        abcdefgh
1269        abcdefgh\C1\Gtwo
1270        abcdefgh\Cone\Ctwo
1271        abcdefgh\Cthree
1272    
1273    /(?P<Tes>)(?P<Test>)/DZ
1274    
1275    /(?P<Test>)(?P<Tes>)/DZ
1276    
1277    /(?P<Z>zz)(?P<A>aa)/I
1278        zzaa\CZ
1279        zzaa\CA
1280    
1281    /(?P<x>eks)(?P<x>eccs)/I
1282    
1283    /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
1284    
1285    "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
1286        [10,20,30,5,5,4,4,2,43,23,4234]
1287        *** Failers
1288        []
1289    
1290    "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
1291        [10,20,30,5,5,4,4,2,43,23,4234]
1292        []
1293    
1294    /(a(b(?2)c))?/DZ
1295    
1296    /(a(b(?2)c))*/DZ
1297    
1298    /(a(b(?2)c)){0,2}/DZ
1299    
1300    /[ab]{1}+/DZ
1301    
1302    /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
1303         Baby Bjorn Active Carrier - With free SHIPPING!!
1304    
1305    /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS
1306         Baby Bjorn Active Carrier - With free SHIPPING!!
1307    
1308    /a*.*b/ISDZ
1309    
1310    /(a|b)*.?c/ISDZ
1311    
1312    /abc(?C255)de(?C)f/DZ
1313    
1314    /abcde/ICDZ
1315      abcde
1316      abcdfe
1317    
1318    /a*b/ICDZS
1319      ab
1320      aaaab
1321      aaaacb
1322    
1323    /a*b/ICDZSS
1324      ab
1325      aaaab
1326      aaaacb
1327    
1328    /a+b/ICDZ
1329      ab
1330      aaaab
1331      aaaacb
1332    
1333    /(abc|def)x/ICDZS
1334      abcx
1335      defx
1336      ** Failers
1337      abcdefzx
1338    
1339    /(abc|def)x/ICDZSS
1340      abcx
1341      defx
1342      ** Failers
1343      abcdefzx
1344    
1345    /(ab|cd){3,4}/IC
1346      ababab
1347      abcdabcd
1348      abcdcdcdcdcd
1349    
1350    /([ab]{,4}c|xy)/ICDZS
1351        Note: that { does NOT introduce a quantifier
1352    
1353    /([ab]{,4}c|xy)/ICDZSS
1354        Note: that { does NOT introduce a quantifier
1355    
1356    /([ab]{1,4}c|xy){4,5}?123/ICDZ
1357        aacaacaacaacaac123
1358    
1359    /\b.*/I
1360      ab cd\>1
1361    
1362    /\b.*/Is
1363      ab cd\>1
1364    
1365    /(?!.bcd).*/I
1366      Xbcd12345
1367    
1368    /abcde/I
1369        ab\P
1370        abc\P
1371        abcd\P
1372        abcde\P
1373        the quick brown abc\P
1374        ** Failers\P
1375        the quick brown abxyz fox\P
1376    
1377    "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
1378        13/05/04\P
1379        13/5/2004\P
1380        02/05/09\P
1381        1\P
1382        1/2\P
1383        1/2/0\P
1384        1/2/04\P
1385        0\P
1386        02/\P
1387        02/0\P
1388        02/1\P
1389        ** Failers\P
1390        \P
1391        123\P
1392        33/4/04\P
1393        3/13/04\P
1394        0/1/2003\P
1395        0/\P
1396        02/0/\P
1397        02/13\P
1398    
1399    /0{0,2}ABC/I
1400    
1401    /\d{3,}ABC/I
1402    
1403    /\d*ABC/I
1404    
1405    /[abc]+DE/I
1406    
1407    /[abc]?123/I
1408        123\P
1409        a\P
1410        b\P
1411        c\P
1412        c12\P
1413        c123\P
1414    
1415    /^(?:\d){3,5}X/I
1416        1\P
1417        123\P
1418        123X
1419        1234\P
1420        1234X
1421        12345\P
1422        12345X
1423        *** Failers
1424        1X
1425        123456\P
1426    
1427    /abc/IS>testsavedregex
1428    <testsavedregex
1429        abc
1430        ** Failers
1431        bca
1432    
1433    /abc/ISS>testsavedregex
1434    <testsavedregex
1435        abc
1436        ** Failers
1437        bca
1438    
1439    /abc/IFS>testsavedregex
1440    <testsavedregex
1441        abc
1442        ** Failers
1443        bca
1444    
1445    /abc/IFSS>testsavedregex
1446    <testsavedregex
1447        abc
1448        ** Failers
1449        bca
1450    
1451    /(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>
1477    
1478    /^a/IF
1479    
1480    /line\nbreak/I
1481        this is a line\nbreak
1482        line one\nthis is a line\nbreak in the second line
1483    
1484    /line\nbreak/If
1485        this is a line\nbreak
1486        ** Failers
1487        line one\nthis is a line\nbreak in the second line
1488    
1489    /line\nbreak/Imf
1490        this is a line\nbreak
1491        ** Failers
1492        line one\nthis is a line\nbreak in the second line
1493    
1494    /ab.cd/P
1495        ab-cd
1496        ab=cd
1497        ** Failers
1498        ab\ncd
1499    
1500    /ab.cd/Ps
1501        ab-cd
1502        ab=cd
1503        ab\ncd
1504    
1505    /(?i)(?-i)AbCd/I
1506        AbCd
1507        ** Failers
1508        abcd
1509    
1510    /a{11111111111111111111}/I
1511    
1512    /(){64294967295}/I
1513    
1514    /(){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
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"I
1520        abcdefghijklAkB
1521    
1522    "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
1523        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)"I
1526        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)"I
1529        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1530    
1531    /[^()]*(?:\((?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    /(?(DEFINE) abc){3} xyz/x
2024    
2025    /(a|)*\d/
2026      \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2027      \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
2028    
2029    /^a.b/<lf>
2030        a\rb
2031        a\nb\<cr>
2032        a\x85b\<anycrlf>
2033        ** Failers
2034        a\nb
2035        a\nb\<any>
2036        a\rb\<cr>
2037        a\rb\<any>
2038        a\x85b\<any>
2039        a\rb\<anycrlf>
2040    
2041    /^abc./mgx<any>
2042        abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
2043    
2044    /abc.$/mgx<any>
2045        abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
2046    
2047    /a/<cr><any>
2048    
2049    /a/<any><crlf>
2050    
2051    /^a\Rb/<bsr_unicode>
2052        a\nb
2053        a\rb
2054        a\r\nb
2055        a\x0bb
2056        a\x0cb
2057        a\x85b
2058        ** Failers
2059        a\n\rb
2060    
2061    /^a\R*b/<bsr_unicode>
2062        ab
2063        a\nb
2064        a\rb
2065        a\r\nb
2066        a\x0bb
2067        a\x0cb
2068        a\x85b
2069        a\n\rb
2070        a\n\r\x85\x0cb
2071    
2072    /^a\R+b/<bsr_unicode>
2073        a\nb
2074        a\rb
2075        a\r\nb
2076        a\x0bb
2077        a\x0cb
2078        a\x85b
2079        a\n\rb
2080        a\n\r\x85\x0cb
2081        ** Failers
2082        ab
2083    
2084    /^a\R{1,3}b/<bsr_unicode>
2085        a\nb
2086        a\n\rb
2087        a\n\r\x85b
2088        a\r\n\r\nb
2089        a\r\n\r\n\r\nb
2090        a\n\r\n\rb
2091        a\n\n\r\nb
2092        ** Failers
2093        a\n\n\n\rb
2094        a\r
2095    
2096    /^a[\R]b/<bsr_unicode>
2097        aRb
2098        ** Failers
2099        a\nb
2100    
2101    /(?&abc)X(?<abc>P)/I
2102        abcPXP123
2103    
2104    /(?1)X(?<abc>P)/I
2105        abcPXP123
2106    
2107    /(?:a(?&abc)b)*(?<abc>x)/
2108        123axbaxbaxbx456
2109        123axbaxbaxb456
2110    
2111    /(?:a(?&abc)b){1,5}(?<abc>x)/
2112        123axbaxbaxbx456
2113    
2114    /(?:a(?&abc)b){2,5}(?<abc>x)/
2115        123axbaxbaxbx456
2116    
2117    /(?:a(?&abc)b){2,}(?<abc>x)/
2118        123axbaxbaxbx456
2119    
2120    /(abc)(?i:(?1))/
2121       defabcabcxyz
2122       DEFabcABCXYZ
2123    
2124    /(abc)(?:(?i)(?1))/
2125       defabcabcxyz
2126       DEFabcABCXYZ
2127    
2128    /^(a)\g-2/
2129    
2130    /^(a)\g/
2131    
2132    /^(a)\g{0}/
2133    
2134    /^(a)\g{3/
2135    
2136    /^(a)\g{4a}/
2137    
2138    /^a.b/<lf>
2139        a\rb
2140        *** Failers
2141        a\nb
2142    
2143    /.+foo/
2144        afoo
2145        ** Failers
2146        \r\nfoo
2147        \nfoo
2148    
2149    /.+foo/<crlf>
2150        afoo
2151        \nfoo
2152        ** Failers
2153        \r\nfoo
2154    
2155    /.+foo/<any>
2156        afoo
2157        ** Failers
2158        \nfoo
2159        \r\nfoo
2160    
2161    /.+foo/s
2162        afoo
2163        \r\nfoo
2164        \nfoo
2165    
2166    /^$/mg<any>
2167        abc\r\rxyz
2168        abc\n\rxyz
2169        ** Failers
2170        abc\r\nxyz
2171    
2172    /(?m)^$/<any>g+
2173        abc\r\n\r\n
2174    
2175    /(?m)^$|^\r\n/<any>g+
2176        abc\r\n\r\n
2177    
2178    /(?m)$/<any>g+
2179        abc\r\n\r\n
2180    
2181    /abc.$/mgx<anycrlf>
2182        abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
2183    
2184    /^X/m
2185        XABC
2186        ** Failers
2187        XABC\B
2188    
2189    /(ab|c)(?-1)/BZ
2190        abc
2191    
2192    /xy(?+1)(abc)/BZ
2193        xyabcabc
2194        ** Failers
2195        xyabc
2196    
2197    /x(?-0)y/
2198    
2199    /x(?-1)y/
2200    
2201    /x(?+0)y/
2202    
2203    /x(?+1)y/
2204    
2205    /^(abc)?(?(-1)X|Y)/BZ
2206        abcX
2207        Y
2208        ** Failers
2209        abcY
2210    
2211    /^((?(+1)X|Y)(abc))+/BZ
2212        YabcXabc
2213        YabcXabcXabc
2214        ** Failers
2215        XabcXabc
2216    
2217    /(?(-1)a)/BZ
2218    
2219    /((?(-1)a))/BZ
2220    
2221    /((?(-2)a))/BZ
2222    
2223    /^(?(+1)X|Y)(.)/BZ
2224        Y!
2225    
2226    /(?<A>tom|bon)-\k{A}/
2227        tom-tom
2228        bon-bon
2229        ** Failers
2230        tom-bon
2231    
2232    /\g{A/
2233    
2234    /(?|(abc)|(xyz))/BZ
2235       >abc<
2236       >xyz<
2237    
2238    /(x)(?|(abc)|(xyz))(x)/BZ
2239        xabcx
2240        xxyzx
2241    
2242    /(x)(?|(abc)(pqr)|(xyz))(x)/BZ
2243        xabcpqrx
2244        xxyzx
2245    
2246    /[\h]/BZ
2247        >\x09<
2248    
2249    /[\h]+/BZ
2250        >\x09\x20\xa0<
2251    
2252    /[\v]/BZ
2253    
2254    /[\H]/BZ
2255    
2256    /[^\h]/BZ
2257    
2258    /[\V]/BZ
2259    
2260    /[\x0a\V]/BZ
2261    
2262    /\H++X/BZ
2263        ** Failers
2264        XXXX
2265    
2266    /\H+\hY/BZ
2267        XXXX Y
2268    
2269    /\H+ Y/BZ
2270    
2271    /\h+A/BZ
2272    
2273    /\v*B/BZ
2274    
2275    /\V+\x0a/BZ
2276    
2277    /A+\h/BZ
2278    
2279    / *\H/BZ
2280    
2281    /A*\v/BZ
2282    
2283    /\x0b*\V/BZ
2284    
2285    /\d+\h/BZ
2286    
2287    /\d*\v/BZ
2288    
2289    /S+\h\S+\v/BZ
2290    
2291    /\w{3,}\h\w+\v/BZ
2292    
2293    /\h+\d\h+\w\h+\S\h+\H/BZ
2294    
2295    /\v+\d\v+\w\v+\S\v+\V/BZ
2296    
2297    /\H+\h\H+\d/BZ
2298    
2299    /\V+\v\V+\w/BZ
2300    
2301    /\( (?: [^()]* | (?R) )* \)/x
2302    (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
2303    
2304    /[\E]AAA/
2305    
2306    /[\Q\E]AAA/
2307    
2308    /[^\E]AAA/
2309    
2310    /[^\Q\E]AAA/
2311    
2312    /[\E^]AAA/
2313    
2314    /[\Q\E^]AAA/
2315    
2316    /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
2317    
2318    /^a+(*FAIL)/C
2319        aaaaaa
2320    
2321    /a+b?c+(*FAIL)/C
2322        aaabccc
2323    
2324    /a+b?(*PRUNE)c+(*FAIL)/C
2325        aaabccc
2326    
2327    /a+b?(*COMMIT)c+(*FAIL)/C
2328        aaabccc
2329    
2330    /a+b?(*SKIP)c+(*FAIL)/C
2331        aaabcccaaabccc
2332    
2333    /a+b?(*THEN)c+(*FAIL)/C
2334        aaabccc
2335    
2336    /a(*MARK)b/
2337    
2338    /(?i:A{1,}\6666666666)/
2339    
2340    /\g6666666666/
2341    
2342    /[\g6666666666]/
2343    
2344    /(?1)\c[/
2345    
2346    /.+A/<crlf>
2347        \r\nA
2348    
2349    /\nA/<crlf>
2350        \r\nA
2351    
2352    /[\r\n]A/<crlf>
2353        \r\nA
2354    
2355    /(\r|\n)A/<crlf>
2356        \r\nA
2357    
2358    /a(*CR)b/
2359    
2360    /(*CR)a.b/
2361        a\nb
2362        ** Failers
2363        a\rb
2364    
2365    /(*CR)a.b/<lf>
2366        a\nb
2367        ** Failers
2368        a\rb
2369    
2370    /(*LF)a.b/<CRLF>
2371        a\rb
2372        ** Failers
2373        a\nb
2374    
2375    /(*CRLF)a.b/
2376        a\rb
2377        a\nb
2378        ** Failers
2379        a\r\nb
2380    
2381    /(*ANYCRLF)a.b/<CR>
2382        ** Failers
2383        a\rb
2384        a\nb
2385        a\r\nb
2386    
2387    /(*ANY)a.b/<cr>
2388        ** Failers
2389        a\rb
2390        a\nb
2391        a\r\nb
2392        a\x85b
2393    
2394    /(*ANY).*/g
2395        abc\r\ndef
2396    
2397    /(*ANYCRLF).*/g
2398        abc\r\ndef
2399    
2400    /(*CRLF).*/g
2401        abc\r\ndef
2402    
2403    /a\Rb/I<bsr_anycrlf>
2404        a\rb
2405        a\nb
2406        a\r\nb
2407        ** Failers
2408        a\x85b
2409        a\x0bb
2410    
2411    /a\Rb/I<bsr_unicode>
2412        a\rb
2413        a\nb
2414        a\r\nb
2415        a\x85b
2416        a\x0bb
2417        ** Failers
2418        a\x85b\<bsr_anycrlf>
2419        a\x0bb\<bsr_anycrlf>
2420    
2421    /a\R?b/I<bsr_anycrlf>
2422        a\rb
2423        a\nb
2424        a\r\nb
2425        ** Failers
2426        a\x85b
2427        a\x0bb
2428    
2429    /a\R?b/I<bsr_unicode>
2430        a\rb
2431        a\nb
2432        a\r\nb
2433        a\x85b
2434        a\x0bb
2435        ** Failers
2436        a\x85b\<bsr_anycrlf>
2437        a\x0bb\<bsr_anycrlf>
2438    
2439    /a\R{2,4}b/I<bsr_anycrlf>
2440        a\r\n\nb
2441        a\n\r\rb
2442        a\r\n\r\n\r\n\r\nb
2443        ** Failers
2444        a\x85\85b
2445        a\x0b\0bb
2446    
2447    /a\R{2,4}b/I<bsr_unicode>
2448        a\r\rb
2449        a\n\n\nb
2450        a\r\n\n\r\rb
2451        a\x85\85b
2452        a\x0b\0bb
2453        ** Failers
2454        a\r\r\r\r\rb
2455        a\x85\85b\<bsr_anycrlf>
2456        a\x0b\0bb\<bsr_anycrlf>
2457    
2458    /(*BSR_ANYCRLF)a\Rb/I
2459        a\nb
2460        a\rb
2461    
2462    /(*BSR_UNICODE)a\Rb/I
2463        a\x85b
2464    
2465    /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
2466        a\nb
2467        a\rb
2468    
2469    /(*CRLF)(*BSR_UNICODE)a\Rb/I
2470        a\x85b
2471    
2472    /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
2473    
2474    /(?<a>)(?&)/
2475    
2476    /(?<abc>)(?&a)/
2477    
2478    /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
2479    
2480    /(?+-a)/
2481    
2482    /(?-+a)/
2483    
2484    /(?(-1))/
2485    
2486    /(?(+10))/
2487    
2488    /(?(10))/
2489    
2490    /(?(+2))()()/
2491    
2492    /(?(2))()()/
2493    
2494    /\k''/
2495    
2496    /\k<>/
2497    
2498    /\k{}/
2499    
2500    /(?P=)/
2501    
2502    /(?P>)/
2503    
2504    /(?!\w)(?R)/
2505    
2506    /(?=\w)(?R)/
2507    
2508    /(?<!\w)(?R)/
2509    
2510    /(?<=\w)(?R)/
2511    
2512    /[[:foo:]]/
2513    
2514    /[[:1234:]]/
2515    
2516    /[[:f\oo:]]/
2517    
2518    /[[: :]]/
2519    
2520    /[[:...:]]/
2521    
2522    /[[:l\ower:]]/
2523    
2524    /[[:abc\:]]/
2525    
2526    /[abc[:x\]pqr:]]/
2527    
2528    /[[:a\dz:]]/
2529    
2530    /(^(a|b\g<-1'c))/
2531    
2532    /^(?+1)(?<a>x|y){0}z/
2533        xzxx
2534        yzyy
2535        ** Failers
2536        xxz
2537    
2538    /(\3)(\1)(a)/
2539        cat
2540    
2541    /(\3)(\1)(a)/<JS>
2542        cat
2543    
2544    /TA]/
2545        The ACTA] comes
2546    
2547    /TA]/<JS>
2548        The ACTA] comes
2549    
2550    /(?2)[]a()b](abc)/
2551        abcbabc
2552    
2553    /(?2)[^]a()b](abc)/
2554        abcbabc
2555    
2556    /(?1)[]a()b](abc)/
2557        abcbabc
2558        ** Failers
2559        abcXabc
2560    
2561    /(?1)[^]a()b](abc)/
2562        abcXabc
2563        ** Failers
2564        abcbabc
2565    
2566    /(?2)[]a()b](abc)(xyz)/
2567        xyzbabcxyz
2568    
2569    /(?&N)[]a(?<N>)](?<M>abc)/
2570       abc<abc
2571    
2572    /(?&N)[]a(?<N>)](abc)/
2573       abc<abc
2574    
2575    /a[]b/
2576    
2577    /a[^]b/
2578    
2579    /a[]b/<JS>
2580        ** Failers
2581        ab
2582    
2583    /a[]+b/<JS>
2584        ** Failers
2585        ab
2586    
2587    /a[]*+b/<JS>
2588        ** Failers
2589        ab
2590    
2591    /a[^]b/<JS>
2592        aXb
2593        a\nb
2594        ** Failers
2595        ab
2596    
2597    /a[^]+b/<JS>
2598        aXb
2599        a\nX\nXb
2600        ** Failers
2601        ab
2602    
2603    /a(?!)+b/
2604    
2605    /a(*FAIL)+b/
2606    
2607    /(abc|pqr|123){0}[xyz]/SI
2608    
2609    /(?(?=.*b)b|^)/CI
2610       adc
2611       abc
2612    
2613    /(?(?=b).*b|^d)/I
2614    
2615    /(?(?=.*b).*b|^d)/I
2616    
2617    /a?|b?/P
2618        abc
2619        ** Failers
2620        ddd\N
2621    
2622    /xyz/C
2623      xyz
2624      abcxyz
2625      abcxyz\Y
2626      ** Failers
2627      abc
2628      abc\Y
2629      abcxypqr
2630      abcxypqr\Y
2631    
2632    /(*NO_START_OPT)xyz/C
2633      abcxyz
2634    
2635    /xyz/CY
2636      abcxyz
2637    
2638    /^"((?(?=[a])[^"])|b)*"$/C
2639        "ab"
2640    
2641    /^"((?(?=[a])[^"])|b)*"$/
2642        "ab"
2643    
2644    /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2645        XYabcdY
2646    
2647    /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2648        XYabcdY
2649    
2650    /Xa{2,4}b/
2651        X\P
2652        Xa\P
2653        Xaa\P
2654        Xaaa\P
2655        Xaaaa\P
2656    
2657    /Xa{2,4}?b/
2658        X\P
2659        Xa\P
2660        Xaa\P
2661        Xaaa\P
2662        Xaaaa\P
2663    
2664    /Xa{2,4}+b/
2665        X\P
2666        Xa\P
2667        Xaa\P
2668        Xaaa\P
2669        Xaaaa\P
2670    
2671    /X\d{2,4}b/
2672        X\P
2673        X3\P
2674        X33\P
2675        X333\P
2676        X3333\P
2677    
2678    /X\d{2,4}?b/
2679        X\P
2680        X3\P
2681        X33\P
2682        X333\P
2683        X3333\P
2684    
2685    /X\d{2,4}+b/
2686        X\P
2687        X3\P
2688        X33\P
2689        X333\P
2690        X3333\P
2691    
2692    /X\D{2,4}b/
2693        X\P
2694        Xa\P
2695        Xaa\P
2696        Xaaa\P
2697        Xaaaa\P
2698    
2699    /X\D{2,4}?b/
2700        X\P
2701        Xa\P
2702        Xaa\P
2703        Xaaa\P
2704        Xaaaa\P
2705    
2706    /X\D{2,4}+b/
2707        X\P
2708        Xa\P
2709        Xaa\P
2710        Xaaa\P
2711        Xaaaa\P
2712    
2713    /X[abc]{2,4}b/
2714        X\P
2715        Xa\P
2716        Xaa\P
2717        Xaaa\P
2718        Xaaaa\P
2719    
2720    /X[abc]{2,4}?b/
2721        X\P
2722        Xa\P
2723        Xaa\P
2724        Xaaa\P
2725        Xaaaa\P
2726    
2727    /X[abc]{2,4}+b/
2728        X\P
2729        Xa\P
2730        Xaa\P
2731        Xaaa\P
2732        Xaaaa\P
2733    
2734    /X[^a]{2,4}b/
2735        X\P
2736        Xz\P
2737        Xzz\P
2738        Xzzz\P
2739        Xzzzz\P
2740    
2741    /X[^a]{2,4}?b/
2742        X\P
2743        Xz\P
2744        Xzz\P
2745        Xzzz\P
2746        Xzzzz\P
2747    
2748    /X[^a]{2,4}+b/
2749        X\P
2750        Xz\P
2751        Xzz\P
2752        Xzzz\P
2753        Xzzzz\P
2754    
2755    /(Y)X\1{2,4}b/
2756        YX\P
2757        YXY\P
2758        YXYY\P
2759        YXYYY\P
2760        YXYYYY\P
2761    
2762    /(Y)X\1{2,4}?b/
2763        YX\P
2764        YXY\P
2765        YXYY\P
2766        YXYYY\P
2767        YXYYYY\P
2768    
2769    /(Y)X\1{2,4}+b/
2770        YX\P
2771        YXY\P
2772        YXYY\P
2773        YXYYY\P
2774        YXYYYY\P
2775    
2776    /\++\KZ|\d+X|9+Y/
2777        ++++123999\P
2778        ++++123999Y\P
2779        ++++Z1234\P
2780    
2781    /Z(*F)/
2782        Z\P
2783        ZA\P
2784    
2785    /Z(?!)/
2786        Z\P
2787        ZA\P
2788    
2789    /dog(sbody)?/
2790        dogs\P
2791        dogs\P\P
2792    
2793    /dog(sbody)??/
2794        dogs\P
2795        dogs\P\P
2796    
2797    /dog|dogsbody/
2798        dogs\P
2799        dogs\P\P
2800    
2801    /dogsbody|dog/
2802        dogs\P
2803        dogs\P\P
2804    
2805    /\bthe cat\b/
2806        the cat\P
2807        the cat\P\P
2808    
2809    /abc/
2810       abc\P
2811       abc\P\P
2812    
2813    /\w+A/P
2814       CDAAAAB
2815    
2816    /\w+A/PU
2817       CDAAAAB
2818    
2819    /abc\K123/
2820        xyzabc123pqr
2821        xyzabc12\P
2822        xyzabc12\P\P
2823    
2824    /(?<=abc)123/
2825        xyzabc123pqr
2826        xyzabc12\P
2827        xyzabc12\P\P
2828    
2829    /\babc\b/
2830        +++abc+++
2831        +++ab\P
2832        +++ab\P\P
2833    
2834    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2835    
2836    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2837    
2838    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2839    
2840    /abc\K/+
2841        abcdef
2842        abcdef\N\N
2843        xyzabcdef\N\N
2844        ** Failers
2845        abcdef\N
2846        xyzabcdef\N
2847    
2848    /^(?:(?=abc)|abc\K)/+
2849        abcdef
2850        abcdef\N\N
2851        ** Failers
2852        abcdef\N
2853    
2854    /a?b?/+
2855        xyz
2856        xyzabc
2857        xyzabc\N
2858        xyzabc\N\N
2859        xyz\N\N
2860        ** Failers
2861        xyz\N
2862    
2863    /^a?b?/+
2864        xyz
2865        xyzabc
2866        ** Failers
2867        xyzabc\N
2868        xyzabc\N\N
2869        xyz\N\N
2870        xyz\N
2871    
2872    /^(?<name>a|b\g<name>c)/
2873        aaaa
2874        bacxxx
2875        bbaccxxx
2876        bbbacccxx
2877    
2878    /^(?<name>a|b\g'name'c)/
2879        aaaa
2880        bacxxx
2881        bbaccxxx
2882        bbbacccxx
2883    
2884    /^(a|b\g<1>c)/
2885        aaaa
2886        bacxxx
2887        bbaccxxx
2888        bbbacccxx
2889    
2890    /^(a|b\g'1'c)/
2891        aaaa
2892        bacxxx
2893        bbaccxxx
2894        bbbacccxx
2895    
2896    /^(a|b\g'-1'c)/
2897        aaaa
2898        bacxxx
2899        bbaccxxx
2900        bbbacccxx
2901    
2902    /(^(a|b\g<-1>c))/
2903        aaaa
2904        bacxxx
2905        bbaccxxx
2906        bbbacccxx
2907    
2908    /(?-i:\g<name>)(?i:(?<name>a))/
2909        XaaX
2910        XAAX
2911    
2912    /(?i:\g<name>)(?-i:(?<name>a))/
2913        XaaX
2914        ** Failers
2915        XAAX
2916    
2917    /(?-i:\g<+1>)(?i:(a))/
2918        XaaX
2919        XAAX
2920    
2921    /(?=(?<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>\})\}))\{/
2922    
2923    /(?<n>a|b|c)\g<n>*/
2924       abc
2925       accccbbb
2926    
2927    /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2928        XYabcdY
2929    
2930    /(?<=b(?1)|zzz)(a)/
2931        xbaax
2932        xzzzax
2933    
2934    /(a)(?<=b\1)/
2935    
2936    /(a)(?<=b+(?1))/
2937    
2938    /(a+)(?<=b(?1))/
2939    
2940    /(a(?<=b(?1)))/
2941    
2942    /(?<=b(?1))xyz/
2943    
2944    /(?<=b(?1))xyz(b+)pqrstuvew/
2945    
2946    /(a|bc)\1/SI
2947    
2948    /(a|bc)\1{2,3}/SI
2949    
2950    /(a|bc)(?1)/SI
2951    
2952    /(a|b\1)(a|b\1)/SI
2953    
2954    /(a|b\1){2}/SI
2955    
2956    /(a|bbbb\1)(a|bbbb\1)/SI
2957    
2958    /(a|bbbb\1){2}/SI
2959    
2960    /^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
2961    
2962    /  (?: [\040\t] |  \(
2963    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2964    \)  )*                          # optional leading comment
2965    (?:    (?:
2966    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2967    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2968    |
2969    " (?:                      # opening quote...
2970    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2971    |                     #    or
2972    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2973    )* "  # closing quote
2974    )                    # initial word
2975    (?:  (?: [\040\t] |  \(
2976    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2977    \)  )*  \.  (?: [\040\t] |  \(
2978    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2979    \)  )*   (?:
2980    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2981    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2982    |
2983    " (?:                      # opening quote...
2984    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2985    |                     #    or
2986    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2987    )* "  # closing quote
2988    )  )* # further okay, if led by a period
2989    (?: [\040\t] |  \(
2990    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2991    \)  )*  @  (?: [\040\t] |  \(
2992    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2993    \)  )*    (?:
2994    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2995    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2996    |   \[                         # [
2997    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2998    \]                        #           ]
2999    )                           # initial subdomain
3000    (?:                                  #
3001    (?: [\040\t] |  \(
3002    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3003    \)  )*  \.                        # if led by a period...
3004    (?: [\040\t] |  \(
3005    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3006    \)  )*   (?:
3007    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3008    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3009    |   \[                         # [
3010    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3011    \]                        #           ]
3012    )                     #   ...further okay
3013    )*
3014    # address
3015    |                     #  or
3016    (?:
3017    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3018    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3019    |
3020    " (?:                      # opening quote...
3021    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3022    |                     #    or
3023    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3024    )* "  # closing quote
3025    )             # one word, optionally followed by....
3026    (?:
3027    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
3028    \(
3029    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3030    \)       |  # comments, or...
3031    
3032    " (?:                      # opening quote...
3033    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3034    |                     #    or
3035    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3036    )* "  # closing quote
3037    # quoted strings
3038    )*
3039    <  (?: [\040\t] |  \(
3040    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3041    \)  )*                     # leading <
3042    (?:  @  (?: [\040\t] |  \(
3043    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3044    \)  )*    (?:
3045    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3046    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3047    |   \[                         # [
3048    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3049    \]                        #           ]
3050    )                           # initial subdomain
3051    (?:                                  #
3052    (?: [\040\t] |  \(
3053    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3054    \)  )*  \.                        # if led by a period...
3055    (?: [\040\t] |  \(
3056    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3057    \)  )*   (?:
3058    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3059    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3060    |   \[                         # [
3061    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3062    \]                        #           ]
3063    )                     #   ...further okay
3064    )*
3065    
3066    (?:  (?: [\040\t] |  \(
3067    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
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    \)  )*    (?:
3073    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3074    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3075    |   \[                         # [
3076    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3077    \]                        #           ]
3078    )                           # initial subdomain
3079    (?:                                  #
3080    (?: [\040\t] |  \(
3081    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3082    \)  )*  \.                        # if led by a period...
3083    (?: [\040\t] |  \(
3084    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3085    \)  )*   (?:
3086    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3087    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3088    |   \[                         # [
3089    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3090    \]                        #           ]
3091    )                     #   ...further okay
3092    )*
3093    )* # further okay, if led by comma
3094    :                                # closing colon
3095    (?: [\040\t] |  \(
3096    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3097    \)  )*  )? #       optional route
3098    (?:
3099    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3100    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3101    |
3102    " (?:                      # opening quote...
3103    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3104    |                     #    or
3105    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3106    )* "  # closing quote
3107    )                    # initial word
3108    (?:  (?: [\040\t] |  \(
3109    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3110    \)  )*  \.  (?: [\040\t] |  \(
3111    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3112    \)  )*   (?:
3113    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3114    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3115    |
3116    " (?:                      # opening quote...
3117    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3118    |                     #    or
3119    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3120    )* "  # closing quote
3121    )  )* # further okay, if led by a period
3122    (?: [\040\t] |  \(
3123    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3124    \)  )*  @  (?: [\040\t] |  \(
3125    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3126    \)  )*    (?:
3127    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3128    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3129    |   \[                         # [
3130    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3131    \]                        #           ]
3132    )                           # initial subdomain
3133    (?:                                  #
3134    (?: [\040\t] |  \(
3135    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3136    \)  )*  \.                        # if led by a period...
3137    (?: [\040\t] |  \(
3138    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3139    \)  )*   (?:
3140    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3141    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3142    |   \[                         # [
3143    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3144    \]                        #           ]
3145    )                     #   ...further okay
3146    )*
3147    #       address spec
3148    (?: [\040\t] |  \(
3149    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3150    \)  )*  > #                  trailing >
3151    # name and address
3152    )  (?: [\040\t] |  \(
3153    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3154    \)  )*                       # optional trailing comment
3155    /xSI
3156    
3157    /<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
3158    
3159    "(?>.*/)foo"SI
3160    
3161    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3162    
3163    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3164    
3165    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3166    
3167    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3168     ([\"\'])?                       # find single or double quote
3169     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3170                                     # quote, otherwise match up to next space
3171    /isxSI
3172    
3173    /^(?!:)                       # colon disallowed at start
3174      (?:                         # start of item
3175        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3176        (?(1)0 | () ) )           # if null previously matched, fail; else null
3177        :                         # followed by colon
3178      ){1,7}                      # end item; 1-7 of them required
3179      [0-9a-f]{1,4} $             # final hex number at end of string
3180      (?(1)|.)                    # check that there was an empty component
3181      /xiIS
3182    
3183    /(?|(?<a>A)|(?<a>B))/I
3184        AB\Ca
3185        BA\Ca
3186    
3187    /(?|(?<a>A)|(?<b>B))/
3188    
3189    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3190        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3191        (?('quote')[a-z]+|[0-9]+)/JIx
3192        a"aaaaa
3193        b"aaaaa
3194        ** Failers
3195        b"11111
3196        a"11111
3197    
3198    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3199        abcdX
3200        eX
3201        ** Failers
3202        abcdY
3203        ey
3204    
3205    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3206        abcdd
3207        ** Failers
3208        abcdde
3209    
3210    /abcd*/
3211        xxxxabcd\P
3212        xxxxabcd\P\P
3213    
3214    /abcd*/i
3215        xxxxabcd\P
3216        xxxxabcd\P\P
3217        XXXXABCD\P
3218        XXXXABCD\P\P
3219    
3220    /abc\d*/
3221        xxxxabc1\P
3222        xxxxabc1\P\P
3223    
3224    /(a)bc\1*/
3225        xxxxabca\P
3226        xxxxabca\P\P
3227    
3228    /abc[de]*/
3229        xxxxabcde\P
3230        xxxxabcde\P\P
3231    
3232    /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
3233        broken and not behaving as specified in that it *does* bumpalong after
3234        hitting (*COMMIT). --/
3235    
3236    /(?1)(A(*COMMIT)|B)D/
3237        ABD
3238        XABD
3239        BAD
3240        ABXABD
3241        ** Failers
3242        ABX
3243        BAXBAD
3244    
3245    /(\3)(\1)(a)/<JS>
3246        cat
3247    
3248    /(\3)(\1)(a)/SI<JS>
3249        cat
3250    
3251    /(\3)(\1)(a)/SI
3252        cat
3253    
3254    /i(?(DEFINE)(?<s>a))/SI
3255        i
3256    
3257    /()i(?(1)a)/SI
3258        ia
3259    
3260    /(?i)a(?-i)b|c/BZ
3261        XabX
3262        XAbX
3263        CcC
3264        ** Failers
3265        XABX
3266    
3267    /(?i)a(?s)b|c/BZ
3268    
3269    /(?i)a(?s-i)b|c/BZ
3270    
3271    /^(ab(c\1)d|x){2}$/BZ
3272        xabcxd
3273    
3274    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3275    
3276    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3277    
3278    / -- The first four of these are not in the Perl >= 5.10 test because Perl
3279         documents that the use of \K in assertions is "not well defined". The
3280         last is here because Perl gives the match as "b" rather than "ab". I
3281         believe this to be a Perl bug. --/
3282    
3283    /(?=a\Kb)ab/
3284        ab
3285    
3286    /(?!a\Kb)ac/
3287        ac
3288    
3289    /^abc(?<=b\Kc)d/
3290        abcd
3291    
3292    /^abc(?<!b\Kq)d/
3293        abcd
3294    
3295    /(?>a\Kb)z|(ab)/
3296        ab
3297    
3298    /----------------------/
3299    
3300    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3301    
3302    /abc(*MARK:)pqr/
3303    
3304    /abc(*:)pqr/
3305    
3306    /abc(*FAIL:123)xyz/
3307    
3308    /--- This should, and does, fail. In Perl, it does not, which I think is a
3309         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3310    
3311    /A(*COMMIT)B/+K
3312        ACABX
3313    
3314    /--- These should be different, but in Perl 5.11 are not, which I think
3315         is a bug in Perl. ---/
3316    
3317    /A(*THEN)B|A(*THEN)C/K
3318        AC
3319    
3320    /A(*PRUNE)B|A(*PRUNE)C/K
3321        AC
3322    
3323    /--- A whole lot of tests of verbs with arguments are here rather than in test
3324         11 because Perl doesn't seem to follow its specification entirely
3325         correctly. ---/
3326    
3327    /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
3328         not clear how Perl defines "involved in the failure of the match". ---/
3329    
3330    /^(A(*THEN:A)B|C(*THEN:B)D)/K
3331        AB
3332        CD
3333        ** Failers
3334        AC
3335        CB
3336    
3337    /--- Check the use of names for success and failure. PCRE doesn't show these
3338    names for success, though Perl does, contrary to its spec. ---/
3339    
3340    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
3341        AB
3342        CD
3343        ** Failers
3344        AC
3345        CB
3346    
3347    /--- An empty name does not pass back an empty string. It is the same as if no
3348    name were given. ---/
3349    
3350    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
3351        AB
3352        CD
3353    
3354    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
3355    
3356    /A(*PRUNE:A)B/K
3357        ACAB
3358    
3359    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3360        C
3361        D
3362    
3363    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
3364        C
3365        D
3366    
3367    /(*MARK:A)(*THEN:B)(C|X)/KS
3368        C
3369        D
3370    
3371    /(*MARK:A)(*THEN:B)(C|X)/KSS
3372        C
3373        D
3374    
3375    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
3376    
3377    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
3378        AAAC
3379    
3380    /--- Same --/
3381    
3382    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
3383        AAAC
3384    
3385    /--- This should fail; the SKIP advances by one, but when we get to AC, the
3386         PRUNE kills it. ---/
3387    
3388    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3389        AAAC
3390    
3391    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
3392        AAAC
3393    
3394    /--- This should fail, as a null name is the same as no name ---/
3395    
3396    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
3397        AAAC
3398    
3399    /--- This fails in PCRE, and I think that is in accordance with Perl's
3400         documentation, though in Perl it succeeds. ---/
3401    
3402    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
3403        AAAC
3404    
3405    /--- Mark names can be duplicated ---/
3406    
3407    /A(*:A)B|X(*:A)Y/K
3408        AABC
3409        XXYZ
3410    
3411    /^A(*:A)B|^X(*:A)Y/K
3412        ** Failers
3413        XAQQ
3414    
3415    /--- A check on what happens after hitting a mark and them bumping along to
3416    something that does not even start. Perl reports tags after the failures here,
3417    though it does not when the individual letters are made into something
3418    more complicated. ---/
3419    
3420    /A(*:A)B|XX(*:B)Y/K
3421        AABC
3422        XXYZ
3423        ** Failers
3424        XAQQ
3425        XAQQXZZ
3426        AXQQQ
3427        AXXQQQ
3428    
3429    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3430    optimizations defeat this. So does the PCRE optimization unless we disable it
3431    with \Y. ---/
3432    
3433    /(*COMMIT)ABC/
3434        ABCDEFG
3435        ** Failers
3436        DEFGABC\Y
3437    
3438    /--- Repeat some tests with added studying. ---/
3439    
3440    /A(*COMMIT)B/+KS
3441        ACABX
3442    
3443    /A(*THEN)B|A(*THEN)C/KS
3444        AC
3445    
3446    /A(*PRUNE)B|A(*PRUNE)C/KS
3447        AC
3448    
3449    /^(A(*THEN:A)B|C(*THEN:B)D)/KS
3450        AB
3451        CD
3452        ** Failers
3453        AC
3454        CB
3455    
3456    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
3457        AB
3458        CD
3459        ** Failers
3460        AC
3461        CB
3462    
3463    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
3464        AB
3465        CD
3466    
3467    /A(*PRUNE:A)B/KS
3468        ACAB
3469    
3470    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3471        C
3472        D
3473    
3474    /(*MARK:A)(*THEN:B)(C|X)/KS
3475        C
3476        D
3477    
3478    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
3479        AAAC
3480    
3481    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
3482        AAAC
3483    
3484    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
3485        AAAC
3486    
3487    /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
3488        AAAC
3489    
3490    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
3491        AAAC
3492    
3493    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
3494        AAAC
3495    
3496    /A(*:A)B|XX(*:B)Y/KS
3497        AABC
3498        XXYZ
3499        ** Failers
3500        XAQQ
3501        XAQQXZZ
3502        AXQQQ
3503        AXXQQQ
3504    
3505    /(*COMMIT)ABC/
3506        ABCDEFG
3507        ** Failers
3508        DEFGABC\Y
3509    
3510    /^(ab (c+(*THEN)cd) | xyz)/x
3511        abcccd
3512    
3513    /^(ab (c+(*PRUNE)cd) | xyz)/x
3514        abcccd
3515    
3516    /^(ab (c+(*FAIL)cd) | xyz)/x
3517        abcccd
3518    
3519    /--- Perl 5.11 gets some of these wrong ---/
3520    
3521    /(?>.(*ACCEPT))*?5/
3522        abcde
3523    
3524    /(.(*ACCEPT))*?5/
3525        abcde
3526    
3527    /(.(*ACCEPT))5/
3528        abcde
3529    
3530    /(.(*ACCEPT))*5/
3531        abcde
3532    
3533    /A\NB./BZ
3534        ACBD
3535        *** Failers
3536        A\nB
3537        ACB\n
3538    
3539    /A\NB./sBZ
3540        ACBD
3541        ACB\n
3542        *** Failers
3543        A\nB
3544    
3545    /A\NB/<crlf>
3546        A\nB
3547        A\rB
3548        ** Failers
3549        A\r\nB
3550    
3551    /\R+b/BZ
3552    
3553    /\R+\n/BZ
3554    
3555    /\R+\d/BZ
3556    
3557    /\d*\R/BZ
3558    
3559    /\s*\R/BZ
3560    
3561    /-- Perl treats this one differently, not failing the second string. I believe
3562        that is a bug in Perl. --/
3563    
3564    /^((abc|abcx)(*THEN)y|abcd)/
3565        abcd
3566        *** Failers
3567        abcxy
3568    
3569    /(?<=abc)def/
3570        abc\P\P
3571    
3572    /abc$/
3573        abc
3574        abc\P
3575        abc\P\P
3576    
3577    /abc$/m
3578        abc
3579        abc\n
3580        abc\P\P
3581        abc\n\P\P
3582        abc\P
3583        abc\n\P
3584    
3585    /abc\z/
3586        abc
3587        abc\P
3588        abc\P\P
3589    
3590    /abc\Z/
3591        abc
3592        abc\P
3593        abc\P\P
3594    
3595    /abc\b/
3596        abc
3597        abc\P
3598        abc\P\P
3599    
3600    /abc\B/
3601        abc
3602        abc\P
3603        abc\P\P
3604    
3605    /.+/
3606        abc\>0
3607        abc\>1
3608        abc\>2
3609        abc\>3
3610        abc\>4
3611        abc\>-4
3612    
3613    /^\cģ/
3614    
3615    /(?P<abn>(?P=abn)xxx)/BZ
3616    
3617    /(a\1z)/BZ
3618    
3619    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
3620    
3621    /(?P<abn>(?P=axn)xxx)/BZ
3622    
3623    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
3624    
3625    /-- These tests are here because Perl gets the first one wrong. --/
3626    
3627 &