Busybox: Upgrade to 1.21.1 (stable). lsof active.
[tomato.git] / release / src / router / pcre / testdata / testoutput1
blob8310e94618d5166a29bf61e7d2c6501512932367
1 /-- This set of tests is for features that are compatible with all versions of
2     Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and
3     16-bit PCRE libraries. --/
5 /the quick brown fox/
6     the quick brown fox
7  0: the quick brown fox
8     The quick brown FOX
9 No match
10     What do you know about the quick brown fox?
11  0: the quick brown fox
12     What do you know about THE QUICK BROWN FOX?
13 No match
15 /The quick brown fox/i
16     the quick brown fox
17  0: the quick brown fox
18     The quick brown FOX
19  0: The quick brown FOX
20     What do you know about the quick brown fox?
21  0: the quick brown fox
22     What do you know about THE QUICK BROWN FOX?
23  0: THE QUICK BROWN FOX
25 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
26     abcd\t\n\r\f\a\e9;\$\\?caxyz
27  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
29 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
30     abxyzpqrrrabbxyyyypqAzz
31  0: abxyzpqrrrabbxyyyypqAzz
32     abxyzpqrrrabbxyyyypqAzz
33  0: abxyzpqrrrabbxyyyypqAzz
34     aabxyzpqrrrabbxyyyypqAzz
35  0: aabxyzpqrrrabbxyyyypqAzz
36     aaabxyzpqrrrabbxyyyypqAzz
37  0: aaabxyzpqrrrabbxyyyypqAzz
38     aaaabxyzpqrrrabbxyyyypqAzz
39  0: aaaabxyzpqrrrabbxyyyypqAzz
40     abcxyzpqrrrabbxyyyypqAzz
41  0: abcxyzpqrrrabbxyyyypqAzz
42     aabcxyzpqrrrabbxyyyypqAzz
43  0: aabcxyzpqrrrabbxyyyypqAzz
44     aaabcxyzpqrrrabbxyyyypAzz
45  0: aaabcxyzpqrrrabbxyyyypAzz
46     aaabcxyzpqrrrabbxyyyypqAzz
47  0: aaabcxyzpqrrrabbxyyyypqAzz
48     aaabcxyzpqrrrabbxyyyypqqAzz
49  0: aaabcxyzpqrrrabbxyyyypqqAzz
50     aaabcxyzpqrrrabbxyyyypqqqAzz
51  0: aaabcxyzpqrrrabbxyyyypqqqAzz
52     aaabcxyzpqrrrabbxyyyypqqqqAzz
53  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
54     aaabcxyzpqrrrabbxyyyypqqqqqAzz
55  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
56     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
57  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
58     aaaabcxyzpqrrrabbxyyyypqAzz
59  0: aaaabcxyzpqrrrabbxyyyypqAzz
60     abxyzzpqrrrabbxyyyypqAzz
61  0: abxyzzpqrrrabbxyyyypqAzz
62     aabxyzzzpqrrrabbxyyyypqAzz
63  0: aabxyzzzpqrrrabbxyyyypqAzz
64     aaabxyzzzzpqrrrabbxyyyypqAzz
65  0: aaabxyzzzzpqrrrabbxyyyypqAzz
66     aaaabxyzzzzpqrrrabbxyyyypqAzz
67  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
68     abcxyzzpqrrrabbxyyyypqAzz
69  0: abcxyzzpqrrrabbxyyyypqAzz
70     aabcxyzzzpqrrrabbxyyyypqAzz
71  0: aabcxyzzzpqrrrabbxyyyypqAzz
72     aaabcxyzzzzpqrrrabbxyyyypqAzz
73  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
74     aaaabcxyzzzzpqrrrabbxyyyypqAzz
75  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
76     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
77  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
78     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
79  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
80     aaabcxyzpqrrrabbxyyyypABzz
81  0: aaabcxyzpqrrrabbxyyyypABzz
82     aaabcxyzpqrrrabbxyyyypABBzz
83  0: aaabcxyzpqrrrabbxyyyypABBzz
84     >>>aaabxyzpqrrrabbxyyyypqAzz
85  0: aaabxyzpqrrrabbxyyyypqAzz
86     >aaaabxyzpqrrrabbxyyyypqAzz
87  0: aaaabxyzpqrrrabbxyyyypqAzz
88     >>>>abcxyzpqrrrabbxyyyypqAzz
89  0: abcxyzpqrrrabbxyyyypqAzz
90     *** Failers
91 No match
92     abxyzpqrrabbxyyyypqAzz
93 No match
94     abxyzpqrrrrabbxyyyypqAzz
95 No match
96     abxyzpqrrrabxyyyypqAzz
97 No match
98     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
99 No match
100     aaaabcxyzzzzpqrrrabbbxyyypqAzz
101 No match
102     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
103 No match
105 /^(abc){1,2}zz/
106     abczz
107  0: abczz
108  1: abc
109     abcabczz
110  0: abcabczz
111  1: abc
112     *** Failers
113 No match
114     zz
115 No match
116     abcabcabczz
117 No match
118     >>abczz
119 No match
121 /^(b+?|a){1,2}?c/
122     bc
123  0: bc
124  1: b
125     bbc
126  0: bbc
127  1: b
128     bbbc
129  0: bbbc
130  1: bb
131     bac
132  0: bac
133  1: a
134     bbac
135  0: bbac
136  1: a
137     aac
138  0: aac
139  1: a
140     abbbbbbbbbbbc
141  0: abbbbbbbbbbbc
142  1: bbbbbbbbbbb
143     bbbbbbbbbbbac
144  0: bbbbbbbbbbbac
145  1: a
146     *** Failers
147 No match
148     aaac
149 No match
150     abbbbbbbbbbbac
151 No match
153 /^(b+|a){1,2}c/
154     bc
155  0: bc
156  1: b
157     bbc
158  0: bbc
159  1: bb
160     bbbc
161  0: bbbc
162  1: bbb
163     bac
164  0: bac
165  1: a
166     bbac
167  0: bbac
168  1: a
169     aac
170  0: aac
171  1: a
172     abbbbbbbbbbbc
173  0: abbbbbbbbbbbc
174  1: bbbbbbbbbbb
175     bbbbbbbbbbbac
176  0: bbbbbbbbbbbac
177  1: a
178     *** Failers
179 No match
180     aaac
181 No match
182     abbbbbbbbbbbac
183 No match
185 /^(b+|a){1,2}?bc/
186     bbc
187  0: bbc
188  1: b
190 /^(b*|ba){1,2}?bc/
191     babc
192  0: babc
193  1: ba
194     bbabc
195  0: bbabc
196  1: ba
197     bababc
198  0: bababc
199  1: ba
200     *** Failers
201 No match
202     bababbc
203 No match
204     babababc
205 No match
207 /^(ba|b*){1,2}?bc/
208     babc
209  0: babc
210  1: ba
211     bbabc
212  0: bbabc
213  1: ba
214     bababc
215  0: bababc
216  1: ba
217     *** Failers
218 No match
219     bababbc
220 No match
221     babababc
222 No match
224 /^\ca\cA\c[\c{\c:/
225     \x01\x01\e;z
226  0: \x01\x01\x1b;z
228 /^[ab\]cde]/
229     athing
230  0: a
231     bthing
232  0: b
233     ]thing
234  0: ]
235     cthing
236  0: c
237     dthing
238  0: d
239     ething
240  0: e
241     *** Failers
242 No match
243     fthing
244 No match
245     [thing
246 No match
247     \\thing
248 No match
250 /^[]cde]/
251     ]thing
252  0: ]
253     cthing
254  0: c
255     dthing
256  0: d
257     ething
258  0: e
259     *** Failers
260 No match
261     athing
262 No match
263     fthing
264 No match
266 /^[^ab\]cde]/
267     fthing
268  0: f
269     [thing
270  0: [
271     \\thing
272  0: \
273     *** Failers
274  0: *
275     athing
276 No match
277     bthing
278 No match
279     ]thing
280 No match
281     cthing
282 No match
283     dthing
284 No match
285     ething
286 No match
288 /^[^]cde]/
289     athing
290  0: a
291     fthing
292  0: f
293     *** Failers
294  0: *
295     ]thing
296 No match
297     cthing
298 No match
299     dthing
300 No match
301     ething
302 No match
304 /^\�/
305     ï¿½
306  0: \x81
308 /^ÿ/
309     Ã¿
310  0: \xff
312 /^[0-9]+$/
313     0
314  0: 0
315     1
316  0: 1
317     2
318  0: 2
319     3
320  0: 3
321     4
322  0: 4
323     5
324  0: 5
325     6
326  0: 6
327     7
328  0: 7
329     8
330  0: 8
331     9
332  0: 9
333     10
334  0: 10
335     100
336  0: 100
337     *** Failers
338 No match
339     abc
340 No match
342 /^.*nter/
343     enter
344  0: enter
345     inter
346  0: inter
347     uponter
348  0: uponter
350 /^xxx[0-9]+$/
351     xxx0
352  0: xxx0
353     xxx1234
354  0: xxx1234
355     *** Failers
356 No match
357     xxx
358 No match
360 /^.+[0-9][0-9][0-9]$/
361     x123
362  0: x123
363     xx123
364  0: xx123
365     123456
366  0: 123456
367     *** Failers
368 No match
369     123
370 No match
371     x1234
372  0: x1234
374 /^.+?[0-9][0-9][0-9]$/
375     x123
376  0: x123
377     xx123
378  0: xx123
379     123456
380  0: 123456
381     *** Failers
382 No match
383     123
384 No match
385     x1234
386  0: x1234
388 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
389     abc!pqr=apquxz.ixr.zzz.ac.uk
390  0: abc!pqr=apquxz.ixr.zzz.ac.uk
391  1: abc
392  2: pqr
393     *** Failers
394 No match
395     !pqr=apquxz.ixr.zzz.ac.uk
396 No match
397     abc!=apquxz.ixr.zzz.ac.uk
398 No match
399     abc!pqr=apquxz:ixr.zzz.ac.uk
400 No match
401     abc!pqr=apquxz.ixr.zzz.ac.ukk
402 No match
405     Well, we need a colon: somewhere
406  0: :
407     *** Fail if we don't
408 No match
410 /([\da-f:]+)$/i
411     0abc
412  0: 0abc
413  1: 0abc
414     abc
415  0: abc
416  1: abc
417     fed
418  0: fed
419  1: fed
420     E
421  0: E
422  1: E
423     ::
424  0: ::
425  1: ::
426     5f03:12C0::932e
427  0: 5f03:12C0::932e
428  1: 5f03:12C0::932e
429     fed def
430  0: def
431  1: def
432     Any old stuff
433  0: ff
434  1: ff
435     *** Failers
436 No match
437     0zzz
438 No match
439     gzzz
440 No match
441     fed\x20
442 No match
443     Any old rubbish
444 No match
446 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
447     .1.2.3
448  0: .1.2.3
449  1: 1
450  2: 2
451  3: 3
452     A.12.123.0
453  0: A.12.123.0
454  1: 12
455  2: 123
456  3: 0
457     *** Failers
458 No match
459     .1.2.3333
460 No match
461     1.2.3
462 No match
463     1234.2.3
464 No match
466 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
467     1 IN SOA non-sp1 non-sp2(
468  0: 1 IN SOA non-sp1 non-sp2(
469  1: 1
470  2: non-sp1
471  3: non-sp2
472     1    IN    SOA    non-sp1    non-sp2   (
473  0: 1    IN    SOA    non-sp1    non-sp2   (
474  1: 1
475  2: non-sp1
476  3: non-sp2
477     *** Failers
478 No match
479     1IN SOA non-sp1 non-sp2(
480 No match
482 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
483     a.
484  0: a.
485     Z.
486  0: Z.
487     2.
488  0: 2.
489     ab-c.pq-r.
490  0: ab-c.pq-r.
491  1: .pq-r
492     sxk.zzz.ac.uk.
493  0: sxk.zzz.ac.uk.
494  1: .uk
495     x-.y-.
496  0: x-.y-.
497  1: .y-
498     *** Failers
499 No match
500     -abc.peq.
501 No match
503 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
504     *.a
505  0: *.a
506     *.b0-a
507  0: *.b0-a
508  1: 0-a
509     *.c3-b.c
510  0: *.c3-b.c
511  1: 3-b
512  2: .c
513     *.c-a.b-c
514  0: *.c-a.b-c
515  1: -a
516  2: .b-c
517  3: -c
518     *** Failers
519 No match
520     *.0
521 No match
522     *.a-
523 No match
524     *.a-b.c-
525 No match
526     *.c-a.0-c
527 No match
529 /^(?=ab(de))(abd)(e)/
530     abde
531  0: abde
532  1: de
533  2: abd
534  3: e
536 /^(?!(ab)de|x)(abd)(f)/
537     abdf
538  0: abdf
539  1: <unset>
540  2: abd
541  3: f
543 /^(?=(ab(cd)))(ab)/
544     abcd
545  0: ab
546  1: abcd
547  2: cd
548  3: ab
550 /^[\da-f](\.[\da-f])*$/i
551     a.b.c.d
552  0: a.b.c.d
553  1: .d
554     A.B.C.D
555  0: A.B.C.D
556  1: .D
557     a.b.c.1.2.3.C
558  0: a.b.c.1.2.3.C
559  1: .C
561 /^\".*\"\s*(;.*)?$/
562     \"1234\"
563  0: "1234"
564     \"abcd\" ;
565  0: "abcd" ;
566  1: ;
567     \"\" ; rhubarb
568  0: "" ; rhubarb
569  1: ; rhubarb
570     *** Failers
571 No match
572     \"1234\" : things
573 No match
575 /^$/
576     \
577  0: 
578     *** Failers
579 No match
581 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
582     ab c
583  0: ab c
584     *** Failers
585 No match
586     abc
587 No match
588     ab cde
589 No match
591 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
592     ab c
593  0: ab c
594     *** Failers
595 No match
596     abc
597 No match
598     ab cde
599 No match
601 /^   a\ b[c ]d       $/x
602     a bcd
603  0: a bcd
604     a b d
605  0: a b d
606     *** Failers
607 No match
608     abcd
609 No match
610     ab d
611 No match
613 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
614     abcdefhijklm
615  0: abcdefhijklm
616  1: abc
617  2: bc
618  3: c
619  4: def
620  5: ef
621  6: f
622  7: hij
623  8: ij
624  9: j
625 10: klm
626 11: lm
627 12: m
629 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
630     abcdefhijklm
631  0: abcdefhijklm
632  1: bc
633  2: c
634  3: ef
635  4: f
636  5: ij
637  6: j
638  7: lm
639  8: m
641 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
642     a+ Z0+\x08\n\x1d\x12
643  0: a+ Z0+\x08\x0a\x1d\x12
645 /^[.^$|()*+?{,}]+/
646     .^\$(*+)|{?,?}
647  0: .^$(*+)|{?,?}
649 /^a*\w/
650     z
651  0: z
652     az
653  0: az
654     aaaz
655  0: aaaz
656     a
657  0: a
658     aa
659  0: aa
660     aaaa
661  0: aaaa
662     a+
663  0: a
664     aa+
665  0: aa
667 /^a*?\w/
668     z
669  0: z
670     az
671  0: a
672     aaaz
673  0: a
674     a
675  0: a
676     aa
677  0: a
678     aaaa
679  0: a
680     a+
681  0: a
682     aa+
683  0: a
685 /^a+\w/
686     az
687  0: az
688     aaaz
689  0: aaaz
690     aa
691  0: aa
692     aaaa
693  0: aaaa
694     aa+
695  0: aa
697 /^a+?\w/
698     az
699  0: az
700     aaaz
701  0: aa
702     aa
703  0: aa
704     aaaa
705  0: aa
706     aa+
707  0: aa
709 /^\d{8}\w{2,}/
710     1234567890
711  0: 1234567890
712     12345678ab
713  0: 12345678ab
714     12345678__
715  0: 12345678__
716     *** Failers
717 No match
718     1234567
719 No match
721 /^[aeiou\d]{4,5}$/
722     uoie
723  0: uoie
724     1234
725  0: 1234
726     12345
727  0: 12345
728     aaaaa
729  0: aaaaa
730     *** Failers
731 No match
732     123456
733 No match
735 /^[aeiou\d]{4,5}?/
736     uoie
737  0: uoie
738     1234
739  0: 1234
740     12345
741  0: 1234
742     aaaaa
743  0: aaaa
744     123456
745  0: 1234
747 /\A(abc|def)=(\1){2,3}\Z/
748     abc=abcabc
749  0: abc=abcabc
750  1: abc
751  2: abc
752     def=defdefdef
753  0: def=defdefdef
754  1: def
755  2: def
756     *** Failers
757 No match
758     abc=defdef
759 No match
761 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
762     abcdefghijkcda2
763  0: abcdefghijkcda2
764  1: a
765  2: b
766  3: c
767  4: d
768  5: e
769  6: f
770  7: g
771  8: h
772  9: i
773 10: j
774 11: k
775 12: cd
776     abcdefghijkkkkcda2
777  0: abcdefghijkkkkcda2
778  1: a
779  2: b
780  3: c
781  4: d
782  5: e
783  6: f
784  7: g
785  8: h
786  9: i
787 10: j
788 11: k
789 12: cd
791 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
792     cataract cataract23
793  0: cataract cataract23
794  1: cataract
795  2: aract
796  3: ract
797  4: 
798  5: 3
799     catatonic catatonic23
800  0: catatonic catatonic23
801  1: catatonic
802  2: atonic
803  3: tonic
804  4: 
805  5: 3
806     caterpillar caterpillar23
807  0: caterpillar caterpillar23
808  1: caterpillar
809  2: erpillar
810  3: <unset>
811  4: 
812  5: 3
815 /^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]/
816     From abcd  Mon Sep 01 12:33:02 1997
817  0: From abcd  Mon Sep 01 12:33
818  1: abcd
820 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
821     From abcd  Mon Sep 01 12:33:02 1997
822  0: From abcd  Mon Sep 01 12:33
823  1: Sep 
824     From abcd  Mon Sep  1 12:33:02 1997
825  0: From abcd  Mon Sep  1 12:33
826  1: Sep  
827     *** Failers
828 No match
829     From abcd  Sep 01 12:33:02 1997
830 No match
832 /^12.34/s
833     12\n34
834  0: 12\x0a34
835     12\r34
836  0: 12\x0d34
838 /\w+(?=\t)/
839     the quick brown\t fox
840  0: brown
842 /foo(?!bar)(.*)/
843     foobar is foolish see?
844  0: foolish see?
845  1: lish see?
847 /(?:(?!foo)...|^.{0,2})bar(.*)/
848     foobar crowbar etc
849  0: rowbar etc
850  1:  etc
851     barrel
852  0: barrel
853  1: rel
854     2barrel
855  0: 2barrel
856  1: rel
857     A barrel
858  0: A barrel
859  1: rel
861 /^(\D*)(?=\d)(?!123)/
862     abc456
863  0: abc
864  1: abc
865     *** Failers
866 No match
867     abc123
868 No match
870 /^1234(?# test newlines
871   inside)/
872     1234
873  0: 1234
875 /^1234 #comment in extended re
876   /x
877     1234
878  0: 1234
880 /#rhubarb
881   abcd/x
882     abcd
883  0: abcd
885 /^abcd#rhubarb/x
886     abcd
887  0: abcd
889 /^(a)\1{2,3}(.)/
890     aaab
891  0: aaab
892  1: a
893  2: b
894     aaaab
895  0: aaaab
896  1: a
897  2: b
898     aaaaab
899  0: aaaaa
900  1: a
901  2: a
902     aaaaaab
903  0: aaaaa
904  1: a
905  2: a
907 /(?!^)abc/
908     the abc
909  0: abc
910     *** Failers
911 No match
912     abc
913 No match
915 /(?=^)abc/
916     abc
917  0: abc
918     *** Failers
919 No match
920     the abc
921 No match
923 /^[ab]{1,3}(ab*|b)/
924     aabbbbb
925  0: aabb
926  1: b
928 /^[ab]{1,3}?(ab*|b)/
929     aabbbbb
930  0: aabbbbb
931  1: abbbbb
933 /^[ab]{1,3}?(ab*?|b)/
934     aabbbbb
935  0: aa
936  1: a
938 /^[ab]{1,3}(ab*?|b)/
939     aabbbbb
940  0: aabb
941  1: b
943 /  (?: [\040\t] |  \(
944 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
945 \)  )*                          # optional leading comment
946 (?:    (?:
947 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
948 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
950 " (?:                      # opening quote...
951 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
952 |                     #    or
953 \\ [^\x80-\xff]           #   Escaped something (something != CR)
954 )* "  # closing quote
955 )                    # initial word
956 (?:  (?: [\040\t] |  \(
957 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
958 \)  )*  \.  (?: [\040\t] |  \(
959 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
960 \)  )*   (?:
961 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
962 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
964 " (?:                      # opening quote...
965 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
966 |                     #    or
967 \\ [^\x80-\xff]           #   Escaped something (something != CR)
968 )* "  # closing quote
969 )  )* # further okay, if led by a period
970 (?: [\040\t] |  \(
971 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
972 \)  )*  @  (?: [\040\t] |  \(
973 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
974 \)  )*    (?:
975 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
976 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
977 |   \[                         # [
978 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
979 \]                        #           ]
980 )                           # initial subdomain
981 (?:                                  #
982 (?: [\040\t] |  \(
983 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
984 \)  )*  \.                        # if led by a period...
985 (?: [\040\t] |  \(
986 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
987 \)  )*   (?:
988 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
989 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
990 |   \[                         # [
991 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
992 \]                        #           ]
993 )                     #   ...further okay
995 # address
996 |                     #  or
998 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
999 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1001 " (?:                      # opening quote...
1002 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1003 |                     #    or
1004 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1005 )* "  # closing quote
1006 )             # one word, optionally followed by....
1008 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
1010 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1011 \)       |  # comments, or...
1013 " (?:                      # opening quote...
1014 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1015 |                     #    or
1016 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1017 )* "  # closing quote
1018 # quoted strings
1020 <  (?: [\040\t] |  \(
1021 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1022 \)  )*                     # leading <
1023 (?:  @  (?: [\040\t] |  \(
1024 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1025 \)  )*    (?:
1026 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1027 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1028 |   \[                         # [
1029 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1030 \]                        #           ]
1031 )                           # initial subdomain
1032 (?:                                  #
1033 (?: [\040\t] |  \(
1034 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1035 \)  )*  \.                        # if led by a period...
1036 (?: [\040\t] |  \(
1037 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1038 \)  )*   (?:
1039 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1040 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1041 |   \[                         # [
1042 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1043 \]                        #           ]
1044 )                     #   ...further okay
1047 (?:  (?: [\040\t] |  \(
1048 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1049 \)  )*  ,  (?: [\040\t] |  \(
1050 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1051 \)  )*  @  (?: [\040\t] |  \(
1052 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1053 \)  )*    (?:
1054 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1055 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1056 |   \[                         # [
1057 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1058 \]                        #           ]
1059 )                           # initial subdomain
1060 (?:                                  #
1061 (?: [\040\t] |  \(
1062 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1063 \)  )*  \.                        # if led by a period...
1064 (?: [\040\t] |  \(
1065 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1066 \)  )*   (?:
1067 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1068 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1069 |   \[                         # [
1070 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1071 \]                        #           ]
1072 )                     #   ...further okay
1074 )* # further okay, if led by comma
1075 :                                # closing colon
1076 (?: [\040\t] |  \(
1077 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1078 \)  )*  )? #       optional route
1080 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1081 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1083 " (?:                      # opening quote...
1084 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1085 |                     #    or
1086 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1087 )* "  # closing quote
1088 )                    # initial word
1089 (?:  (?: [\040\t] |  \(
1090 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1091 \)  )*  \.  (?: [\040\t] |  \(
1092 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1093 \)  )*   (?:
1094 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1095 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1097 " (?:                      # opening quote...
1098 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1099 |                     #    or
1100 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1101 )* "  # closing quote
1102 )  )* # further okay, if led by a period
1103 (?: [\040\t] |  \(
1104 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1105 \)  )*  @  (?: [\040\t] |  \(
1106 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1107 \)  )*    (?:
1108 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1109 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1110 |   \[                         # [
1111 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1112 \]                        #           ]
1113 )                           # initial subdomain
1114 (?:                                  #
1115 (?: [\040\t] |  \(
1116 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1117 \)  )*  \.                        # if led by a period...
1118 (?: [\040\t] |  \(
1119 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1120 \)  )*   (?:
1121 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1122 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1123 |   \[                         # [
1124 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1125 \]                        #           ]
1126 )                     #   ...further okay
1128 #       address spec
1129 (?: [\040\t] |  \(
1130 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1131 \)  )*  > #                  trailing >
1132 # name and address
1133 )  (?: [\040\t] |  \(
1134 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1135 \)  )*                       # optional trailing comment
1137     Alan Other <user\@dom.ain>
1138  0: Alan Other <user@dom.ain>
1139     <user\@dom.ain>
1140  0: user@dom.ain
1141     user\@dom.ain
1142  0: user@dom.ain
1143     \"A. Other\" <user.1234\@dom.ain> (a comment)
1144  0: "A. Other" <user.1234@dom.ain> (a comment)
1145     A. Other <user.1234\@dom.ain> (a comment)
1146  0:  Other <user.1234@dom.ain> (a comment)
1147     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1148  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1149     A missing angle <user\@some.where
1150  0: user@some.where
1151     *** Failers
1152 No match
1153     The quick brown fox
1154 No match
1156 /[\040\t]*                    # Nab whitespace.
1158 \(                              #  (
1159 [^\\\x80-\xff\n\015()] *                             #     normal*
1160 (?:                                 #       (
1161 (?:  \\ [^\x80-\xff]  |
1162 \(                            #  (
1163 [^\\\x80-\xff\n\015()] *                            #     normal*
1164 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1165 \)                           #                       )
1166 )    #         special
1167 [^\\\x80-\xff\n\015()] *                         #         normal*
1168 )*                                  #            )*
1169 \)                             #                )
1170 [\040\t]* )*    # If comment found, allow more spaces.
1171 # optional leading comment
1174 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1175 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1176 # Atom
1177 |                       #  or
1178 "                                     # "
1179 [^\\\x80-\xff\n\015"] *                            #   normal
1180 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1181 "                                     #        "
1182 # Quoted string
1184 [\040\t]*                    # Nab whitespace.
1186 \(                              #  (
1187 [^\\\x80-\xff\n\015()] *                             #     normal*
1188 (?:                                 #       (
1189 (?:  \\ [^\x80-\xff]  |
1190 \(                            #  (
1191 [^\\\x80-\xff\n\015()] *                            #     normal*
1192 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1193 \)                           #                       )
1194 )    #         special
1195 [^\\\x80-\xff\n\015()] *                         #         normal*
1196 )*                                  #            )*
1197 \)                             #                )
1198 [\040\t]* )*    # If comment found, allow more spaces.
1201 [\040\t]*                    # Nab whitespace.
1203 \(                              #  (
1204 [^\\\x80-\xff\n\015()] *                             #     normal*
1205 (?:                                 #       (
1206 (?:  \\ [^\x80-\xff]  |
1207 \(                            #  (
1208 [^\\\x80-\xff\n\015()] *                            #     normal*
1209 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1210 \)                           #                       )
1211 )    #         special
1212 [^\\\x80-\xff\n\015()] *                         #         normal*
1213 )*                                  #            )*
1214 \)                             #                )
1215 [\040\t]* )*    # If comment found, allow more spaces.
1217 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1218 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1219 # Atom
1220 |                       #  or
1221 "                                     # "
1222 [^\\\x80-\xff\n\015"] *                            #   normal
1223 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1224 "                                     #        "
1225 # Quoted string
1227 [\040\t]*                    # Nab whitespace.
1229 \(                              #  (
1230 [^\\\x80-\xff\n\015()] *                             #     normal*
1231 (?:                                 #       (
1232 (?:  \\ [^\x80-\xff]  |
1233 \(                            #  (
1234 [^\\\x80-\xff\n\015()] *                            #     normal*
1235 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1236 \)                           #                       )
1237 )    #         special
1238 [^\\\x80-\xff\n\015()] *                         #         normal*
1239 )*                                  #            )*
1240 \)                             #                )
1241 [\040\t]* )*    # If comment found, allow more spaces.
1242 # additional words
1245 [\040\t]*                    # Nab whitespace.
1247 \(                              #  (
1248 [^\\\x80-\xff\n\015()] *                             #     normal*
1249 (?:                                 #       (
1250 (?:  \\ [^\x80-\xff]  |
1251 \(                            #  (
1252 [^\\\x80-\xff\n\015()] *                            #     normal*
1253 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1254 \)                           #                       )
1255 )    #         special
1256 [^\\\x80-\xff\n\015()] *                         #         normal*
1257 )*                                  #            )*
1258 \)                             #                )
1259 [\040\t]* )*    # If comment found, allow more spaces.
1261 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1262 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1264 \[                            # [
1265 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1266 \]                           #           ]
1268 [\040\t]*                    # Nab whitespace.
1270 \(                              #  (
1271 [^\\\x80-\xff\n\015()] *                             #     normal*
1272 (?:                                 #       (
1273 (?:  \\ [^\x80-\xff]  |
1274 \(                            #  (
1275 [^\\\x80-\xff\n\015()] *                            #     normal*
1276 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1277 \)                           #                       )
1278 )    #         special
1279 [^\\\x80-\xff\n\015()] *                         #         normal*
1280 )*                                  #            )*
1281 \)                             #                )
1282 [\040\t]* )*    # If comment found, allow more spaces.
1283 # optional trailing comments
1286 [\040\t]*                    # Nab whitespace.
1288 \(                              #  (
1289 [^\\\x80-\xff\n\015()] *                             #     normal*
1290 (?:                                 #       (
1291 (?:  \\ [^\x80-\xff]  |
1292 \(                            #  (
1293 [^\\\x80-\xff\n\015()] *                            #     normal*
1294 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1295 \)                           #                       )
1296 )    #         special
1297 [^\\\x80-\xff\n\015()] *                         #         normal*
1298 )*                                  #            )*
1299 \)                             #                )
1300 [\040\t]* )*    # If comment found, allow more spaces.
1302 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1303 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1305 \[                            # [
1306 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1307 \]                           #           ]
1309 [\040\t]*                    # Nab whitespace.
1311 \(                              #  (
1312 [^\\\x80-\xff\n\015()] *                             #     normal*
1313 (?:                                 #       (
1314 (?:  \\ [^\x80-\xff]  |
1315 \(                            #  (
1316 [^\\\x80-\xff\n\015()] *                            #     normal*
1317 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1318 \)                           #                       )
1319 )    #         special
1320 [^\\\x80-\xff\n\015()] *                         #         normal*
1321 )*                                  #            )*
1322 \)                             #                )
1323 [\040\t]* )*    # If comment found, allow more spaces.
1324 # optional trailing comments
1326 # address
1327 |                             #  or
1329 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1330 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1331 # Atom
1332 |                       #  or
1333 "                                     # "
1334 [^\\\x80-\xff\n\015"] *                            #   normal
1335 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1336 "                                     #        "
1337 # Quoted string
1339 # leading word
1340 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
1343 \(                              #  (
1344 [^\\\x80-\xff\n\015()] *                             #     normal*
1345 (?:                                 #       (
1346 (?:  \\ [^\x80-\xff]  |
1347 \(                            #  (
1348 [^\\\x80-\xff\n\015()] *                            #     normal*
1349 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1350 \)                           #                       )
1351 )    #         special
1352 [^\\\x80-\xff\n\015()] *                         #         normal*
1353 )*                                  #            )*
1354 \)                             #                )
1356 "                                     # "
1357 [^\\\x80-\xff\n\015"] *                            #   normal
1358 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1359 "                                     #        "
1360 ) # "special" comment or quoted string
1361 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
1364 [\040\t]*                    # Nab whitespace.
1366 \(                              #  (
1367 [^\\\x80-\xff\n\015()] *                             #     normal*
1368 (?:                                 #       (
1369 (?:  \\ [^\x80-\xff]  |
1370 \(                            #  (
1371 [^\\\x80-\xff\n\015()] *                            #     normal*
1372 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1373 \)                           #                       )
1374 )    #         special
1375 [^\\\x80-\xff\n\015()] *                         #         normal*
1376 )*                                  #            )*
1377 \)                             #                )
1378 [\040\t]* )*    # If comment found, allow more spaces.
1379 # <
1382 [\040\t]*                    # Nab whitespace.
1384 \(                              #  (
1385 [^\\\x80-\xff\n\015()] *                             #     normal*
1386 (?:                                 #       (
1387 (?:  \\ [^\x80-\xff]  |
1388 \(                            #  (
1389 [^\\\x80-\xff\n\015()] *                            #     normal*
1390 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1391 \)                           #                       )
1392 )    #         special
1393 [^\\\x80-\xff\n\015()] *                         #         normal*
1394 )*                                  #            )*
1395 \)                             #                )
1396 [\040\t]* )*    # If comment found, allow more spaces.
1398 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1399 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1401 \[                            # [
1402 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1403 \]                           #           ]
1405 [\040\t]*                    # Nab whitespace.
1407 \(                              #  (
1408 [^\\\x80-\xff\n\015()] *                             #     normal*
1409 (?:                                 #       (
1410 (?:  \\ [^\x80-\xff]  |
1411 \(                            #  (
1412 [^\\\x80-\xff\n\015()] *                            #     normal*
1413 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1414 \)                           #                       )
1415 )    #         special
1416 [^\\\x80-\xff\n\015()] *                         #         normal*
1417 )*                                  #            )*
1418 \)                             #                )
1419 [\040\t]* )*    # If comment found, allow more spaces.
1420 # optional trailing comments
1423 [\040\t]*                    # Nab whitespace.
1425 \(                              #  (
1426 [^\\\x80-\xff\n\015()] *                             #     normal*
1427 (?:                                 #       (
1428 (?:  \\ [^\x80-\xff]  |
1429 \(                            #  (
1430 [^\\\x80-\xff\n\015()] *                            #     normal*
1431 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1432 \)                           #                       )
1433 )    #         special
1434 [^\\\x80-\xff\n\015()] *                         #         normal*
1435 )*                                  #            )*
1436 \)                             #                )
1437 [\040\t]* )*    # If comment found, allow more spaces.
1439 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1440 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1442 \[                            # [
1443 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1444 \]                           #           ]
1446 [\040\t]*                    # Nab whitespace.
1448 \(                              #  (
1449 [^\\\x80-\xff\n\015()] *                             #     normal*
1450 (?:                                 #       (
1451 (?:  \\ [^\x80-\xff]  |
1452 \(                            #  (
1453 [^\\\x80-\xff\n\015()] *                            #     normal*
1454 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1455 \)                           #                       )
1456 )    #         special
1457 [^\\\x80-\xff\n\015()] *                         #         normal*
1458 )*                                  #            )*
1459 \)                             #                )
1460 [\040\t]* )*    # If comment found, allow more spaces.
1461 # optional trailing comments
1463 (?: ,
1464 [\040\t]*                    # Nab whitespace.
1466 \(                              #  (
1467 [^\\\x80-\xff\n\015()] *                             #     normal*
1468 (?:                                 #       (
1469 (?:  \\ [^\x80-\xff]  |
1470 \(                            #  (
1471 [^\\\x80-\xff\n\015()] *                            #     normal*
1472 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1473 \)                           #                       )
1474 )    #         special
1475 [^\\\x80-\xff\n\015()] *                         #         normal*
1476 )*                                  #            )*
1477 \)                             #                )
1478 [\040\t]* )*    # If comment found, allow more spaces.
1480 [\040\t]*                    # Nab whitespace.
1482 \(                              #  (
1483 [^\\\x80-\xff\n\015()] *                             #     normal*
1484 (?:                                 #       (
1485 (?:  \\ [^\x80-\xff]  |
1486 \(                            #  (
1487 [^\\\x80-\xff\n\015()] *                            #     normal*
1488 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1489 \)                           #                       )
1490 )    #         special
1491 [^\\\x80-\xff\n\015()] *                         #         normal*
1492 )*                                  #            )*
1493 \)                             #                )
1494 [\040\t]* )*    # If comment found, allow more spaces.
1496 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1497 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1499 \[                            # [
1500 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1501 \]                           #           ]
1503 [\040\t]*                    # Nab whitespace.
1505 \(                              #  (
1506 [^\\\x80-\xff\n\015()] *                             #     normal*
1507 (?:                                 #       (
1508 (?:  \\ [^\x80-\xff]  |
1509 \(                            #  (
1510 [^\\\x80-\xff\n\015()] *                            #     normal*
1511 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1512 \)                           #                       )
1513 )    #         special
1514 [^\\\x80-\xff\n\015()] *                         #         normal*
1515 )*                                  #            )*
1516 \)                             #                )
1517 [\040\t]* )*    # If comment found, allow more spaces.
1518 # optional trailing comments
1521 [\040\t]*                    # Nab whitespace.
1523 \(                              #  (
1524 [^\\\x80-\xff\n\015()] *                             #     normal*
1525 (?:                                 #       (
1526 (?:  \\ [^\x80-\xff]  |
1527 \(                            #  (
1528 [^\\\x80-\xff\n\015()] *                            #     normal*
1529 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1530 \)                           #                       )
1531 )    #         special
1532 [^\\\x80-\xff\n\015()] *                         #         normal*
1533 )*                                  #            )*
1534 \)                             #                )
1535 [\040\t]* )*    # If comment found, allow more spaces.
1537 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1538 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1540 \[                            # [
1541 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1542 \]                           #           ]
1544 [\040\t]*                    # Nab whitespace.
1546 \(                              #  (
1547 [^\\\x80-\xff\n\015()] *                             #     normal*
1548 (?:                                 #       (
1549 (?:  \\ [^\x80-\xff]  |
1550 \(                            #  (
1551 [^\\\x80-\xff\n\015()] *                            #     normal*
1552 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1553 \)                           #                       )
1554 )    #         special
1555 [^\\\x80-\xff\n\015()] *                         #         normal*
1556 )*                                  #            )*
1557 \)                             #                )
1558 [\040\t]* )*    # If comment found, allow more spaces.
1559 # optional trailing comments
1561 )*  # additional domains
1563 [\040\t]*                    # Nab whitespace.
1565 \(                              #  (
1566 [^\\\x80-\xff\n\015()] *                             #     normal*
1567 (?:                                 #       (
1568 (?:  \\ [^\x80-\xff]  |
1569 \(                            #  (
1570 [^\\\x80-\xff\n\015()] *                            #     normal*
1571 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1572 \)                           #                       )
1573 )    #         special
1574 [^\\\x80-\xff\n\015()] *                         #         normal*
1575 )*                                  #            )*
1576 \)                             #                )
1577 [\040\t]* )*    # If comment found, allow more spaces.
1578 # optional trailing comments
1579 )?     #       optional route
1581 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1582 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1583 # Atom
1584 |                       #  or
1585 "                                     # "
1586 [^\\\x80-\xff\n\015"] *                            #   normal
1587 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1588 "                                     #        "
1589 # Quoted string
1591 [\040\t]*                    # Nab whitespace.
1593 \(                              #  (
1594 [^\\\x80-\xff\n\015()] *                             #     normal*
1595 (?:                                 #       (
1596 (?:  \\ [^\x80-\xff]  |
1597 \(                            #  (
1598 [^\\\x80-\xff\n\015()] *                            #     normal*
1599 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1600 \)                           #                       )
1601 )    #         special
1602 [^\\\x80-\xff\n\015()] *                         #         normal*
1603 )*                                  #            )*
1604 \)                             #                )
1605 [\040\t]* )*    # If comment found, allow more spaces.
1608 [\040\t]*                    # Nab whitespace.
1610 \(                              #  (
1611 [^\\\x80-\xff\n\015()] *                             #     normal*
1612 (?:                                 #       (
1613 (?:  \\ [^\x80-\xff]  |
1614 \(                            #  (
1615 [^\\\x80-\xff\n\015()] *                            #     normal*
1616 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1617 \)                           #                       )
1618 )    #         special
1619 [^\\\x80-\xff\n\015()] *                         #         normal*
1620 )*                                  #            )*
1621 \)                             #                )
1622 [\040\t]* )*    # If comment found, allow more spaces.
1624 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1625 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1626 # Atom
1627 |                       #  or
1628 "                                     # "
1629 [^\\\x80-\xff\n\015"] *                            #   normal
1630 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1631 "                                     #        "
1632 # Quoted string
1634 [\040\t]*                    # Nab whitespace.
1636 \(                              #  (
1637 [^\\\x80-\xff\n\015()] *                             #     normal*
1638 (?:                                 #       (
1639 (?:  \\ [^\x80-\xff]  |
1640 \(                            #  (
1641 [^\\\x80-\xff\n\015()] *                            #     normal*
1642 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1643 \)                           #                       )
1644 )    #         special
1645 [^\\\x80-\xff\n\015()] *                         #         normal*
1646 )*                                  #            )*
1647 \)                             #                )
1648 [\040\t]* )*    # If comment found, allow more spaces.
1649 # additional words
1652 [\040\t]*                    # Nab whitespace.
1654 \(                              #  (
1655 [^\\\x80-\xff\n\015()] *                             #     normal*
1656 (?:                                 #       (
1657 (?:  \\ [^\x80-\xff]  |
1658 \(                            #  (
1659 [^\\\x80-\xff\n\015()] *                            #     normal*
1660 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1661 \)                           #                       )
1662 )    #         special
1663 [^\\\x80-\xff\n\015()] *                         #         normal*
1664 )*                                  #            )*
1665 \)                             #                )
1666 [\040\t]* )*    # If comment found, allow more spaces.
1668 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1669 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1671 \[                            # [
1672 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1673 \]                           #           ]
1675 [\040\t]*                    # Nab whitespace.
1677 \(                              #  (
1678 [^\\\x80-\xff\n\015()] *                             #     normal*
1679 (?:                                 #       (
1680 (?:  \\ [^\x80-\xff]  |
1681 \(                            #  (
1682 [^\\\x80-\xff\n\015()] *                            #     normal*
1683 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1684 \)                           #                       )
1685 )    #         special
1686 [^\\\x80-\xff\n\015()] *                         #         normal*
1687 )*                                  #            )*
1688 \)                             #                )
1689 [\040\t]* )*    # If comment found, allow more spaces.
1690 # optional trailing comments
1693 [\040\t]*                    # Nab whitespace.
1695 \(                              #  (
1696 [^\\\x80-\xff\n\015()] *                             #     normal*
1697 (?:                                 #       (
1698 (?:  \\ [^\x80-\xff]  |
1699 \(                            #  (
1700 [^\\\x80-\xff\n\015()] *                            #     normal*
1701 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1702 \)                           #                       )
1703 )    #         special
1704 [^\\\x80-\xff\n\015()] *                         #         normal*
1705 )*                                  #            )*
1706 \)                             #                )
1707 [\040\t]* )*    # If comment found, allow more spaces.
1709 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1710 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1712 \[                            # [
1713 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1714 \]                           #           ]
1716 [\040\t]*                    # Nab whitespace.
1718 \(                              #  (
1719 [^\\\x80-\xff\n\015()] *                             #     normal*
1720 (?:                                 #       (
1721 (?:  \\ [^\x80-\xff]  |
1722 \(                            #  (
1723 [^\\\x80-\xff\n\015()] *                            #     normal*
1724 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1725 \)                           #                       )
1726 )    #         special
1727 [^\\\x80-\xff\n\015()] *                         #         normal*
1728 )*                                  #            )*
1729 \)                             #                )
1730 [\040\t]* )*    # If comment found, allow more spaces.
1731 # optional trailing comments
1733 #       address spec
1734 >                    #                 >
1735 # name and address
1738     Alan Other <user\@dom.ain>
1739  0: Alan Other <user@dom.ain>
1740     <user\@dom.ain>
1741  0: user@dom.ain
1742     user\@dom.ain
1743  0: user@dom.ain
1744     \"A. Other\" <user.1234\@dom.ain> (a comment)
1745  0: "A. Other" <user.1234@dom.ain>
1746     A. Other <user.1234\@dom.ain> (a comment)
1747  0:  Other <user.1234@dom.ain>
1748     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1749  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1750     A missing angle <user\@some.where
1751  0: user@some.where
1752     *** Failers
1753 No match
1754     The quick brown fox
1755 No match
1757 /abc\0def\00pqr\000xyz\0000AB/
1758     abc\0def\00pqr\000xyz\0000AB
1759  0: abc\x00def\x00pqr\x00xyz\x000AB
1760     abc456 abc\0def\00pqr\000xyz\0000ABCDE
1761  0: abc\x00def\x00pqr\x00xyz\x000AB
1763 /abc\x0def\x00pqr\x000xyz\x0000AB/
1764     abc\x0def\x00pqr\x000xyz\x0000AB
1765  0: abc\x0def\x00pqr\x000xyz\x0000AB
1766     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1767  0: abc\x0def\x00pqr\x000xyz\x0000AB
1769 /^[\000-\037]/
1770     \0A
1771  0: \x00
1772     \01B
1773  0: \x01
1774     \037C
1775  0: \x1f
1777 /\0*/
1778     \0\0\0\0
1779  0: \x00\x00\x00\x00
1781 /A\x0{2,3}Z/
1782     The A\x0\x0Z
1783  0: A\x00\x00Z
1784     An A\0\x0\0Z
1785  0: A\x00\x00\x00Z
1786     *** Failers
1787 No match
1788     A\0Z
1789 No match
1790     A\0\x0\0\x0Z
1791 No match
1793 /^(cow|)\1(bell)/
1794     cowcowbell
1795  0: cowcowbell
1796  1: cow
1797  2: bell
1798     bell
1799  0: bell
1800  1: 
1801  2: bell
1802     *** Failers
1803 No match
1804     cowbell
1805 No match
1807 /^\s/
1808     \040abc
1809  0:  
1810     \x0cabc
1811  0: \x0c
1812     \nabc
1813  0: \x0a
1814     \rabc
1815  0: \x0d
1816     \tabc
1817  0: \x09
1818     *** Failers
1819 No match
1820     abc
1821 No match
1823 /^a     b
1824     \f  c/x
1825     abc
1826  0: abc
1828 /^(a|)\1*b/
1829     ab
1830  0: ab
1831  1: a
1832     aaaab
1833  0: aaaab
1834  1: a
1835     b
1836  0: b
1837  1: 
1838     *** Failers
1839 No match
1840     acb
1841 No match
1843 /^(a|)\1+b/
1844     aab
1845  0: aab
1846  1: a
1847     aaaab
1848  0: aaaab
1849  1: a
1850     b
1851  0: b
1852  1: 
1853     *** Failers
1854 No match
1855     ab
1856 No match
1858 /^(a|)\1?b/
1859     ab
1860  0: ab
1861  1: a
1862     aab
1863  0: aab
1864  1: a
1865     b
1866  0: b
1867  1: 
1868     *** Failers
1869 No match
1870     acb
1871 No match
1873 /^(a|)\1{2}b/
1874     aaab
1875  0: aaab
1876  1: a
1877     b
1878  0: b
1879  1: 
1880     *** Failers
1881 No match
1882     ab
1883 No match
1884     aab
1885 No match
1886     aaaab
1887 No match
1889 /^(a|)\1{2,3}b/
1890     aaab
1891  0: aaab
1892  1: a
1893     aaaab
1894  0: aaaab
1895  1: a
1896     b
1897  0: b
1898  1: 
1899     *** Failers
1900 No match
1901     ab
1902 No match
1903     aab
1904 No match
1905     aaaaab
1906 No match
1908 /ab{1,3}bc/
1909     abbbbc
1910  0: abbbbc
1911     abbbc
1912  0: abbbc
1913     abbc
1914  0: abbc
1915     *** Failers
1916 No match
1917     abc
1918 No match
1919     abbbbbc
1920 No match
1922 /([^.]*)\.([^:]*):[T ]+(.*)/
1923     track1.title:TBlah blah blah
1924  0: track1.title:TBlah blah blah
1925  1: track1
1926  2: title
1927  3: Blah blah blah
1929 /([^.]*)\.([^:]*):[T ]+(.*)/i
1930     track1.title:TBlah blah blah
1931  0: track1.title:TBlah blah blah
1932  1: track1
1933  2: title
1934  3: Blah blah blah
1936 /([^.]*)\.([^:]*):[t ]+(.*)/i
1937     track1.title:TBlah blah blah
1938  0: track1.title:TBlah blah blah
1939  1: track1
1940  2: title
1941  3: Blah blah blah
1943 /^[W-c]+$/
1944     WXY_^abc
1945  0: WXY_^abc
1946     *** Failers
1947 No match
1948     wxy
1949 No match
1951 /^[W-c]+$/i
1952     WXY_^abc
1953  0: WXY_^abc
1954     wxy_^ABC
1955  0: wxy_^ABC
1957 /^[\x3f-\x5F]+$/i
1958     WXY_^abc
1959  0: WXY_^abc
1960     wxy_^ABC
1961  0: wxy_^ABC
1963 /^abc$/m
1964     abc
1965  0: abc
1966     qqq\nabc
1967  0: abc
1968     abc\nzzz
1969  0: abc
1970     qqq\nabc\nzzz
1971  0: abc
1973 /^abc$/
1974     abc
1975  0: abc
1976     *** Failers
1977 No match
1978     qqq\nabc
1979 No match
1980     abc\nzzz
1981 No match
1982     qqq\nabc\nzzz
1983 No match
1985 /\Aabc\Z/m
1986     abc
1987  0: abc
1988     abc\n 
1989  0: abc
1990     *** Failers
1991 No match
1992     qqq\nabc
1993 No match
1994     abc\nzzz
1995 No match
1996     qqq\nabc\nzzz
1997 No match
1998     
1999 /\A(.)*\Z/s
2000     abc\ndef
2001  0: abc\x0adef
2002  1: f
2004 /\A(.)*\Z/m
2005     *** Failers
2006  0: *** Failers
2007  1: s
2008     abc\ndef
2009 No match
2011 /(?:b)|(?::+)/
2012     b::c
2013  0: b
2014     c::b
2015  0: ::
2017 /[-az]+/
2018     az-
2019  0: az-
2020     *** Failers
2021  0: a
2022     b
2023 No match
2025 /[az-]+/
2026     za-
2027  0: za-
2028     *** Failers
2029  0: a
2030     b
2031 No match
2033 /[a\-z]+/
2034     a-z
2035  0: a-z
2036     *** Failers
2037  0: a
2038     b
2039 No match
2041 /[a-z]+/
2042     abcdxyz
2043  0: abcdxyz
2045 /[\d-]+/
2046     12-34
2047  0: 12-34
2048     *** Failers
2049 No match
2050     aaa
2051 No match
2053 /[\d-z]+/
2054     12-34z
2055  0: 12-34z
2056     *** Failers
2057 No match
2058     aaa
2059 No match
2061 /\x5c/
2062     \\
2063  0: \
2065 /\x20Z/
2066     the Zoo
2067  0:  Z
2068     *** Failers
2069 No match
2070     Zulu
2071 No match
2073 /(abc)\1/i
2074     abcabc
2075  0: abcabc
2076  1: abc
2077     ABCabc
2078  0: ABCabc
2079  1: ABC
2080     abcABC
2081  0: abcABC
2082  1: abc
2084 /ab{3cd/
2085     ab{3cd
2086  0: ab{3cd
2088 /ab{3,cd/
2089     ab{3,cd
2090  0: ab{3,cd
2092 /ab{3,4a}cd/
2093     ab{3,4a}cd
2094  0: ab{3,4a}cd
2096 /{4,5a}bc/
2097     {4,5a}bc
2098  0: {4,5a}bc
2100 /abc$/
2101     abc
2102  0: abc
2103     abc\n
2104  0: abc
2105     *** Failers
2106 No match
2107     abc\ndef
2108 No match
2110 /(abc)\123/
2111     abc\x53
2112  0: abcS
2113  1: abc
2115 /(abc)\223/
2116     abc\x93
2117  0: abc\x93
2118  1: abc
2120 /(abc)\323/
2121     abc\xd3
2122  0: abc\xd3
2123  1: abc
2125 /(abc)\100/
2126     abc\x40
2127  0: abc@
2128  1: abc
2129     abc\100
2130  0: abc@
2131  1: abc
2133 /(abc)\1000/
2134     abc\x400
2135  0: abc@0
2136  1: abc
2137     abc\x40\x30
2138  0: abc@0
2139  1: abc
2140     abc\1000
2141  0: abc@0
2142  1: abc
2143     abc\100\x30
2144  0: abc@0
2145  1: abc
2146     abc\100\060
2147  0: abc@0
2148  1: abc
2149     abc\100\60
2150  0: abc@0
2151  1: abc
2153 /abc\81/
2154     abc\081
2155  0: abc\x0081
2156     abc\0\x38\x31
2157  0: abc\x0081
2159 /abc\91/
2160     abc\091
2161  0: abc\x0091
2162     abc\0\x39\x31
2163  0: abc\x0091
2165 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2166     abcdefghijkllS
2167  0: abcdefghijkllS
2168  1: a
2169  2: b
2170  3: c
2171  4: d
2172  5: e
2173  6: f
2174  7: g
2175  8: h
2176  9: i
2177 10: j
2178 11: k
2179 12: l
2181 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2182     abcdefghijk\12S
2183  0: abcdefghijk\x0aS
2184  1: a
2185  2: b
2186  3: c
2187  4: d
2188  5: e
2189  6: f
2190  7: g
2191  8: h
2192  9: i
2193 10: j
2194 11: k
2196 /ab\idef/
2197     abidef
2198  0: abidef
2200 /a{0}bc/
2201     bc
2202  0: bc
2204 /(a|(bc)){0,0}?xyz/
2205     xyz
2206  0: xyz
2208 /abc[\10]de/
2209     abc\010de
2210  0: abc\x08de
2212 /abc[\1]de/
2213     abc\1de
2214  0: abc\x01de
2216 /(abc)[\1]de/
2217     abc\1de
2218  0: abc\x01de
2219  1: abc
2221 /(?s)a.b/
2222     a\nb
2223  0: a\x0ab
2225 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2226     baNOTccccd
2227  0: baNOTcccc
2228  1: b
2229  2: a
2230  3: NOT
2231  4: cccc
2232     baNOTcccd
2233  0: baNOTccc
2234  1: b
2235  2: a
2236  3: NOT
2237  4: ccc
2238     baNOTccd
2239  0: baNOTcc
2240  1: b
2241  2: a
2242  3: NO
2243  4: Tcc
2244     bacccd
2245  0: baccc
2246  1: b
2247  2: a
2248  3: 
2249  4: ccc
2250     *** Failers
2251  0: *** Failers
2252  1: *
2253  2: *
2254  3: * Fail
2255  4: ers
2256     anything
2257 No match
2258     b\bc   
2259 No match
2260     baccd
2261 No match
2263 /[^a]/
2264     Abc
2265  0: A
2266   
2267 /[^a]/i
2268     Abc 
2269  0: b
2271 /[^a]+/
2272     AAAaAbc
2273  0: AAA
2274   
2275 /[^a]+/i
2276     AAAaAbc 
2277  0: bc
2279 /[^a]+/
2280     bbb\nccc
2281  0: bbb\x0accc
2282    
2283 /[^k]$/
2284     abc
2285  0: c
2286     *** Failers
2287  0: s
2288     abk   
2289 No match
2290    
2291 /[^k]{2,3}$/
2292     abc
2293  0: abc
2294     kbc
2295  0: bc
2296     kabc 
2297  0: abc
2298     *** Failers
2299  0: ers
2300     abk
2301 No match
2302     akb
2303 No match
2304     akk 
2305 No match
2307 /^\d{8,}\@.+[^k]$/
2308     12345678\@a.b.c.d
2309  0: 12345678@a.b.c.d
2310     123456789\@x.y.z
2311  0: 123456789@x.y.z
2312     *** Failers
2313 No match
2314     12345678\@x.y.uk
2315 No match
2316     1234567\@a.b.c.d       
2317 No match
2319 /(a)\1{8,}/
2320     aaaaaaaaa
2321  0: aaaaaaaaa
2322  1: a
2323     aaaaaaaaaa
2324  0: aaaaaaaaaa
2325  1: a
2326     *** Failers
2327 No match
2328     aaaaaaa   
2329 No match
2331 /[^a]/
2332     aaaabcd
2333  0: b
2334     aaAabcd 
2335  0: A
2337 /[^a]/i
2338     aaaabcd
2339  0: b
2340     aaAabcd 
2341  0: b
2343 /[^az]/
2344     aaaabcd
2345  0: b
2346     aaAabcd 
2347  0: A
2349 /[^az]/i
2350     aaaabcd
2351  0: b
2352     aaAabcd 
2353  0: b
2355 /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
2356  \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
2357  0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
2359 /P[^*]TAIRE[^*]{1,6}?LL/
2360     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2361  0: PSTAIREISLL
2363 /P[^*]TAIRE[^*]{1,}?LL/
2364     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2365  0: PSTAIREISLL
2367 /(\.\d\d[1-9]?)\d+/
2368     1.230003938
2369  0: .230003938
2370  1: .23
2371     1.875000282   
2372  0: .875000282
2373  1: .875
2374     1.235  
2375  0: .235
2376  1: .23
2377                   
2378 /(\.\d\d((?=0)|\d(?=\d)))/
2379     1.230003938      
2380  0: .23
2381  1: .23
2382  2: 
2383     1.875000282
2384  0: .875
2385  1: .875
2386  2: 5
2387     *** Failers 
2388 No match
2389     1.235 
2390 No match
2391     
2392 /a(?)b/
2393     ab 
2394  0: ab
2396 /\b(foo)\s+(\w+)/i
2397     Food is on the foo table
2398  0: foo table
2399  1: foo
2400  2: table
2401     
2402 /foo(.*)bar/
2403     The food is under the bar in the barn.
2404  0: food is under the bar in the bar
2405  1: d is under the bar in the 
2406     
2407 /foo(.*?)bar/  
2408     The food is under the bar in the barn.
2409  0: food is under the bar
2410  1: d is under the 
2412 /(.*)(\d*)/
2413     I have 2 numbers: 53147
2414  0: I have 2 numbers: 53147
2415  1: I have 2 numbers: 53147
2416  2: 
2417     
2418 /(.*)(\d+)/
2419     I have 2 numbers: 53147
2420  0: I have 2 numbers: 53147
2421  1: I have 2 numbers: 5314
2422  2: 7
2424 /(.*?)(\d*)/
2425     I have 2 numbers: 53147
2426  0: 
2427  1: 
2428  2: 
2430 /(.*?)(\d+)/
2431     I have 2 numbers: 53147
2432  0: I have 2
2433  1: I have 
2434  2: 2
2436 /(.*)(\d+)$/
2437     I have 2 numbers: 53147
2438  0: I have 2 numbers: 53147
2439  1: I have 2 numbers: 5314
2440  2: 7
2442 /(.*?)(\d+)$/
2443     I have 2 numbers: 53147
2444  0: I have 2 numbers: 53147
2445  1: I have 2 numbers: 
2446  2: 53147
2448 /(.*)\b(\d+)$/
2449     I have 2 numbers: 53147
2450  0: I have 2 numbers: 53147
2451  1: I have 2 numbers: 
2452  2: 53147
2454 /(.*\D)(\d+)$/
2455     I have 2 numbers: 53147
2456  0: I have 2 numbers: 53147
2457  1: I have 2 numbers: 
2458  2: 53147
2460 /^\D*(?!123)/
2461     ABC123
2462  0: AB
2463      
2464 /^(\D*)(?=\d)(?!123)/
2465     ABC445
2466  0: ABC
2467  1: ABC
2468     *** Failers
2469 No match
2470     ABC123
2471 No match
2472     
2473 /^[W-]46]/
2474     W46]789 
2475  0: W46]
2476     -46]789
2477  0: -46]
2478     *** Failers
2479 No match
2480     Wall
2481 No match
2482     Zebra
2483 No match
2484     42
2485 No match
2486     [abcd] 
2487 No match
2488     ]abcd[
2489 No match
2490        
2491 /^[W-\]46]/
2492     W46]789 
2493  0: W
2494     Wall
2495  0: W
2496     Zebra
2497  0: Z
2498     Xylophone  
2499  0: X
2500     42
2501  0: 4
2502     [abcd] 
2503  0: [
2504     ]abcd[
2505  0: ]
2506     \\backslash 
2507  0: \
2508     *** Failers
2509 No match
2510     -46]789
2511 No match
2512     well
2513 No match
2514     
2515 /\d\d\/\d\d\/\d\d\d\d/
2516     01/01/2000
2517  0: 01/01/2000
2519 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2520   word cat dog elephant mussel cow horse canary baboon snake shark otherword
2521  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2522   word cat dog elephant mussel cow horse canary baboon snake shark
2523 No match
2525 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2526   word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
2527 No match
2529 /^(a){0,0}/
2530     bcd
2531  0: 
2532     abc
2533  0: 
2534     aab     
2535  0: 
2537 /^(a){0,1}/
2538     bcd
2539  0: 
2540     abc
2541  0: a
2542  1: a
2543     aab  
2544  0: a
2545  1: a
2547 /^(a){0,2}/
2548     bcd
2549  0: 
2550     abc
2551  0: a
2552  1: a
2553     aab  
2554  0: aa
2555  1: a
2557 /^(a){0,3}/
2558     bcd
2559  0: 
2560     abc
2561  0: a
2562  1: a
2563     aab
2564  0: aa
2565  1: a
2566     aaa   
2567  0: aaa
2568  1: a
2570 /^(a){0,}/
2571     bcd
2572  0: 
2573     abc
2574  0: a
2575  1: a
2576     aab
2577  0: aa
2578  1: a
2579     aaa
2580  0: aaa
2581  1: a
2582     aaaaaaaa    
2583  0: aaaaaaaa
2584  1: a
2586 /^(a){1,1}/
2587     bcd
2588 No match
2589     abc
2590  0: a
2591  1: a
2592     aab  
2593  0: a
2594  1: a
2596 /^(a){1,2}/
2597     bcd
2598 No match
2599     abc
2600  0: a
2601  1: a
2602     aab  
2603  0: aa
2604  1: a
2606 /^(a){1,3}/
2607     bcd
2608 No match
2609     abc
2610  0: a
2611  1: a
2612     aab
2613  0: aa
2614  1: a
2615     aaa   
2616  0: aaa
2617  1: a
2619 /^(a){1,}/
2620     bcd
2621 No match
2622     abc
2623  0: a
2624  1: a
2625     aab
2626  0: aa
2627  1: a
2628     aaa
2629  0: aaa
2630  1: a
2631     aaaaaaaa    
2632  0: aaaaaaaa
2633  1: a
2635 /.*\.gif/
2636     borfle\nbib.gif\nno
2637  0: bib.gif
2639 /.{0,}\.gif/
2640     borfle\nbib.gif\nno
2641  0: bib.gif
2643 /.*\.gif/m
2644     borfle\nbib.gif\nno
2645  0: bib.gif
2647 /.*\.gif/s
2648     borfle\nbib.gif\nno
2649  0: borfle\x0abib.gif
2651 /.*\.gif/ms
2652     borfle\nbib.gif\nno
2653  0: borfle\x0abib.gif
2654     
2655 /.*$/
2656     borfle\nbib.gif\nno
2657  0: no
2659 /.*$/m
2660     borfle\nbib.gif\nno
2661  0: borfle
2663 /.*$/s
2664     borfle\nbib.gif\nno
2665  0: borfle\x0abib.gif\x0ano
2667 /.*$/ms
2668     borfle\nbib.gif\nno
2669  0: borfle\x0abib.gif\x0ano
2670     
2671 /.*$/
2672     borfle\nbib.gif\nno\n
2673  0: no
2675 /.*$/m
2676     borfle\nbib.gif\nno\n
2677  0: borfle
2679 /.*$/s
2680     borfle\nbib.gif\nno\n
2681  0: borfle\x0abib.gif\x0ano\x0a
2683 /.*$/ms
2684     borfle\nbib.gif\nno\n
2685  0: borfle\x0abib.gif\x0ano\x0a
2686     
2687 /(.*X|^B)/
2688     abcde\n1234Xyz
2689  0: 1234X
2690  1: 1234X
2691     BarFoo 
2692  0: B
2693  1: B
2694     *** Failers
2695 No match
2696     abcde\nBar  
2697 No match
2699 /(.*X|^B)/m
2700     abcde\n1234Xyz
2701  0: 1234X
2702  1: 1234X
2703     BarFoo 
2704  0: B
2705  1: B
2706     abcde\nBar  
2707  0: B
2708  1: B
2710 /(.*X|^B)/s
2711     abcde\n1234Xyz
2712  0: abcde\x0a1234X
2713  1: abcde\x0a1234X
2714     BarFoo 
2715  0: B
2716  1: B
2717     *** Failers
2718 No match
2719     abcde\nBar  
2720 No match
2722 /(.*X|^B)/ms
2723     abcde\n1234Xyz
2724  0: abcde\x0a1234X
2725  1: abcde\x0a1234X
2726     BarFoo 
2727  0: B
2728  1: B
2729     abcde\nBar  
2730  0: B
2731  1: B
2733 /(?s)(.*X|^B)/
2734     abcde\n1234Xyz
2735  0: abcde\x0a1234X
2736  1: abcde\x0a1234X
2737     BarFoo 
2738  0: B
2739  1: B
2740     *** Failers 
2741 No match
2742     abcde\nBar  
2743 No match
2745 /(?s:.*X|^B)/
2746     abcde\n1234Xyz
2747  0: abcde\x0a1234X
2748     BarFoo 
2749  0: B
2750     *** Failers 
2751 No match
2752     abcde\nBar  
2753 No match
2755 /^.*B/
2756     **** Failers
2757 No match
2758     abc\nB
2759 No match
2760      
2761 /(?s)^.*B/
2762     abc\nB
2763  0: abc\x0aB
2765 /(?m)^.*B/
2766     abc\nB
2767  0: B
2768      
2769 /(?ms)^.*B/
2770     abc\nB
2771  0: abc\x0aB
2773 /(?ms)^B/
2774     abc\nB
2775  0: B
2777 /(?s)B$/
2778     B\n
2779  0: B
2781 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2782     123456654321
2783  0: 123456654321
2784   
2785 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2786     123456654321 
2787  0: 123456654321
2789 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2790     123456654321
2791  0: 123456654321
2792   
2793 /^[abc]{12}/
2794     abcabcabcabc
2795  0: abcabcabcabc
2796     
2797 /^[a-c]{12}/
2798     abcabcabcabc
2799  0: abcabcabcabc
2800     
2801 /^(a|b|c){12}/
2802     abcabcabcabc 
2803  0: abcabcabcabc
2804  1: c
2806 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2807     n
2808  0: n
2809     *** Failers 
2810 No match
2811     z 
2812 No match
2814 /abcde{0,0}/
2815     abcd
2816  0: abcd
2817     *** Failers
2818 No match
2819     abce  
2820 No match
2822 /ab[cd]{0,0}e/
2823     abe
2824  0: abe
2825     *** Failers
2826 No match
2827     abcde 
2828 No match
2829     
2830 /ab(c){0,0}d/
2831     abd
2832  0: abd
2833     *** Failers
2834 No match
2835     abcd   
2836 No match
2838 /a(b*)/
2839     a
2840  0: a
2841  1: 
2842     ab
2843  0: ab
2844  1: b
2845     abbbb
2846  0: abbbb
2847  1: bbbb
2848     *** Failers
2849  0: a
2850  1: 
2851     bbbbb    
2852 No match
2853     
2854 /ab\d{0}e/
2855     abe
2856  0: abe
2857     *** Failers
2858 No match
2859     ab1e   
2860 No match
2861     
2862 /"([^\\"]+|\\.)*"/
2863     the \"quick\" brown fox
2864  0: "quick"
2865  1: quick
2866     \"the \\\"quick\\\" brown fox\" 
2867  0: "the \"quick\" brown fox"
2868  1:  brown fox
2870 /.*?/g+
2871     abc
2872  0: 
2873  0+ abc
2874  0: a
2875  0+ bc
2876  0: 
2877  0+ bc
2878  0: b
2879  0+ c
2880  0: 
2881  0+ c
2882  0: c
2883  0+ 
2884  0: 
2885  0+ 
2886   
2887 /\b/g+
2888     abc 
2889  0: 
2890  0+ abc
2891  0: 
2892  0+ 
2894 /\b/+g
2895     abc 
2896  0: 
2897  0+ abc
2898  0: 
2899  0+ 
2902     abc
2903  0: 
2904  0: 
2905  0: 
2906  0: 
2908 /<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>/is
2909   <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2910  0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2911  1:  BGCOLOR='#DBE9E9'
2912  2:  align=left valign=top
2913  3: 43.
2914  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2915  5: 
2916  6: 
2917  7: <unset>
2918  8:  align=left valign=top
2919  9: Lega lstaff.com
2920 10:  align=left valign=top
2921 11: CA - Statewide
2923 /a[^a]b/
2924     acb
2925  0: acb
2926     a\nb
2927  0: a\x0ab
2928     
2929 /a.b/
2930     acb
2931  0: acb
2932     *** Failers 
2933 No match
2934     a\nb   
2935 No match
2936     
2937 /a[^a]b/s
2938     acb
2939  0: acb
2940     a\nb  
2941  0: a\x0ab
2942     
2943 /a.b/s
2944     acb
2945  0: acb
2946     a\nb  
2947  0: a\x0ab
2949 /^(b+?|a){1,2}?c/
2950     bac
2951  0: bac
2952  1: a
2953     bbac
2954  0: bbac
2955  1: a
2956     bbbac
2957  0: bbbac
2958  1: a
2959     bbbbac
2960  0: bbbbac
2961  1: a
2962     bbbbbac 
2963  0: bbbbbac
2964  1: a
2966 /^(b+|a){1,2}?c/
2967     bac
2968  0: bac
2969  1: a
2970     bbac
2971  0: bbac
2972  1: a
2973     bbbac
2974  0: bbbac
2975  1: a
2976     bbbbac
2977  0: bbbbac
2978  1: a
2979     bbbbbac 
2980  0: bbbbbac
2981  1: a
2982     
2983 /(?!\A)x/m
2984     x\nb\n
2985 No match
2986     a\bx\n  
2987  0: x
2988     
2989 /\x0{ab}/
2990     \0{ab} 
2991  0: \x00{ab}
2993 /(A|B)*?CD/
2994     CD 
2995  0: CD
2996     
2997 /(A|B)*CD/
2998     CD 
2999  0: CD
3001 /(AB)*?\1/
3002     ABABAB
3003  0: ABAB
3004  1: AB
3006 /(AB)*\1/
3007     ABABAB
3008  0: ABABAB
3009  1: AB
3010     
3011 /(?<!bar)foo/
3012     foo
3013  0: foo
3014     catfood
3015  0: foo
3016     arfootle
3017  0: foo
3018     rfoosh
3019  0: foo
3020     *** Failers
3021 No match
3022     barfoo
3023 No match
3024     towbarfoo
3025 No match
3027 /\w{3}(?<!bar)foo/
3028     catfood
3029  0: catfoo
3030     *** Failers
3031 No match
3032     foo
3033 No match
3034     barfoo
3035 No match
3036     towbarfoo
3037 No match
3039 /(?<=(foo)a)bar/
3040     fooabar
3041  0: bar
3042  1: foo
3043     *** Failers
3044 No match
3045     bar
3046 No match
3047     foobbar
3048 No match
3049       
3050 /\Aabc\z/m
3051     abc
3052  0: abc
3053     *** Failers
3054 No match
3055     abc\n   
3056 No match
3057     qqq\nabc
3058 No match
3059     abc\nzzz
3060 No match
3061     qqq\nabc\nzzz
3062 No match
3064 "(?>.*/)foo"
3065     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
3066 No match
3068 "(?>.*/)foo"
3069     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3070  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3072 /(?>(\.\d\d[1-9]?))\d+/
3073     1.230003938
3074  0: .230003938
3075  1: .23
3076     1.875000282
3077  0: .875000282
3078  1: .875
3079     *** Failers 
3080 No match
3081     1.235 
3082 No match
3084 /^((?>\w+)|(?>\s+))*$/
3085     now is the time for all good men to come to the aid of the party
3086  0: now is the time for all good men to come to the aid of the party
3087  1: party
3088     *** Failers
3089 No match
3090     this is not a line with only words and spaces!
3091 No match
3092     
3093 /(\d+)(\w)/
3094     12345a
3095  0: 12345a
3096  1: 12345
3097  2: a
3098     12345+ 
3099  0: 12345
3100  1: 1234
3101  2: 5
3103 /((?>\d+))(\w)/
3104     12345a
3105  0: 12345a
3106  1: 12345
3107  2: a
3108     *** Failers
3109 No match
3110     12345+ 
3111 No match
3113 /(?>a+)b/
3114     aaab
3115  0: aaab
3117 /((?>a+)b)/
3118     aaab
3119  0: aaab
3120  1: aaab
3122 /(?>(a+))b/
3123     aaab
3124  0: aaab
3125  1: aaa
3127 /(?>b)+/
3128     aaabbbccc
3129  0: bbb
3131 /(?>a+|b+|c+)*c/
3132     aaabbbbccccd
3133  0: aaabbbbc
3135 /((?>[^()]+)|\([^()]*\))+/
3136     ((abc(ade)ufh()()x
3137  0: abc(ade)ufh()()x
3138  1: x
3139     
3140 /\(((?>[^()]+)|\([^()]+\))+\)/ 
3141     (abc)
3142  0: (abc)
3143  1: abc
3144     (abc(def)xyz)
3145  0: (abc(def)xyz)
3146  1: xyz
3147     *** Failers
3148 No match
3149     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
3150 No match
3152 /a(?-i)b/i
3153     ab
3154  0: ab
3155     Ab
3156  0: Ab
3157     *** Failers 
3158 No match
3159     aB
3160 No match
3161     AB
3162 No match
3163         
3164 /(a (?x)b c)d e/
3165     a bcd e
3166  0: a bcd e
3167  1: a bc
3168     *** Failers
3169 No match
3170     a b cd e
3171 No match
3172     abcd e   
3173 No match
3174     a bcde 
3175 No match
3177 /(a b(?x)c d (?-x)e f)/
3178     a bcde f
3179  0: a bcde f
3180  1: a bcde f
3181     *** Failers
3182 No match
3183     abcdef  
3184 No match
3186 /(a(?i)b)c/
3187     abc
3188  0: abc
3189  1: ab
3190     aBc
3191  0: aBc
3192  1: aB
3193     *** Failers
3194 No match
3195     abC
3196 No match
3197     aBC  
3198 No match
3199     Abc
3200 No match
3201     ABc
3202 No match
3203     ABC
3204 No match
3205     AbC
3206 No match
3207     
3208 /a(?i:b)c/
3209     abc
3210  0: abc
3211     aBc
3212  0: aBc
3213     *** Failers 
3214 No match
3215     ABC
3216 No match
3217     abC
3218 No match
3219     aBC
3220 No match
3221     
3222 /a(?i:b)*c/
3223     aBc
3224  0: aBc
3225     aBBc
3226  0: aBBc
3227     *** Failers 
3228 No match
3229     aBC
3230 No match
3231     aBBC
3232 No match
3233     
3234 /a(?=b(?i)c)\w\wd/
3235     abcd
3236  0: abcd
3237     abCd
3238  0: abCd
3239     *** Failers
3240 No match
3241     aBCd
3242 No match
3243     abcD     
3244 No match
3245     
3246 /(?s-i:more.*than).*million/i
3247     more than million
3248  0: more than million
3249     more than MILLION
3250  0: more than MILLION
3251     more \n than Million 
3252  0: more \x0a than Million
3253     *** Failers
3254 No match
3255     MORE THAN MILLION    
3256 No match
3257     more \n than \n million 
3258 No match
3260 /(?:(?s-i)more.*than).*million/i
3261     more than million
3262  0: more than million
3263     more than MILLION
3264  0: more than MILLION
3265     more \n than Million 
3266  0: more \x0a than Million
3267     *** Failers
3268 No match
3269     MORE THAN MILLION    
3270 No match
3271     more \n than \n million 
3272 No match
3273     
3274 /(?>a(?i)b+)+c/ 
3275     abc
3276  0: abc
3277     aBbc
3278  0: aBbc
3279     aBBc 
3280  0: aBBc
3281     *** Failers
3282 No match
3283     Abc
3284 No match
3285     abAb    
3286 No match
3287     abbC 
3288 No match
3289     
3290 /(?=a(?i)b)\w\wc/
3291     abc
3292  0: abc
3293     aBc
3294  0: aBc
3295     *** Failers
3296 No match
3297     Ab 
3298 No match
3299     abC
3300 No match
3301     aBC     
3302 No match
3303     
3304 /(?<=a(?i)b)(\w\w)c/
3305     abxxc
3306  0: xxc
3307  1: xx
3308     aBxxc
3309  0: xxc
3310  1: xx
3311     *** Failers
3312 No match
3313     Abxxc
3314 No match
3315     ABxxc
3316 No match
3317     abxxC      
3318 No match
3320 /(?:(a)|b)(?(1)A|B)/
3321     aA
3322  0: aA
3323  1: a
3324     bB
3325  0: bB
3326     *** Failers
3327 No match
3328     aB
3329 No match
3330     bA    
3331 No match
3333 /^(a)?(?(1)a|b)+$/
3334     aa
3335  0: aa
3336  1: a
3337     b
3338  0: b
3339     bb  
3340  0: bb
3341     *** Failers
3342 No match
3343     ab   
3344 No match
3346 /^(?(?=abc)\w{3}:|\d\d)$/
3347     abc:
3348  0: abc:
3349     12
3350  0: 12
3351     *** Failers
3352 No match
3353     123
3354 No match
3355     xyz    
3356 No match
3358 /^(?(?!abc)\d\d|\w{3}:)$/
3359     abc:
3360  0: abc:
3361     12
3362  0: 12
3363     *** Failers
3364 No match
3365     123
3366 No match
3367     xyz    
3368 No match
3369     
3370 /(?(?<=foo)bar|cat)/
3371     foobar
3372  0: bar
3373     cat
3374  0: cat
3375     fcat
3376  0: cat
3377     focat   
3378  0: cat
3379     *** Failers
3380 No match
3381     foocat  
3382 No match
3384 /(?(?<!foo)cat|bar)/
3385     foobar
3386  0: bar
3387     cat
3388  0: cat
3389     fcat
3390  0: cat
3391     focat   
3392  0: cat
3393     *** Failers
3394 No match
3395     foocat  
3396 No match
3398 /( \( )? [^()]+ (?(1) \) |) /x
3399     abcd
3400  0: abcd
3401     (abcd)
3402  0: (abcd)
3403  1: (
3404     the quick (abcd) fox
3405  0: the quick 
3406     (abcd   
3407  0: abcd
3409 /( \( )? [^()]+ (?(1) \) ) /x
3410     abcd
3411  0: abcd
3412     (abcd)
3413  0: (abcd)
3414  1: (
3415     the quick (abcd) fox
3416  0: the quick 
3417     (abcd   
3418  0: abcd
3420 /^(?(2)a|(1)(2))+$/
3421     12
3422  0: 12
3423  1: 1
3424  2: 2
3425     12a
3426  0: 12a
3427  1: 1
3428  2: 2
3429     12aa
3430  0: 12aa
3431  1: 1
3432  2: 2
3433     *** Failers
3434 No match
3435     1234    
3436 No match
3438 /((?i)blah)\s+\1/
3439     blah blah
3440  0: blah blah
3441  1: blah
3442     BLAH BLAH
3443  0: BLAH BLAH
3444  1: BLAH
3445     Blah Blah
3446  0: Blah Blah
3447  1: Blah
3448     blaH blaH
3449  0: blaH blaH
3450  1: blaH
3451     *** Failers
3452 No match
3453     blah BLAH
3454 No match
3455     Blah blah      
3456 No match
3457     blaH blah 
3458 No match
3460 /((?i)blah)\s+(?i:\1)/
3461     blah blah
3462  0: blah blah
3463  1: blah
3464     BLAH BLAH
3465  0: BLAH BLAH
3466  1: BLAH
3467     Blah Blah
3468  0: Blah Blah
3469  1: Blah
3470     blaH blaH
3471  0: blaH blaH
3472  1: blaH
3473     blah BLAH
3474  0: blah BLAH
3475  1: blah
3476     Blah blah      
3477  0: Blah blah
3478  1: Blah
3479     blaH blah 
3480  0: blaH blah
3481  1: blaH
3483 /(?>a*)*/
3484     a
3485  0: a
3486     aa
3487  0: aa
3488     aaaa
3489  0: aaaa
3490     
3491 /(abc|)+/
3492     abc
3493  0: abc
3494  1: 
3495     abcabc
3496  0: abcabc
3497  1: 
3498     abcabcabc
3499  0: abcabcabc
3500  1: 
3501     xyz      
3502  0: 
3503  1: 
3505 /([a]*)*/
3506     a
3507  0: a
3508  1: 
3509     aaaaa 
3510  0: aaaaa
3511  1: 
3513 /([ab]*)*/
3514     a
3515  0: a
3516  1: 
3517     b
3518  0: b
3519  1: 
3520     ababab
3521  0: ababab
3522  1: 
3523     aaaabcde
3524  0: aaaab
3525  1: 
3526     bbbb    
3527  0: bbbb
3528  1: 
3530 /([^a]*)*/
3531     b
3532  0: b
3533  1: 
3534     bbbb
3535  0: bbbb
3536  1: 
3537     aaa   
3538  0: 
3539  1: 
3541 /([^ab]*)*/
3542     cccc
3543  0: cccc
3544  1: 
3545     abab  
3546  0: 
3547  1: 
3549 /([a]*?)*/
3550     a
3551  0: 
3552  1: 
3553     aaaa 
3554  0: 
3555  1: 
3557 /([ab]*?)*/
3558     a
3559  0: 
3560  1: 
3561     b
3562  0: 
3563  1: 
3564     abab
3565  0: 
3566  1: 
3567     baba   
3568  0: 
3569  1: 
3571 /([^a]*?)*/
3572     b
3573  0: 
3574  1: 
3575     bbbb
3576  0: 
3577  1: 
3578     aaa   
3579  0: 
3580  1: 
3582 /([^ab]*?)*/
3583     c
3584  0: 
3585  1: 
3586     cccc
3587  0: 
3588  1: 
3589     baba   
3590  0: 
3591  1: 
3593 /(?>a*)*/
3594     a
3595  0: a
3596     aaabcde 
3597  0: aaa
3599 /((?>a*))*/
3600     aaaaa
3601  0: aaaaa
3602  1: 
3603     aabbaa 
3604  0: aa
3605  1: 
3607 /((?>a*?))*/
3608     aaaaa
3609  0: 
3610  1: 
3611     aabbaa 
3612  0: 
3613  1: 
3615 /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
3616     12-sep-98
3617  0: 12-sep-98
3618     12-09-98
3619  0: 12-09-98
3620     *** Failers
3621 No match
3622     sep-12-98
3623 No match
3624         
3625 /(?<=(foo))bar\1/
3626     foobarfoo
3627  0: barfoo
3628  1: foo
3629     foobarfootling 
3630  0: barfoo
3631  1: foo
3632     *** Failers
3633 No match
3634     foobar
3635 No match
3636     barfoo   
3637 No match
3639 /(?i:saturday|sunday)/
3640     saturday
3641  0: saturday
3642     sunday
3643  0: sunday
3644     Saturday
3645  0: Saturday
3646     Sunday
3647  0: Sunday
3648     SATURDAY
3649  0: SATURDAY
3650     SUNDAY
3651  0: SUNDAY
3652     SunDay
3653  0: SunDay
3654     
3655 /(a(?i)bc|BB)x/
3656     abcx
3657  0: abcx
3658  1: abc
3659     aBCx
3660  0: aBCx
3661  1: aBC
3662     bbx
3663  0: bbx
3664  1: bb
3665     BBx
3666  0: BBx
3667  1: BB
3668     *** Failers
3669 No match
3670     abcX
3671 No match
3672     aBCX
3673 No match
3674     bbX
3675 No match
3676     BBX               
3677 No match
3679 /^([ab](?i)[cd]|[ef])/
3680     ac
3681  0: ac
3682  1: ac
3683     aC
3684  0: aC
3685  1: aC
3686     bD
3687  0: bD
3688  1: bD
3689     elephant
3690  0: e
3691  1: e
3692     Europe 
3693  0: E
3694  1: E
3695     frog
3696  0: f
3697  1: f
3698     France
3699  0: F
3700  1: F
3701     *** Failers
3702 No match
3703     Africa     
3704 No match
3706 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
3707     ab
3708  0: ab
3709  1: ab
3710     aBd
3711  0: aBd
3712  1: aBd
3713     xy
3714  0: xy
3715  1: xy
3716     xY
3717  0: xY
3718  1: xY
3719     zebra
3720  0: z
3721  1: z
3722     Zambesi
3723  0: Z
3724  1: Z
3725     *** Failers
3726 No match
3727     aCD  
3728 No match
3729     XY  
3730 No match
3732 /(?<=foo\n)^bar/m
3733     foo\nbar
3734  0: bar
3735     *** Failers
3736 No match
3737     bar
3738 No match
3739     baz\nbar   
3740 No match
3742 /(?<=(?<!foo)bar)baz/
3743     barbaz
3744  0: baz
3745     barbarbaz 
3746  0: baz
3747     koobarbaz 
3748  0: baz
3749     *** Failers
3750 No match
3751     baz
3752 No match
3753     foobarbaz 
3754 No match
3756 /The cases of aaaa and aaaaaa are missed out below because Perl does things/
3757 /differently. We know that odd, and maybe incorrect, things happen with/
3758 No match
3759 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
3760 No match
3762 /^(a\1?){4}$/
3763     a
3764 No match
3765     aa
3766 No match
3767     aaa
3768 No match
3769     aaaaa
3770  0: aaaaa
3771  1: a
3772     aaaaaaa
3773  0: aaaaaaa
3774  1: a
3775     aaaaaaaa
3776 No match
3777     aaaaaaaaa
3778 No match
3779     aaaaaaaaaa
3780  0: aaaaaaaaaa
3781  1: aaaa
3782     aaaaaaaaaaa
3783 No match
3784     aaaaaaaaaaaa
3785 No match
3786     aaaaaaaaaaaaa
3787 No match
3788     aaaaaaaaaaaaaa
3789 No match
3790     aaaaaaaaaaaaaaa
3791 No match
3792     aaaaaaaaaaaaaaaa               
3793 No match
3795 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
3796     a
3797 No match
3798     aa
3799 No match
3800     aaa
3801 No match
3802     aaaa
3803  0: aaaa
3804  1: a
3805  2: a
3806  3: a
3807  4: a
3808     aaaaa
3809  0: aaaaa
3810  1: a
3811  2: aa
3812  3: a
3813  4: a
3814     aaaaaa
3815  0: aaaaaa
3816  1: a
3817  2: aa
3818  3: a
3819  4: aa
3820     aaaaaaa
3821  0: aaaaaaa
3822  1: a
3823  2: aa
3824  3: aaa
3825  4: a
3826     aaaaaaaa
3827 No match
3828     aaaaaaaaa
3829 No match
3830     aaaaaaaaaa
3831  0: aaaaaaaaaa
3832  1: a
3833  2: aa
3834  3: aaa
3835  4: aaaa
3836     aaaaaaaaaaa
3837 No match
3838     aaaaaaaaaaaa
3839 No match
3840     aaaaaaaaaaaaa
3841 No match
3842     aaaaaaaaaaaaaa
3843 No match
3844     aaaaaaaaaaaaaaa
3845 No match
3846     aaaaaaaaaaaaaaaa               
3847 No match
3849 /The following tests are taken from the Perl 5.005 test suite; some of them/
3850 /are compatible with 5.004, but I'd rather not have to sort them out./
3851 No match
3853 /abc/
3854     abc
3855  0: abc
3856     xabcy
3857  0: abc
3858     ababc
3859  0: abc
3860     *** Failers
3861 No match
3862     xbc
3863 No match
3864     axc
3865 No match
3866     abx
3867 No match
3869 /ab*c/
3870     abc
3871  0: abc
3873 /ab*bc/
3874     abc
3875  0: abc
3876     abbc
3877  0: abbc
3878     abbbbc
3879  0: abbbbc
3881 /.{1}/
3882     abbbbc
3883  0: a
3885 /.{3,4}/
3886     abbbbc
3887  0: abbb
3889 /ab{0,}bc/
3890     abbbbc
3891  0: abbbbc
3893 /ab+bc/
3894     abbc
3895  0: abbc
3896     *** Failers
3897 No match
3898     abc
3899 No match
3900     abq
3901 No match
3903 /ab{1,}bc/
3905 /ab+bc/
3906     abbbbc
3907  0: abbbbc
3909 /ab{1,}bc/
3910     abbbbc
3911  0: abbbbc
3913 /ab{1,3}bc/
3914     abbbbc
3915  0: abbbbc
3917 /ab{3,4}bc/
3918     abbbbc
3919  0: abbbbc
3921 /ab{4,5}bc/
3922     *** Failers
3923 No match
3924     abq
3925 No match
3926     abbbbc
3927 No match
3929 /ab?bc/
3930     abbc
3931  0: abbc
3932     abc
3933  0: abc
3935 /ab{0,1}bc/
3936     abc
3937  0: abc
3939 /ab?bc/
3941 /ab?c/
3942     abc
3943  0: abc
3945 /ab{0,1}c/
3946     abc
3947  0: abc
3949 /^abc$/
3950     abc
3951  0: abc
3952     *** Failers
3953 No match
3954     abbbbc
3955 No match
3956     abcc
3957 No match
3959 /^abc/
3960     abcc
3961  0: abc
3963 /^abc$/
3965 /abc$/
3966     aabc
3967  0: abc
3968     *** Failers
3969 No match
3970     aabc
3971  0: abc
3972     aabcd
3973 No match
3976     abc
3977  0: 
3980     abc
3981  0: 
3983 /a.c/
3984     abc
3985  0: abc
3986     axc
3987  0: axc
3989 /a.*c/
3990     axyzc
3991  0: axyzc
3993 /a[bc]d/
3994     abd
3995  0: abd
3996     *** Failers
3997 No match
3998     axyzd
3999 No match
4000     abc
4001 No match
4003 /a[b-d]e/
4004     ace
4005  0: ace
4007 /a[b-d]/
4008     aac
4009  0: ac
4011 /a[-b]/
4012     a-
4013  0: a-
4015 /a[b-]/
4016     a-
4017  0: a-
4019 /a]/
4020     a]
4021  0: a]
4023 /a[]]b/
4024     a]b
4025  0: a]b
4027 /a[^bc]d/
4028     aed
4029  0: aed
4030     *** Failers
4031 No match
4032     abd
4033 No match
4034     abd
4035 No match
4037 /a[^-b]c/
4038     adc
4039  0: adc
4041 /a[^]b]c/
4042     adc
4043  0: adc
4044     *** Failers
4045 No match
4046     a-c
4047  0: a-c
4048     a]c
4049 No match
4051 /\ba\b/
4052     a-
4053  0: a
4054     -a
4055  0: a
4056     -a-
4057  0: a
4059 /\by\b/
4060     *** Failers
4061 No match
4062     xy
4063 No match
4064     yz
4065 No match
4066     xyz
4067 No match
4069 /\Ba\B/
4070     *** Failers
4071  0: a
4072     a-
4073 No match
4074     -a
4075 No match
4076     -a-
4077 No match
4079 /\By\b/
4080     xy
4081  0: y
4083 /\by\B/
4084     yz
4085  0: y
4087 /\By\B/
4088     xyz
4089  0: y
4091 /\w/
4092     a
4093  0: a
4095 /\W/
4096     -
4097  0: -
4098     *** Failers
4099  0: *
4100     -
4101  0: -
4102     a
4103 No match
4105 /a\sb/
4106     a b
4107  0: a b
4109 /a\Sb/
4110     a-b
4111  0: a-b
4112     *** Failers
4113 No match
4114     a-b
4115  0: a-b
4116     a b
4117 No match
4119 /\d/
4120     1
4121  0: 1
4123 /\D/
4124     -
4125  0: -
4126     *** Failers
4127  0: *
4128     -
4129  0: -
4130     1
4131 No match
4133 /[\w]/
4134     a
4135  0: a
4137 /[\W]/
4138     -
4139  0: -
4140     *** Failers
4141  0: *
4142     -
4143  0: -
4144     a
4145 No match
4147 /a[\s]b/
4148     a b
4149  0: a b
4151 /a[\S]b/
4152     a-b
4153  0: a-b
4154     *** Failers
4155 No match
4156     a-b
4157  0: a-b
4158     a b
4159 No match
4161 /[\d]/
4162     1
4163  0: 1
4165 /[\D]/
4166     -
4167  0: -
4168     *** Failers
4169  0: *
4170     -
4171  0: -
4172     1
4173 No match
4175 /ab|cd/
4176     abc
4177  0: ab
4178     abcd
4179  0: ab
4181 /()ef/
4182     def
4183  0: ef
4184  1: 
4186 /$b/
4188 /a\(b/
4189     a(b
4190  0: a(b
4192 /a\(*b/
4193     ab
4194  0: ab
4195     a((b
4196  0: a((b
4198 /a\\b/
4199     a\b
4200 No match
4202 /((a))/
4203     abc
4204  0: a
4205  1: a
4206  2: a
4208 /(a)b(c)/
4209     abc
4210  0: abc
4211  1: a
4212  2: c
4214 /a+b+c/
4215     aabbabc
4216  0: abc
4218 /a{1,}b{1,}c/
4219     aabbabc
4220  0: abc
4222 /a.+?c/
4223     abcabc
4224  0: abc
4226 /(a+|b)*/
4227     ab
4228  0: ab
4229  1: b
4231 /(a+|b){0,}/
4232     ab
4233  0: ab
4234  1: b
4236 /(a+|b)+/
4237     ab
4238  0: ab
4239  1: b
4241 /(a+|b){1,}/
4242     ab
4243  0: ab
4244  1: b
4246 /(a+|b)?/
4247     ab
4248  0: a
4249  1: a
4251 /(a+|b){0,1}/
4252     ab
4253  0: a
4254  1: a
4256 /[^ab]*/
4257     cde
4258  0: cde
4260 /abc/
4261     *** Failers
4262 No match
4263     b
4264 No match
4265     
4267 /a*/
4268     
4270 /([abc])*d/
4271     abbbcd
4272  0: abbbcd
4273  1: c
4275 /([abc])*bcd/
4276     abcd
4277  0: abcd
4278  1: a
4280 /a|b|c|d|e/
4281     e
4282  0: e
4284 /(a|b|c|d|e)f/
4285     ef
4286  0: ef
4287  1: e
4289 /abcd*efg/
4290     abcdefg
4291  0: abcdefg
4293 /ab*/
4294     xabyabbbz
4295  0: ab
4296     xayabbbz
4297  0: a
4299 /(ab|cd)e/
4300     abcde
4301  0: cde
4302  1: cd
4304 /[abhgefdc]ij/
4305     hij
4306  0: hij
4308 /^(ab|cd)e/
4310 /(abc|)ef/
4311     abcdef
4312  0: ef
4313  1: 
4315 /(a|b)c*d/
4316     abcd
4317  0: bcd
4318  1: b
4320 /(ab|ab*)bc/
4321     abc
4322  0: abc
4323  1: a
4325 /a([bc]*)c*/
4326     abc
4327  0: abc
4328  1: bc
4330 /a([bc]*)(c*d)/
4331     abcd
4332  0: abcd
4333  1: bc
4334  2: d
4336 /a([bc]+)(c*d)/
4337     abcd
4338  0: abcd
4339  1: bc
4340  2: d
4342 /a([bc]*)(c+d)/
4343     abcd
4344  0: abcd
4345  1: b
4346  2: cd
4348 /a[bcd]*dcdcde/
4349     adcdcde
4350  0: adcdcde
4352 /a[bcd]+dcdcde/
4353     *** Failers
4354 No match
4355     abcde
4356 No match
4357     adcdcde
4358 No match
4360 /(ab|a)b*c/
4361     abc
4362  0: abc
4363  1: ab
4365 /((a)(b)c)(d)/
4366     abcd
4367  0: abcd
4368  1: abc
4369  2: a
4370  3: b
4371  4: d
4373 /[a-zA-Z_][a-zA-Z0-9_]*/
4374     alpha
4375  0: alpha
4377 /^a(bc+|b[eh])g|.h$/
4378     abh
4379  0: bh
4381 /(bc+d$|ef*g.|h?i(j|k))/
4382     effgz
4383  0: effgz
4384  1: effgz
4385     ij
4386  0: ij
4387  1: ij
4388  2: j
4389     reffgz
4390  0: effgz
4391  1: effgz
4392     *** Failers
4393 No match
4394     effg
4395 No match
4396     bcdd
4397 No match
4399 /((((((((((a))))))))))/
4400     a
4401  0: a
4402  1: a
4403  2: a
4404  3: a
4405  4: a
4406  5: a
4407  6: a
4408  7: a
4409  8: a
4410  9: a
4411 10: a
4413 /((((((((((a))))))))))\10/
4414     aa
4415  0: aa
4416  1: a
4417  2: a
4418  3: a
4419  4: a
4420  5: a
4421  6: a
4422  7: a
4423  8: a
4424  9: a
4425 10: a
4427 /(((((((((a)))))))))/
4428     a
4429  0: a
4430  1: a
4431  2: a
4432  3: a
4433  4: a
4434  5: a
4435  6: a
4436  7: a
4437  8: a
4438  9: a
4440 /multiple words of text/
4441     *** Failers
4442 No match
4443     aa
4444 No match
4445     uh-uh
4446 No match
4448 /multiple words/
4449     multiple words, yeah
4450  0: multiple words
4452 /(.*)c(.*)/
4453     abcde
4454  0: abcde
4455  1: ab
4456  2: de
4458 /\((.*), (.*)\)/
4459     (a, b)
4460  0: (a, b)
4461  1: a
4462  2: b
4464 /[k]/
4466 /abcd/
4467     abcd
4468  0: abcd
4470 /a(bc)d/
4471     abcd
4472  0: abcd
4473  1: bc
4475 /a[-]?c/
4476     ac
4477  0: ac
4479 /(abc)\1/
4480     abcabc
4481  0: abcabc
4482  1: abc
4484 /([a-c]*)\1/
4485     abcabc
4486  0: abcabc
4487  1: abc
4489 /(a)|\1/
4490     a
4491  0: a
4492  1: a
4493     *** Failers
4494  0: a
4495  1: a
4496     ab
4497  0: a
4498  1: a
4499     x
4500 No match
4502 /(([a-c])b*?\2)*/
4503     ababbbcbc
4504  0: ababb
4505  1: bb
4506  2: b
4508 /(([a-c])b*?\2){3}/
4509     ababbbcbc
4510  0: ababbbcbc
4511  1: cbc
4512  2: c
4514 /((\3|b)\2(a)x)+/
4515     aaaxabaxbaaxbbax
4516  0: bbax
4517  1: bbax
4518  2: b
4519  3: a
4521 /((\3|b)\2(a)){2,}/
4522     bbaababbabaaaaabbaaaabba
4523  0: bbaaaabba
4524  1: bba
4525  2: b
4526  3: a
4528 /abc/i
4529     ABC
4530  0: ABC
4531     XABCY
4532  0: ABC
4533     ABABC
4534  0: ABC
4535     *** Failers
4536 No match
4537     aaxabxbaxbbx
4538 No match
4539     XBC
4540 No match
4541     AXC
4542 No match
4543     ABX
4544 No match
4546 /ab*c/i
4547     ABC
4548  0: ABC
4550 /ab*bc/i
4551     ABC
4552  0: ABC
4553     ABBC
4554  0: ABBC
4556 /ab*?bc/i
4557     ABBBBC
4558  0: ABBBBC
4560 /ab{0,}?bc/i
4561     ABBBBC
4562  0: ABBBBC
4564 /ab+?bc/i
4565     ABBC
4566  0: ABBC
4568 /ab+bc/i
4569     *** Failers
4570 No match
4571     ABC
4572 No match
4573     ABQ
4574 No match
4576 /ab{1,}bc/i
4578 /ab+bc/i
4579     ABBBBC
4580  0: ABBBBC
4582 /ab{1,}?bc/i
4583     ABBBBC
4584  0: ABBBBC
4586 /ab{1,3}?bc/i
4587     ABBBBC
4588  0: ABBBBC
4590 /ab{3,4}?bc/i
4591     ABBBBC
4592  0: ABBBBC
4594 /ab{4,5}?bc/i
4595     *** Failers
4596 No match
4597     ABQ
4598 No match
4599     ABBBBC
4600 No match
4602 /ab??bc/i
4603     ABBC
4604  0: ABBC
4605     ABC
4606  0: ABC
4608 /ab{0,1}?bc/i
4609     ABC
4610  0: ABC
4612 /ab??bc/i
4614 /ab??c/i
4615     ABC
4616  0: ABC
4618 /ab{0,1}?c/i
4619     ABC
4620  0: ABC
4622 /^abc$/i
4623     ABC
4624  0: ABC
4625     *** Failers
4626 No match
4627     ABBBBC
4628 No match
4629     ABCC
4630 No match
4632 /^abc/i
4633     ABCC
4634  0: ABC
4636 /^abc$/i
4638 /abc$/i
4639     AABC
4640  0: ABC
4642 /^/i
4643     ABC
4644  0: 
4646 /$/i
4647     ABC
4648  0: 
4650 /a.c/i
4651     ABC
4652  0: ABC
4653     AXC
4654  0: AXC
4656 /a.*?c/i
4657     AXYZC
4658  0: AXYZC
4660 /a.*c/i
4661     *** Failers
4662 No match
4663     AABC
4664  0: AABC
4665     AXYZD
4666 No match
4668 /a[bc]d/i
4669     ABD
4670  0: ABD
4672 /a[b-d]e/i
4673     ACE
4674  0: ACE
4675     *** Failers
4676 No match
4677     ABC
4678 No match
4679     ABD
4680 No match
4682 /a[b-d]/i
4683     AAC
4684  0: AC
4686 /a[-b]/i
4687     A-
4688  0: A-
4690 /a[b-]/i
4691     A-
4692  0: A-
4694 /a]/i
4695     A]
4696  0: A]
4698 /a[]]b/i
4699     A]B
4700  0: A]B
4702 /a[^bc]d/i
4703     AED
4704  0: AED
4706 /a[^-b]c/i
4707     ADC
4708  0: ADC
4709     *** Failers
4710 No match
4711     ABD
4712 No match
4713     A-C
4714 No match
4716 /a[^]b]c/i
4717     ADC
4718  0: ADC
4720 /ab|cd/i
4721     ABC
4722  0: AB
4723     ABCD
4724  0: AB
4726 /()ef/i
4727     DEF
4728  0: EF
4729  1: 
4731 /$b/i
4732     *** Failers
4733 No match
4734     A]C
4735 No match
4736     B
4737 No match
4739 /a\(b/i
4740     A(B
4741  0: A(B
4743 /a\(*b/i
4744     AB
4745  0: AB
4746     A((B
4747  0: A((B
4749 /a\\b/i
4750     A\B
4751 No match
4753 /((a))/i
4754     ABC
4755  0: A
4756  1: A
4757  2: A
4759 /(a)b(c)/i
4760     ABC
4761  0: ABC
4762  1: A
4763  2: C
4765 /a+b+c/i
4766     AABBABC
4767  0: ABC
4769 /a{1,}b{1,}c/i
4770     AABBABC
4771  0: ABC
4773 /a.+?c/i
4774     ABCABC
4775  0: ABC
4777 /a.*?c/i
4778     ABCABC
4779  0: ABC
4781 /a.{0,5}?c/i
4782     ABCABC
4783  0: ABC
4785 /(a+|b)*/i
4786     AB
4787  0: AB
4788  1: B
4790 /(a+|b){0,}/i
4791     AB
4792  0: AB
4793  1: B
4795 /(a+|b)+/i
4796     AB
4797  0: AB
4798  1: B
4800 /(a+|b){1,}/i
4801     AB
4802  0: AB
4803  1: B
4805 /(a+|b)?/i
4806     AB
4807  0: A
4808  1: A
4810 /(a+|b){0,1}/i
4811     AB
4812  0: A
4813  1: A
4815 /(a+|b){0,1}?/i
4816     AB
4817  0: 
4819 /[^ab]*/i
4820     CDE
4821  0: CDE
4823 /abc/i
4825 /a*/i
4826     
4828 /([abc])*d/i
4829     ABBBCD
4830  0: ABBBCD
4831  1: C
4833 /([abc])*bcd/i
4834     ABCD
4835  0: ABCD
4836  1: A
4838 /a|b|c|d|e/i
4839     E
4840  0: E
4842 /(a|b|c|d|e)f/i
4843     EF
4844  0: EF
4845  1: E
4847 /abcd*efg/i
4848     ABCDEFG
4849  0: ABCDEFG
4851 /ab*/i
4852     XABYABBBZ
4853  0: AB
4854     XAYABBBZ
4855  0: A
4857 /(ab|cd)e/i
4858     ABCDE
4859  0: CDE
4860  1: CD
4862 /[abhgefdc]ij/i
4863     HIJ
4864  0: HIJ
4866 /^(ab|cd)e/i
4867     ABCDE
4868 No match
4870 /(abc|)ef/i
4871     ABCDEF
4872  0: EF
4873  1: 
4875 /(a|b)c*d/i
4876     ABCD
4877  0: BCD
4878  1: B
4880 /(ab|ab*)bc/i
4881     ABC
4882  0: ABC
4883  1: A
4885 /a([bc]*)c*/i
4886     ABC
4887  0: ABC
4888  1: BC
4890 /a([bc]*)(c*d)/i
4891     ABCD
4892  0: ABCD
4893  1: BC
4894  2: D
4896 /a([bc]+)(c*d)/i
4897     ABCD
4898  0: ABCD
4899  1: BC
4900  2: D
4902 /a([bc]*)(c+d)/i
4903     ABCD
4904  0: ABCD
4905  1: B
4906  2: CD
4908 /a[bcd]*dcdcde/i
4909     ADCDCDE
4910  0: ADCDCDE
4912 /a[bcd]+dcdcde/i
4914 /(ab|a)b*c/i
4915     ABC
4916  0: ABC
4917  1: AB
4919 /((a)(b)c)(d)/i
4920     ABCD
4921  0: ABCD
4922  1: ABC
4923  2: A
4924  3: B
4925  4: D
4927 /[a-zA-Z_][a-zA-Z0-9_]*/i
4928     ALPHA
4929  0: ALPHA
4931 /^a(bc+|b[eh])g|.h$/i
4932     ABH
4933  0: BH
4935 /(bc+d$|ef*g.|h?i(j|k))/i
4936     EFFGZ
4937  0: EFFGZ
4938  1: EFFGZ
4939     IJ
4940  0: IJ
4941  1: IJ
4942  2: J
4943     REFFGZ
4944  0: EFFGZ
4945  1: EFFGZ
4946     *** Failers
4947 No match
4948     ADCDCDE
4949 No match
4950     EFFG
4951 No match
4952     BCDD
4953 No match
4955 /((((((((((a))))))))))/i
4956     A
4957  0: A
4958  1: A
4959  2: A
4960  3: A
4961  4: A
4962  5: A
4963  6: A
4964  7: A
4965  8: A
4966  9: A
4967 10: A
4969 /((((((((((a))))))))))\10/i
4970     AA
4971  0: AA
4972  1: A
4973  2: A
4974  3: A
4975  4: A
4976  5: A
4977  6: A
4978  7: A
4979  8: A
4980  9: A
4981 10: A
4983 /(((((((((a)))))))))/i
4984     A
4985  0: A
4986  1: A
4987  2: A
4988  3: A
4989  4: A
4990  5: A
4991  6: A
4992  7: A
4993  8: A
4994  9: A
4996 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
4997     A
4998  0: A
4999  1: A
5001 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
5002     C
5003  0: C
5004  1: C
5006 /multiple words of text/i
5007     *** Failers
5008 No match
5009     AA
5010 No match
5011     UH-UH
5012 No match
5014 /multiple words/i
5015     MULTIPLE WORDS, YEAH
5016  0: MULTIPLE WORDS
5018 /(.*)c(.*)/i
5019     ABCDE
5020  0: ABCDE
5021  1: AB
5022  2: DE
5024 /\((.*), (.*)\)/i
5025     (A, B)
5026  0: (A, B)
5027  1: A
5028  2: B
5030 /[k]/i
5032 /abcd/i
5033     ABCD
5034  0: ABCD
5036 /a(bc)d/i
5037     ABCD
5038  0: ABCD
5039  1: BC
5041 /a[-]?c/i
5042     AC
5043  0: AC
5045 /(abc)\1/i
5046     ABCABC
5047  0: ABCABC
5048  1: ABC
5050 /([a-c]*)\1/i
5051     ABCABC
5052  0: ABCABC
5053  1: ABC
5055 /a(?!b)./
5056     abad
5057  0: ad
5059 /a(?=d)./
5060     abad
5061  0: ad
5063 /a(?=c|d)./
5064     abad
5065  0: ad
5067 /a(?:b|c|d)(.)/
5068     ace
5069  0: ace
5070  1: e
5072 /a(?:b|c|d)*(.)/
5073     ace
5074  0: ace
5075  1: e
5077 /a(?:b|c|d)+?(.)/
5078     ace
5079  0: ace
5080  1: e
5081     acdbcdbe
5082  0: acd
5083  1: d
5085 /a(?:b|c|d)+(.)/
5086     acdbcdbe
5087  0: acdbcdbe
5088  1: e
5090 /a(?:b|c|d){2}(.)/
5091     acdbcdbe
5092  0: acdb
5093  1: b
5095 /a(?:b|c|d){4,5}(.)/
5096     acdbcdbe
5097  0: acdbcdb
5098  1: b
5100 /a(?:b|c|d){4,5}?(.)/
5101     acdbcdbe
5102  0: acdbcd
5103  1: d
5105 /((foo)|(bar))*/
5106     foobar
5107  0: foobar
5108  1: bar
5109  2: foo
5110  3: bar
5112 /a(?:b|c|d){6,7}(.)/
5113     acdbcdbe
5114  0: acdbcdbe
5115  1: e
5117 /a(?:b|c|d){6,7}?(.)/
5118     acdbcdbe
5119  0: acdbcdbe
5120  1: e
5122 /a(?:b|c|d){5,6}(.)/
5123     acdbcdbe
5124  0: acdbcdbe
5125  1: e
5127 /a(?:b|c|d){5,6}?(.)/
5128     acdbcdbe
5129  0: acdbcdb
5130  1: b
5132 /a(?:b|c|d){5,7}(.)/
5133     acdbcdbe
5134  0: acdbcdbe
5135  1: e
5137 /a(?:b|c|d){5,7}?(.)/
5138     acdbcdbe
5139  0: acdbcdb
5140  1: b
5142 /a(?:b|(c|e){1,2}?|d)+?(.)/
5143     ace
5144  0: ace
5145  1: c
5146  2: e
5148 /^(.+)?B/
5149     AB
5150  0: AB
5151  1: A
5153 /^([^a-z])|(\^)$/
5154     .
5155  0: .
5156  1: .
5158 /^[<>]&/
5159     <&OUT
5160  0: <&
5162 /^(a\1?){4}$/
5163     aaaaaaaaaa
5164  0: aaaaaaaaaa
5165  1: aaaa
5166     *** Failers
5167 No match
5168     AB
5169 No match
5170     aaaaaaaaa
5171 No match
5172     aaaaaaaaaaa
5173 No match
5175 /^(a(?(1)\1)){4}$/
5176     aaaaaaaaaa
5177  0: aaaaaaaaaa
5178  1: aaaa
5179     *** Failers
5180 No match
5181     aaaaaaaaa
5182 No match
5183     aaaaaaaaaaa
5184 No match
5186 /(?:(f)(o)(o)|(b)(a)(r))*/
5187     foobar
5188  0: foobar
5189  1: f
5190  2: o
5191  3: o
5192  4: b
5193  5: a
5194  6: r
5196 /(?<=a)b/
5197     ab
5198  0: b
5199     *** Failers
5200 No match
5201     cb
5202 No match
5203     b
5204 No match
5206 /(?<!c)b/
5207     ab
5208  0: b
5209     b
5210  0: b
5211     b
5212  0: b
5214 /(?:..)*a/
5215     aba
5216  0: aba
5218 /(?:..)*?a/
5219     aba
5220  0: a
5222 /^(?:b|a(?=(.)))*\1/
5223     abc
5224  0: ab
5225  1: b
5227 /^(){3,5}/
5228     abc
5229  0: 
5230  1: 
5232 /^(a+)*ax/
5233     aax
5234  0: aax
5235  1: a
5237 /^((a|b)+)*ax/
5238     aax
5239  0: aax
5240  1: a
5241  2: a
5243 /^((a|bc)+)*ax/
5244     aax
5245  0: aax
5246  1: a
5247  2: a
5249 /(a|x)*ab/
5250     cab
5251  0: ab
5253 /(a)*ab/
5254     cab
5255  0: ab
5257 /(?:(?i)a)b/
5258     ab
5259  0: ab
5261 /((?i)a)b/
5262     ab
5263  0: ab
5264  1: a
5266 /(?:(?i)a)b/
5267     Ab
5268  0: Ab
5270 /((?i)a)b/
5271     Ab
5272  0: Ab
5273  1: A
5275 /(?:(?i)a)b/
5276     *** Failers
5277 No match
5278     cb
5279 No match
5280     aB
5281 No match
5283 /((?i)a)b/
5285 /(?i:a)b/
5286     ab
5287  0: ab
5289 /((?i:a))b/
5290     ab
5291  0: ab
5292  1: a
5294 /(?i:a)b/
5295     Ab
5296  0: Ab
5298 /((?i:a))b/
5299     Ab
5300  0: Ab
5301  1: A
5303 /(?i:a)b/
5304     *** Failers
5305 No match
5306     aB
5307 No match
5308     aB
5309 No match
5311 /((?i:a))b/
5313 /(?:(?-i)a)b/i
5314     ab
5315  0: ab
5317 /((?-i)a)b/i
5318     ab
5319  0: ab
5320  1: a
5322 /(?:(?-i)a)b/i
5323     aB
5324  0: aB
5326 /((?-i)a)b/i
5327     aB
5328  0: aB
5329  1: a
5331 /(?:(?-i)a)b/i
5332     *** Failers
5333 No match
5334     aB
5335  0: aB
5336     Ab
5337 No match
5339 /((?-i)a)b/i
5341 /(?:(?-i)a)b/i
5342     aB
5343  0: aB
5345 /((?-i)a)b/i
5346     aB
5347  0: aB
5348  1: a
5350 /(?:(?-i)a)b/i
5351     *** Failers
5352 No match
5353     Ab
5354 No match
5355     AB
5356 No match
5358 /((?-i)a)b/i
5360 /(?-i:a)b/i
5361     ab
5362  0: ab
5364 /((?-i:a))b/i
5365     ab
5366  0: ab
5367  1: a
5369 /(?-i:a)b/i
5370     aB
5371  0: aB
5373 /((?-i:a))b/i
5374     aB
5375  0: aB
5376  1: a
5378 /(?-i:a)b/i
5379     *** Failers
5380 No match
5381     AB
5382 No match
5383     Ab
5384 No match
5386 /((?-i:a))b/i
5388 /(?-i:a)b/i
5389     aB
5390  0: aB
5392 /((?-i:a))b/i
5393     aB
5394  0: aB
5395  1: a
5397 /(?-i:a)b/i
5398     *** Failers
5399 No match
5400     Ab
5401 No match
5402     AB
5403 No match
5405 /((?-i:a))b/i
5407 /((?-i:a.))b/i
5408     *** Failers
5409 No match
5410     AB
5411 No match
5412     a\nB
5413 No match
5415 /((?s-i:a.))b/i
5416     a\nB
5417  0: a\x0aB
5418  1: a\x0a
5420 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5421     cabbbb
5422  0: cabbbb
5424 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5425     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5426  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5428 /(ab)\d\1/i
5429     Ab4ab
5430  0: Ab4ab
5431  1: Ab
5432     ab4Ab
5433  0: ab4Ab
5434  1: ab
5436 /foo\w*\d{4}baz/
5437     foobar1234baz
5438  0: foobar1234baz
5440 /x(~~)*(?:(?:F)?)?/
5441     x~~
5442  0: x~~
5443  1: ~~
5445 /^a(?#xxx){3}c/
5446     aaac
5447  0: aaac
5449 /^a (?#xxx) (?#yyy) {3}c/x
5450     aaac
5451  0: aaac
5453 /(?<![cd])b/
5454     *** Failers
5455 No match
5456     B\nB
5457 No match
5458     dbcb
5459 No match
5461 /(?<![cd])[ab]/
5462     dbaacb
5463  0: a
5465 /(?<!(c|d))b/
5467 /(?<!(c|d))[ab]/
5468     dbaacb
5469  0: a
5471 /(?<!cd)[ab]/
5472     cdaccb
5473  0: b
5475 /^(?:a?b?)*$/
5476     \
5477  0: 
5478     a
5479  0: a
5480     ab
5481  0: ab
5482     aaa   
5483  0: aaa
5484     *** Failers
5485 No match
5486     dbcb
5487 No match
5488     a--
5489 No match
5490     aa-- 
5491 No match
5493 /((?s)^a(.))((?m)^b$)/
5494     a\nb\nc\n
5495  0: a\x0ab
5496  1: a\x0a
5497  2: \x0a
5498  3: b
5500 /((?m)^b$)/
5501     a\nb\nc\n
5502  0: b
5503  1: b
5505 /(?m)^b/
5506     a\nb\n
5507  0: b
5509 /(?m)^(b)/
5510     a\nb\n
5511  0: b
5512  1: b
5514 /((?m)^b)/
5515     a\nb\n
5516  0: b
5517  1: b
5519 /\n((?m)^b)/
5520     a\nb\n
5521  0: \x0ab
5522  1: b
5524 /((?s).)c(?!.)/
5525     a\nb\nc\n
5526  0: \x0ac
5527  1: \x0a
5528     a\nb\nc\n
5529  0: \x0ac
5530  1: \x0a
5532 /((?s)b.)c(?!.)/
5533     a\nb\nc\n
5534  0: b\x0ac
5535  1: b\x0a
5536     a\nb\nc\n
5537  0: b\x0ac
5538  1: b\x0a
5540 /^b/
5542 /()^b/
5543     *** Failers
5544 No match
5545     a\nb\nc\n
5546 No match
5547     a\nb\nc\n
5548 No match
5550 /((?m)^b)/
5551     a\nb\nc\n
5552  0: b
5553  1: b
5555 /(x)?(?(1)a|b)/
5556     *** Failers
5557 No match
5558     a
5559 No match
5560     a
5561 No match
5563 /(x)?(?(1)b|a)/
5564     a
5565  0: a
5567 /()?(?(1)b|a)/
5568     a
5569  0: a
5571 /()(?(1)b|a)/
5573 /()?(?(1)a|b)/
5574     a
5575  0: a
5576  1: 
5578 /^(\()?blah(?(1)(\)))$/
5579     (blah)
5580  0: (blah)
5581  1: (
5582  2: )
5583     blah
5584  0: blah
5585     *** Failers
5586 No match
5587     a
5588 No match
5589     blah)
5590 No match
5591     (blah
5592 No match
5594 /^(\(+)?blah(?(1)(\)))$/
5595     (blah)
5596  0: (blah)
5597  1: (
5598  2: )
5599     blah
5600  0: blah
5601     *** Failers
5602 No match
5603     blah)
5604 No match
5605     (blah
5606 No match
5608 /(?(?!a)a|b)/
5610 /(?(?!a)b|a)/
5611     a
5612  0: a
5614 /(?(?=a)b|a)/
5615     *** Failers
5616 No match
5617     a
5618 No match
5619     a
5620 No match
5622 /(?(?=a)a|b)/
5623     a
5624  0: a
5626 /(?=(a+?))(\1ab)/
5627     aaab
5628  0: aab
5629  1: a
5630  2: aab
5632 /^(?=(a+?))\1ab/
5634 /(\w+:)+/
5635     one:
5636  0: one:
5637  1: one:
5639 /$(?<=^(a))/
5640     a
5641  0: 
5642  1: a
5644 /(?=(a+?))(\1ab)/
5645     aaab
5646  0: aab
5647  1: a
5648  2: aab
5650 /^(?=(a+?))\1ab/
5651     *** Failers
5652 No match
5653     aaab
5654 No match
5655     aaab
5656 No match
5658 /([\w:]+::)?(\w+)$/
5659     abcd
5660  0: abcd
5661  1: <unset>
5662  2: abcd
5663     xy:z:::abcd
5664  0: xy:z:::abcd
5665  1: xy:z:::
5666  2: abcd
5668 /^[^bcd]*(c+)/
5669     aexycd
5670  0: aexyc
5671  1: c
5673 /(a*)b+/
5674     caab
5675  0: aab
5676  1: aa
5678 /([\w:]+::)?(\w+)$/
5679     abcd
5680  0: abcd
5681  1: <unset>
5682  2: abcd
5683     xy:z:::abcd
5684  0: xy:z:::abcd
5685  1: xy:z:::
5686  2: abcd
5687     *** Failers
5688  0: Failers
5689  1: <unset>
5690  2: Failers
5691     abcd:
5692 No match
5693     abcd:
5694 No match
5696 /^[^bcd]*(c+)/
5697     aexycd
5698  0: aexyc
5699  1: c
5701 /(>a+)ab/
5703 /(?>a+)b/
5704     aaab
5705  0: aaab
5707 /([[:]+)/
5708     a:[b]:
5709  0: :[
5710  1: :[
5712 /([[=]+)/
5713     a=[b]=
5714  0: =[
5715  1: =[
5717 /([[.]+)/
5718     a.[b].
5719  0: .[
5720  1: .[
5722 /((?>a+)b)/
5723     aaab
5724  0: aaab
5725  1: aaab
5727 /(?>(a+))b/
5728     aaab
5729  0: aaab
5730  1: aaa
5732 /((?>[^()]+)|\([^()]*\))+/
5733     ((abc(ade)ufh()()x
5734  0: abc(ade)ufh()()x
5735  1: x
5737 /a\Z/
5738     *** Failers
5739 No match
5740     aaab
5741 No match
5742     a\nb\n
5743 No match
5745 /b\Z/
5746     a\nb\n
5747  0: b
5749 /b\z/
5751 /b\Z/
5752     a\nb
5753  0: b
5755 /b\z/
5756     a\nb
5757  0: b
5758     *** Failers
5759 No match
5760     
5761 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
5762     a
5763  0: a
5764  1: 
5765     abc
5766  0: abc
5767  1: 
5768     a-b
5769  0: a-b
5770  1: 
5771     0-9 
5772  0: 0-9
5773  1: 
5774     a.b
5775  0: a.b
5776  1: 
5777     5.6.7  
5778  0: 5.6.7
5779  1: 
5780     the.quick.brown.fox
5781  0: the.quick.brown.fox
5782  1: 
5783     a100.b200.300c  
5784  0: a100.b200.300c
5785  1: 
5786     12-ab.1245 
5787  0: 12-ab.1245
5788  1: 
5789     *** Failers
5790 No match
5791     \
5792 No match
5793     .a
5794 No match
5795     -a
5796 No match
5797     a-
5798 No match
5799     a.  
5800 No match
5801     a_b 
5802 No match
5803     a.-
5804 No match
5805     a..  
5806 No match
5807     ab..bc 
5808 No match
5809     the.quick.brown.fox-
5810 No match
5811     the.quick.brown.fox.
5812 No match
5813     the.quick.brown.fox_
5814 No match
5815     the.quick.brown.fox+       
5816 No match
5818 /(?>.*)(?<=(abcd|wxyz))/
5819     alphabetabcd
5820  0: alphabetabcd
5821  1: abcd
5822     endingwxyz
5823  0: endingwxyz
5824  1: wxyz
5825     *** Failers
5826 No match
5827     a rather long string that doesn't end with one of them
5828 No match
5830 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5831     word cat dog elephant mussel cow horse canary baboon snake shark otherword
5832  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5833     word cat dog elephant mussel cow horse canary baboon snake shark
5834 No match
5835   
5836 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5837     word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
5838 No match
5840 /(?<=\d{3}(?!999))foo/
5841     999foo
5842  0: foo
5843     123999foo 
5844  0: foo
5845     *** Failers
5846 No match
5847     123abcfoo
5848 No match
5849     
5850 /(?<=(?!...999)\d{3})foo/
5851     999foo
5852  0: foo
5853     123999foo 
5854  0: foo
5855     *** Failers
5856 No match
5857     123abcfoo
5858 No match
5860 /(?<=\d{3}(?!999)...)foo/
5861     123abcfoo
5862  0: foo
5863     123456foo 
5864  0: foo
5865     *** Failers
5866 No match
5867     123999foo  
5868 No match
5869     
5870 /(?<=\d{3}...)(?<!999)foo/
5871     123abcfoo   
5872  0: foo
5873     123456foo 
5874  0: foo
5875     *** Failers
5876 No match
5877     123999foo  
5878 No match
5880 /<a[\s]+href[\s]*=[\s]*          # find <a href=
5881  ([\"\'])?                       # find single or double quote
5882  (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
5883                                  # quote, otherwise match up to next space
5884 /isx
5885     <a href=abcd xyz
5886  0: <a href=abcd
5887  1: <unset>
5888  2: <unset>
5889  3: abcd
5890     <a href=\"abcd xyz pqr\" cats
5891  0: <a href="abcd xyz pqr"
5892  1: "
5893  2: abcd xyz pqr
5894     <a href=\'abcd xyz pqr\' cats
5895  0: <a href='abcd xyz pqr'
5896  1: '
5897  2: abcd xyz pqr
5899 /<a\s+href\s*=\s*                # find <a href=
5900  (["'])?                         # find single or double quote
5901  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
5902                                  # quote, otherwise match up to next space
5903 /isx
5904     <a href=abcd xyz
5905  0: <a href=abcd
5906  1: <unset>
5907  2: <unset>
5908  3: abcd
5909     <a href=\"abcd xyz pqr\" cats
5910  0: <a href="abcd xyz pqr"
5911  1: "
5912  2: abcd xyz pqr
5913     <a href       =       \'abcd xyz pqr\' cats
5914  0: <a href       =       'abcd xyz pqr'
5915  1: '
5916  2: abcd xyz pqr
5918 /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
5919  (["'])?                         # find single or double quote
5920  (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
5921                                  # quote, otherwise match up to next space
5922 /isx
5923     <a href=abcd xyz
5924  0: <a href=abcd
5925  1: <unset>
5926  2: <unset>
5927  3: abcd
5928     <a href=\"abcd xyz pqr\" cats
5929  0: <a href="abcd xyz pqr"
5930  1: "
5931  2: abcd xyz pqr
5932     <a href       =       \'abcd xyz pqr\' cats
5933  0: <a href       =       'abcd xyz pqr'
5934  1: '
5935  2: abcd xyz pqr
5937 /((Z)+|A)*/
5938     ZABCDEFG
5939  0: ZA
5940  1: A
5941  2: Z
5943 /(Z()|A)*/
5944     ZABCDEFG
5945  0: ZA
5946  1: A
5947  2: 
5949 /(Z(())|A)*/
5950     ZABCDEFG
5951  0: ZA
5952  1: A
5953  2: 
5954  3: 
5956 /((?>Z)+|A)*/
5957     ZABCDEFG
5958  0: ZA
5959  1: A
5961 /((?>)+|A)*/
5962     ZABCDEFG
5963  0: 
5964  1: 
5966 /a*/g
5967     abbab
5968  0: a
5969  0: 
5970  0: 
5971  0: a
5972  0: 
5973  0: 
5975 /^[a-\d]/
5976     abcde
5977  0: a
5978     -things
5979  0: -
5980     0digit
5981  0: 0
5982     *** Failers
5983 No match
5984     bcdef    
5985 No match
5987 /^[\d-a]/
5988     abcde
5989  0: a
5990     -things
5991  0: -
5992     0digit
5993  0: 0
5994     *** Failers
5995 No match
5996     bcdef    
5997 No match
5998     
5999 /[[:space:]]+/
6000     > \x09\x0a\x0c\x0d\x0b<
6001  0:  \x09\x0a\x0c\x0d\x0b
6002      
6003 /[[:blank:]]+/
6004     > \x09\x0a\x0c\x0d\x0b<
6005  0:  \x09
6006      
6007 /[\s]+/
6008     > \x09\x0a\x0c\x0d\x0b<
6009  0:  \x09\x0a\x0c\x0d
6010      
6011 /\s+/
6012     > \x09\x0a\x0c\x0d\x0b<
6013  0:  \x09\x0a\x0c\x0d
6014      
6015 /a\vb/x
6016     ab
6017 No match
6019 /(?!\A)x/m
6020   a\nxb\n
6021  0: x
6023 /(?!^)x/m
6024   a\nxb\n
6025 No match
6027 /abc\Qabc\Eabc/
6028     abcabcabc
6029  0: abcabcabc
6030     
6031 /abc\Q(*+|\Eabc/
6032     abc(*+|abc 
6033  0: abc(*+|abc
6035 /   abc\Q abc\Eabc/x
6036     abc abcabc
6037  0: abc abcabc
6038     *** Failers
6039 No match
6040     abcabcabc  
6041 No match
6042     
6043 /abc#comment
6044     \Q#not comment
6045     literal\E/x
6046     abc#not comment\n    literal     
6047  0: abc#not comment\x0a    literal
6049 /abc#comment
6050     \Q#not comment
6051     literal/x
6052     abc#not comment\n    literal     
6053  0: abc#not comment\x0a    literal
6055 /abc#comment
6056     \Q#not comment
6057     literal\E #more comment
6058     /x
6059     abc#not comment\n    literal     
6060  0: abc#not comment\x0a    literal
6062 /abc#comment
6063     \Q#not comment
6064     literal\E #more comment/x
6065     abc#not comment\n    literal     
6066  0: abc#not comment\x0a    literal
6068 /\Qabc\$xyz\E/
6069     abc\\\$xyz
6070  0: abc\$xyz
6072 /\Qabc\E\$\Qxyz\E/
6073     abc\$xyz
6074  0: abc$xyz
6076 /\Gabc/
6077     abc
6078  0: abc
6079     *** Failers
6080 No match
6081     xyzabc  
6082 No match
6084 /\Gabc./g
6085     abc1abc2xyzabc3
6086  0: abc1
6087  0: abc2
6089 /abc./g
6090     abc1abc2xyzabc3 
6091  0: abc1
6092  0: abc2
6093  0: abc3
6095 /a(?x: b c )d/
6096     XabcdY
6097  0: abcd
6098     *** Failers 
6099 No match
6100     Xa b c d Y 
6101 No match
6103 /((?x)x y z | a b c)/
6104     XabcY
6105  0: abc
6106  1: abc
6107     AxyzB 
6108  0: xyz
6109  1: xyz
6111 /(?i)AB(?-i)C/
6112     XabCY
6113  0: abC
6114     *** Failers
6115 No match
6116     XabcY  
6117 No match
6119 /((?i)AB(?-i)C|D)E/
6120     abCE
6121  0: abCE
6122  1: abC
6123     DE
6124  0: DE
6125  1: D
6126     *** Failers
6127 No match
6128     abcE
6129 No match
6130     abCe  
6131 No match
6132     dE
6133 No match
6134     De    
6135 No match
6137 /(.*)\d+\1/
6138     abc123abc
6139  0: abc123abc
6140  1: abc
6141     abc123bc 
6142  0: bc123bc
6143  1: bc
6145 /(.*)\d+\1/s
6146     abc123abc
6147  0: abc123abc
6148  1: abc
6149     abc123bc 
6150  0: bc123bc
6151  1: bc
6152     
6153 /((.*))\d+\1/
6154     abc123abc
6155  0: abc123abc
6156  1: abc
6157  2: abc
6158     abc123bc  
6159  0: bc123bc
6160  1: bc
6161  2: bc
6163 /-- This tests for an IPv6 address in the form where it can have up to --/
6164 /-- eight components, one and only one of which is empty. This must be --/
6165 No match
6166 /-- an internal component. --/
6167 No match
6169 /^(?!:)                       # colon disallowed at start
6170   (?:                         # start of item
6171     (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
6172     (?(1)0 | () ) )           # if null previously matched, fail; else null
6173     :                         # followed by colon
6174   ){1,7}                      # end item; 1-7 of them required               
6175   [0-9a-f]{1,4} $             # final hex number at end of string
6176   (?(1)|.)                    # check that there was an empty component
6177   /xi
6178     a123::a123
6179  0: a123::a123
6180  1: 
6181     a123:b342::abcd
6182  0: a123:b342::abcd
6183  1: 
6184     a123:b342::324e:abcd
6185  0: a123:b342::324e:abcd
6186  1: 
6187     a123:ddde:b342::324e:abcd
6188  0: a123:ddde:b342::324e:abcd
6189  1: 
6190     a123:ddde:b342::324e:dcba:abcd
6191  0: a123:ddde:b342::324e:dcba:abcd
6192  1: 
6193     a123:ddde:9999:b342::324e:dcba:abcd
6194  0: a123:ddde:9999:b342::324e:dcba:abcd
6195  1: 
6196     *** Failers
6197 No match
6198     1:2:3:4:5:6:7:8
6199 No match
6200     a123:bce:ddde:9999:b342::324e:dcba:abcd
6201 No match
6202     a123::9999:b342::324e:dcba:abcd
6203 No match
6204     abcde:2:3:4:5:6:7:8
6205 No match
6206     ::1
6207 No match
6208     abcd:fee0:123::   
6209 No match
6210     :1
6211 No match
6212     1:  
6213 No match
6215 /[z\Qa-d]\E]/
6216     z
6217  0: z
6218     a
6219  0: a
6220     -
6221  0: -
6222     d
6223  0: d
6224     ] 
6225  0: ]
6226     *** Failers
6227  0: a
6228     b     
6229 No match
6231 /[\z\C]/
6232     z
6233  0: z
6234     C 
6235  0: C
6236     
6237 /\M/
6238     M 
6239  0: M
6240     
6241 /(a+)*b/
6242     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
6243 No match
6244     
6245 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
6246     REGular
6247  0: REGular
6248     regulaer
6249  0: regulaer
6250     Regex  
6251  0: Regex
6252     regulär 
6253  0: regul\xe4r
6255 /Åæåä[à-ÿÀ-ß]+/
6256     Ã…æåäà
6257  0: \xc5\xe6\xe5\xe4\xe0
6258     Ã…æåäÿ
6259  0: \xc5\xe6\xe5\xe4\xff
6260     Ã…æåäÀ
6261  0: \xc5\xe6\xe5\xe4\xc0
6262     Ã…æåäß
6263  0: \xc5\xe6\xe5\xe4\xdf
6265 /(?<=Z)X./
6266   \x84XAZXB
6267  0: XB
6269 /ab cd (?x) de fg/
6270     ab cd defg
6271  0: ab cd defg
6273 /ab cd(?x) de fg/
6274     ab cddefg
6275  0: ab cddefg
6276     ** Failers 
6277 No match
6278     abcddefg
6279 No match
6281 /(?<![^f]oo)(bar)/
6282     foobarX 
6283  0: bar
6284  1: bar
6285     ** Failers 
6286 No match
6287     boobarX
6288 No match
6290 /(?<![^f])X/
6291     offX
6292  0: X
6293     ** Failers
6294 No match
6295     onyX  
6296 No match
6298 /(?<=[^f])X/
6299     onyX
6300  0: X
6301     ** Failers
6302 No match
6303     offX 
6304 No match
6306 /^/mg
6307     a\nb\nc\n
6308  0: 
6309  0: 
6310  0: 
6311     \ 
6312  0: 
6313     
6314 /(?<=C\n)^/mg
6315     A\nC\nC\n 
6316  0: 
6318 /(?:(?(1)a|b)(X))+/
6319     bXaX
6320  0: bXaX
6321  1: X
6323 /(?:(?(1)\1a|b)(X|Y))+/
6324     bXXaYYaY
6325  0: bXXaYYaY
6326  1: Y
6327     bXYaXXaX  
6328  0: bX
6329  1: X
6331 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
6332     bXXaYYaY
6333  0: bX
6334  1: 
6335  2: 
6336  3: 
6337  4: 
6338  5: 
6339  6: 
6340  7: 
6341  8: 
6342  9: 
6343 10: X
6345 /[[,abc,]+]/
6346     abc]
6347  0: abc]
6348     a,b]
6349  0: a,b]
6350     [a,b,c]  
6351  0: [a,b,c]
6353 /(?-x: )/x
6354     A\x20B
6355  0:  
6356     
6357 "(?x)(?-x: \s*#\s*)"
6358     A # B
6359  0:  # 
6360     ** Failers
6361 No match
6362     #  
6363 No match
6365 "(?x-is)(?:(?-ixs) \s*#\s*) include"
6366     A #include
6367  0:  #include
6368     ** Failers
6369 No match
6370     A#include  
6371 No match
6372     A #Include
6373 No match
6375 /a*b*\w/
6376     aaabbbb
6377  0: aaabbbb
6378     aaaa
6379  0: aaaa
6380     a
6381  0: a
6383 /a*b?\w/
6384     aaabbbb
6385  0: aaabb
6386     aaaa
6387  0: aaaa
6388     a
6389  0: a
6391 /a*b{0,4}\w/
6392     aaabbbb
6393  0: aaabbbb
6394     aaaa
6395  0: aaaa
6396     a
6397  0: a
6399 /a*b{0,}\w/
6400     aaabbbb
6401  0: aaabbbb
6402     aaaa
6403  0: aaaa
6404     a
6405  0: a
6406     
6407 /a*\d*\w/
6408     0a
6409  0: 0a
6410     a 
6411  0: a
6412     
6413 /a*b *\w/x
6414     a 
6415  0: a
6417 /a*b#comment
6418   *\w/x
6419     a 
6420  0: a
6422 /a* b *\w/x
6423     a 
6424  0: a
6426 /^\w+=.*(\\\n.*)*/
6427     abc=xyz\\\npqr
6428  0: abc=xyz\
6430 /(?=(\w+))\1:/
6431     abcd:
6432  0: abcd:
6433  1: abcd
6435 /^(?=(\w+))\1:/
6436     abcd:
6437  0: abcd:
6438  1: abcd
6440 /^\Eabc/
6441     abc
6442  0: abc
6443     
6444 /^[\Eabc]/
6445     a
6446  0: a
6447     ** Failers 
6448 No match
6449     E 
6450 No match
6451     
6452 /^[a-\Ec]/
6453     b
6454  0: b
6455     ** Failers
6456 No match
6457     -
6458 No match
6459     E    
6460 No match
6462 /^[a\E\E-\Ec]/
6463     b
6464  0: b
6465     ** Failers
6466 No match
6467     -
6468 No match
6469     E    
6470 No match
6472 /^[\E\Qa\E-\Qz\E]+/
6473     b
6474  0: b
6475     ** Failers
6476 No match
6477     -  
6478 No match
6479     
6480 /^[a\Q]bc\E]/
6481     a
6482  0: a
6483     ]
6484  0: ]
6485     c
6486  0: c
6487     
6488 /^[a-\Q\E]/
6489     a
6490  0: a
6491     -     
6492  0: -
6494 /^(a()*)*/
6495     aaaa
6496  0: aaaa
6497  1: a
6498  2: 
6500 /^(?:a(?:(?:))*)*/
6501     aaaa
6502  0: aaaa
6504 /^(a()+)+/
6505     aaaa
6506  0: aaaa
6507  1: a
6508  2: 
6510 /^(?:a(?:(?:))+)+/
6511     aaaa
6512  0: aaaa
6514 /(a){0,3}(?(1)b|(c|))*D/
6515     abbD
6516  0: abbD
6517  1: a
6518     ccccD
6519  0: ccccD
6520  1: <unset>
6521  2: 
6522     D  
6523  0: D
6524  1: <unset>
6525  2: 
6527 /(a|)*\d/
6528   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6529 No match
6530   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6531  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6532  1: 
6534 /(?>a|)*\d/
6535   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6536 No match
6537   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6538  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6540 /(?:a|)*\d/
6541   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6542 No match
6543   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6544  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6546 /\Z/g
6547   abc\n
6548  0: 
6549  0: 
6550   
6551 /^(?s)(?>.*)(?<!\n)/
6552   abc
6553  0: abc
6554   abc\n  
6555 No match
6557 /^(?![^\n]*\n\z)/
6558   abc
6559  0: 
6560   abc\n 
6561 No match
6562   
6563 /\z(?<!\n)/
6564   abc
6565  0: 
6566   abc\n  
6567 No match
6569 /(.*(.)?)*/
6570     abcd
6571  0: abcd
6572  1: 
6574 /( (A | (?(1)0|) )*   )/x
6575     abcd
6576  0: 
6577  1: 
6578  2: 
6580 /( ( (?(1)0|) )*   )/x
6581     abcd
6582  0: 
6583  1: 
6584  2: 
6586 /(  (?(1)0|)*   )/x
6587     abcd
6588  0: 
6589  1: 
6591 /[[:abcd:xyz]]/
6592     a]
6593  0: a]
6594     :] 
6595  0: :]
6596     
6597 /[abc[:x\]pqr]/
6598     a
6599  0: a
6600     [
6601  0: [
6602     :
6603  0: :
6604     ]
6605  0: ]
6606     p    
6607  0: p
6609 /.*[op][xyz]/
6610     fooabcfoo
6611 No match
6613 /(?(?=.*b)b|^)/
6614    adc
6615  0: 
6616    abc 
6617  0: b
6619 /(?(?=^.*b)b|^)/
6620    adc
6621  0: 
6622    abc 
6623 No match
6625 /(?(?=.*b)b|^)*/
6626    adc
6627  0: 
6628    abc 
6629  0: 
6631 /(?(?=.*b)b|^)+/
6632    adc
6633  0: 
6634    abc 
6635  0: b
6637 /(?(?=b).*b|^d)/
6638     abc
6639  0: b
6641 /(?(?=.*b).*b|^d)/
6642     abc
6643  0: ab
6645 /^%((?(?=[a])[^%])|b)*%$/
6646     %ab%
6647  0: %ab%
6648  1: 
6650 /(?i)a(?-i)b|c/
6651     XabX
6652  0: ab
6653     XAbX
6654  0: Ab
6655     CcC 
6656  0: c
6657     ** Failers
6658 No match
6659     XABX   
6660 No match
6662 /[\x00-\xff\s]+/
6663     \x0a\x0b\x0c\x0d
6664  0: \x0a\x0b\x0c\x0d
6666 /^\c\x7f/
6667     ?
6668  0: ?
6670 /(abc)\1/i
6671    abc
6672 No match
6674 /(abc)\1/
6675    abc
6676 No match
6678 /[^a]*/i
6679     12abc
6680  0: 12
6681     12ABC
6682  0: 12
6684 /[^a]*+/i
6685     12abc
6686  0: 12
6687     12ABC
6688  0: 12
6690 /[^a]*?X/i
6691     ** Failers
6692 No match
6693     12abc
6694 No match
6695     12ABC
6696 No match
6697     
6698 /[^a]+?X/i   
6699     ** Failers
6700 No match
6701     12abc
6702 No match
6703     12ABC
6704 No match
6706 /[^a]?X/i
6707     12aXbcX
6708  0: X
6709     12AXBCX
6710  0: X
6711     BCX 
6712  0: CX
6714 /[^a]??X/i
6715     12aXbcX
6716  0: X
6717     12AXBCX
6718  0: X
6719     BCX
6720  0: CX
6721     
6722 /[^a]?+X/i
6723     12aXbcX
6724  0: cX
6725     12AXBCX
6726  0: CX
6727     BCX 
6728  0: CX
6730 /[^a]{2,3}/i
6731     abcdef
6732  0: bcd
6733     ABCDEF  
6734  0: BCD
6736 /[^a]{2,3}?/i
6737     abcdef
6738  0: bc
6739     ABCDEF  
6740  0: BC
6742 /[^a]{2,3}+/i
6743     abcdef
6744  0: bcd
6745     ABCDEF  
6746  0: BCD
6748 /((a|)+)+Z/
6749     Z
6750  0: Z
6751  1: 
6752  2: 
6754 /(a)b|(a)c/
6755     ac
6756  0: ac
6757  1: <unset>
6758  2: a
6760 /(?>(a))b|(a)c/
6761     ac
6762  0: ac
6763  1: <unset>
6764  2: a
6766 /(?=(a))ab|(a)c/
6767     ac
6768  0: ac
6769  1: <unset>
6770  2: a
6772 /((?>(a))b|(a)c)/
6773     ac
6774  0: ac
6775  1: ac
6776  2: <unset>
6777  3: a
6779 /((?>(a))b|(a)c)++/
6780     ac
6781  0: ac
6782  1: ac
6783  2: <unset>
6784  3: a
6786 /(?:(?>(a))b|(a)c)++/
6787     ac
6788  0: ac
6789  1: <unset>
6790  2: a
6792 /(?=(?>(a))b|(a)c)(..)/
6793     ac
6794  0: ac
6795  1: <unset>
6796  2: a
6797  3: ac
6799 /(?>(?>(a))b|(a)c)/
6800     ac
6801  0: ac
6802  1: <unset>
6803  2: a
6805 /(?:(?>([ab])))+a=/+
6806     =ba=
6807  0: ba=
6808  0+ 
6809  1: b
6811 /(?>([ab]))+a=/+
6812     =ba=
6813  0: ba=
6814  0+ 
6815  1: b
6817 /((?>(a+)b)+(aabab))/
6818     aaaabaaabaabab
6819  0: aaaabaaabaabab
6820  1: aaaabaaabaabab
6821  2: aaa
6822  3: aabab
6824 /(?>a+|ab)+?c/
6825     aabc
6826 No match
6828 /(?>a+|ab)+c/
6829     aabc
6830 No match
6832 /(?:a+|ab)+c/
6833     aabc
6834  0: aabc
6836 /(?(?=(a))a)/
6837     a
6838  0: a
6839  1: a
6841 /(?(?=(a))a)(b)/
6842     ab
6843  0: ab
6844  1: a
6845  2: b
6847 /^(?:a|ab)++c/
6848     aaaabc
6849 No match
6851 /^(?>a|ab)++c/
6852     aaaabc
6853 No match
6855 /^(?:a|ab)+c/
6856     aaaabc
6857  0: aaaabc
6859 /(?=abc){3}abc/+
6860     abcabcabc
6861  0: abc
6862  0+ abcabc
6863     ** Failers
6864 No match
6865     xyz  
6866 No match
6867     
6868 /(?=abc)+abc/+
6869     abcabcabc
6870  0: abc
6871  0+ abcabc
6872     ** Failers
6873 No match
6874     xyz  
6875 No match
6876     
6877 /(?=abc)++abc/+
6878     abcabcabc
6879  0: abc
6880  0+ abcabc
6881     ** Failers
6882 No match
6883     xyz  
6884 No match
6885     
6886 /(?=abc){0}xyz/
6887     xyz 
6888  0: xyz
6890 /(?=abc){1}xyz/
6891     ** Failers
6892 No match
6893     xyz 
6894 No match
6895     
6896 /(?=(a))?./
6897     ab
6898  0: a
6899  1: a
6900     bc
6901  0: b
6902       
6903 /(?=(a))??./
6904     ab
6905  0: a
6906     bc
6907  0: b
6909 /^(?=(a)){0}b(?1)/
6910     backgammon
6911  0: ba
6913 /^(?=(?1))?[az]([abc])d/
6914     abd 
6915  0: abd
6916  1: b
6917     zcdxx 
6918  0: zcd
6919  1: c
6921 /^(?!a){0}\w+/
6922     aaaaa
6923  0: aaaaa
6925 /(?<=(abc))?xyz/
6926     abcxyz
6927  0: xyz
6928  1: abc
6929     pqrxyz 
6930  0: xyz
6932 /^[\g<a>]+/
6933     ggg<<<aaa>>>
6934  0: ggg<<<aaa>>>
6935     ** Failers
6936 No match
6937     \\ga  
6938 No match
6939     
6940 /^[\ga]+/
6941     gggagagaxyz 
6942  0: gggagaga
6943     
6944 /^[:a[:digit:]]+/
6945     aaaa444:::Z 
6946  0: aaaa444:::
6948 /^[:a[:digit:]:b]+/
6949     aaaa444:::bbbZ 
6950  0: aaaa444:::bbb
6952 /[:a]xxx[b:]/
6953      :xxx:
6954  0: :xxx:
6955      
6956 /(?<=a{2})b/i
6957     xaabc
6958  0: b
6959     ** Failers
6960 No match
6961     xabc  
6962 No match
6964 /(?<!a{2})b/i
6965     xabc
6966  0: b
6967     ** Failers
6968 No match
6969     xaabc  
6970 No match
6972 /(?<=a\h)c/
6973     xa c
6974  0: c
6975     
6976 /(?<=[^a]{2})b/
6977     axxbc
6978  0: b
6979     aAAbc 
6980  0: b
6981     ** Failers
6982 No match
6983     xaabc    
6984 No match
6986 /(?<=[^a]{2})b/i
6987     axxbc  
6988  0: b
6989     ** Failers
6990 No match
6991     aAAbc 
6992 No match
6993     xaabc    
6994 No match
6996 /(?<=a\H)c/
6997     abc
6998  0: c
7000 /(?<=a\V)c/
7001     abc
7002  0: c
7003     
7004 /(?<=a\v)c/
7005     a\nc
7006  0: c
7008 /(?(?=c)c|d)++Y/
7009     XcccddYX
7010  0: cccddY
7012 /(?(?=c)c|d)*+Y/
7013     XcccddYX
7014  0: cccddY
7016 /^(a{2,3}){2,}+a/
7017     aaaaaaa
7018  0: aaaaaaa
7019  1: aaa
7020     ** Failers
7021 No match
7022     aaaaaa
7023 No match
7024     aaaaaaaaa 
7025 No match
7027 /^(a{2,3})++a/
7028     ** Failers
7029 No match
7030     aaaaaa
7031 No match
7033 /^(a{2,3})*+a/
7034     ** Failers
7035 No match
7036     aaaaaa
7037 No match
7039 /ab\Cde/
7040     abXde
7041  0: abXde
7042     
7043 /(?<=ab\Cde)X/
7044     abZdeX
7045  0: X
7047 /a[\CD]b/
7048     aCb
7049  0: aCb
7050     aDb 
7051  0: aDb
7053 /a[\C-X]b/
7054     aJb
7055  0: aJb
7057 /\H\h\V\v/
7058     X X\x0a
7059  0: X X\x0a
7060     X\x09X\x0b
7061  0: X\x09X\x0b
7062     ** Failers
7063 No match
7064     \xa0 X\x0a   
7065 No match
7066     
7067 /\H*\h+\V?\v{3,4}/ 
7068     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
7069  0: \x09 \xa0X\x0a\x0b\x0c\x0d
7070     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
7071  0: \x09 \xa0\x0a\x0b\x0c\x0d
7072     \x09\x20\xa0\x0a\x0b\x0c
7073  0: \x09 \xa0\x0a\x0b\x0c
7074     ** Failers 
7075 No match
7076     \x09\x20\xa0\x0a\x0b
7077 No match
7078      
7079 /\H{3,4}/
7080     XY  ABCDE
7081  0: ABCD
7082     XY  PQR ST 
7083  0: PQR
7084     
7085 /.\h{3,4}./
7086     XY  AB    PQRS
7087  0: B    P
7089 /\h*X\h?\H+Y\H?Z/
7090     >XNNNYZ
7091  0: XNNNYZ
7092     >  X NYQZ
7093  0:   X NYQZ
7094     ** Failers
7095 No match
7096     >XYZ   
7097 No match
7098     >  X NY Z
7099 No match
7101 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
7102     >XY\x0aZ\x0aA\x0bNN\x0c
7103  0: XY\x0aZ\x0aA\x0bNN\x0c
7104     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7105  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7107 /(foo)\Kbar/
7108     foobar
7109  0: bar
7110  1: foo
7111    
7112 /(foo)(\Kbar|baz)/
7113     foobar
7114  0: bar
7115  1: foo
7116  2: bar
7117     foobaz 
7118  0: foobaz
7119  1: foo
7120  2: baz
7122 /(foo\Kbar)baz/
7123     foobarbaz
7124  0: barbaz
7125  1: foobar
7127 /abc\K|def\K/g+
7128     Xabcdefghi
7129  0: 
7130  0+ defghi
7131  0: 
7132  0+ ghi
7134 /ab\Kc|de\Kf/g+
7135     Xabcdefghi
7136  0: c
7137  0+ defghi
7138  0: f
7139  0+ ghi
7140     
7141 /(?=C)/g+
7142     ABCDECBA
7143  0: 
7144  0+ CDECBA
7145  0: 
7146  0+ CBA
7147     
7148 /^abc\K/+
7149     abcdef
7150  0: 
7151  0+ def
7152     ** Failers
7153 No match
7154     defabcxyz   
7155 No match
7157 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
7158     ababababbbabZXXXX
7159  0: ababababbbabZ
7160  1: ab
7161  2: b
7163 /(?<A>tom|bon)-\g{A}/
7164     tom-tom
7165  0: tom-tom
7166  1: tom
7167     bon-bon 
7168  0: bon-bon
7169  1: bon
7170     
7171 /(^(a|b\g{-1}))/
7172     bacxxx
7173 No match
7175 /(?|(abc)|(xyz))\1/
7176     abcabc
7177  0: abcabc
7178  1: abc
7179     xyzxyz 
7180  0: xyzxyz
7181  1: xyz
7182     ** Failers
7183 No match
7184     abcxyz
7185 No match
7186     xyzabc   
7187 No match
7188     
7189 /(?|(abc)|(xyz))(?1)/
7190     abcabc
7191  0: abcabc
7192  1: abc
7193     xyzabc 
7194  0: xyzabc
7195  1: xyz
7196     ** Failers 
7197 No match
7198     xyzxyz 
7199 No match
7201 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
7202     XYabcdY
7203  0: XYabcdY
7204  1: a
7205  2: b
7206  3: c
7207  4: d
7208  5: Y
7210 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
7211     XYabcdY
7212  0: XYabcdY
7213  1: a
7214  2: b
7215  3: <unset>
7216  4: <unset>
7217  5: c
7218  6: d
7219  7: Y
7221 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
7222     XYabcdY
7223  0: XYabcdY
7224  1: a
7225  2: b
7226  3: <unset>
7227  4: <unset>
7228  5: c
7229  6: d
7230  7: Y
7232 /(?'abc'\w+):\k<abc>{2}/
7233     a:aaxyz
7234  0: a:aa
7235  1: a
7236     ab:ababxyz
7237  0: ab:abab
7238  1: ab
7239     ** Failers
7240 No match
7241     a:axyz
7242 No match
7243     ab:abxyz
7244 No match
7246 /(?'abc'\w+):\g{abc}{2}/
7247     a:aaxyz
7248  0: a:aa
7249  1: a
7250     ab:ababxyz
7251  0: ab:abab
7252  1: ab
7253     ** Failers
7254 No match
7255     a:axyz
7256 No match
7257     ab:abxyz
7258 No match
7260 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
7261     abd
7262  0: abd
7263  1: a
7264     ce
7265  0: ce
7267 /^(a.)\g-1Z/
7268     aXaXZ
7269  0: aXaXZ
7270  1: aX
7272 /^(a.)\g{-1}Z/
7273     aXaXZ
7274  0: aXaXZ
7275  1: aX
7277 /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
7278     abcd
7279  0: ab
7281 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
7282   (?(DEFINE)
7283   (?<NAME_PAT>[a-z]+)
7284   (?<ADDRESS_PAT>\d+)
7285   )/x
7286     metcalfe 33
7287  0: metcalfe 33
7288  1: metcalfe
7289  2: 33
7291 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
7292     1.2.3.4
7293  0: 1.2.3.4
7294  1: <unset>
7295  2: .4
7296     131.111.10.206
7297  0: 131.111.10.206
7298  1: <unset>
7299  2: .206
7300     10.0.0.0
7301  0: 10.0.0.0
7302  1: <unset>
7303  2: .0
7304     ** Failers
7305 No match
7306     10.6
7307 No match
7308     455.3.4.5
7309 No match
7311 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
7312     1.2.3.4
7313  0: 1.2.3.4
7314  1: .4
7315     131.111.10.206
7316  0: 131.111.10.206
7317  1: .206
7318     10.0.0.0
7319  0: 10.0.0.0
7320  1: .0
7321     ** Failers
7322 No match
7323     10.6
7324 No match
7325     455.3.4.5
7326 No match
7328 /^(\w++|\s++)*$/
7329     now is the time for all good men to come to the aid of the party
7330  0: now is the time for all good men to come to the aid of the party
7331  1: party
7332     *** Failers
7333 No match
7334     this is not a line with only words and spaces!
7335 No match
7337 /(\d++)(\w)/
7338     12345a
7339  0: 12345a
7340  1: 12345
7341  2: a
7342     *** Failers
7343 No match
7344     12345+
7345 No match
7347 /a++b/
7348     aaab
7349  0: aaab
7351 /(a++b)/
7352     aaab
7353  0: aaab
7354  1: aaab
7356 /(a++)b/
7357     aaab
7358  0: aaab
7359  1: aaa
7361 /([^()]++|\([^()]*\))+/
7362     ((abc(ade)ufh()()x
7363  0: abc(ade)ufh()()x
7364  1: x
7366 /\(([^()]++|\([^()]+\))+\)/
7367     (abc)
7368  0: (abc)
7369  1: abc
7370     (abc(def)xyz)
7371  0: (abc(def)xyz)
7372  1: xyz
7373     *** Failers
7374 No match
7375     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7376 No match
7378 /^([^()]|\((?1)*\))*$/
7379     abc
7380  0: abc
7381  1: c
7382     a(b)c
7383  0: a(b)c
7384  1: c
7385     a(b(c))d
7386  0: a(b(c))d
7387  1: d
7388     *** Failers)
7389 No match
7390     a(b(c)d
7391 No match
7393 /^>abc>([^()]|\((?1)*\))*<xyz<$/
7394    >abc>123<xyz<
7395  0: >abc>123<xyz<
7396  1: 3
7397    >abc>1(2)3<xyz<
7398  0: >abc>1(2)3<xyz<
7399  1: 3
7400    >abc>(1(2)3)<xyz<
7401  0: >abc>(1(2)3)<xyz<
7402  1: (1(2)3)
7404 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
7405     1221
7406  0: 1221
7407  1: 1221
7408  2: 1
7409     Satanoscillatemymetallicsonatas
7410  0: Satanoscillatemymetallicsonatas
7411  1: <unset>
7412  2: <unset>
7413  3: Satanoscillatemymetallicsonatas
7414  4: S
7415     AmanaplanacanalPanama
7416  0: AmanaplanacanalPanama
7417  1: <unset>
7418  2: <unset>
7419  3: AmanaplanacanalPanama
7420  4: A
7421     AblewasIereIsawElba
7422  0: AblewasIereIsawElba
7423  1: <unset>
7424  2: <unset>
7425  3: AblewasIereIsawElba
7426  4: A
7427     *** Failers
7428 No match
7429     Thequickbrownfox
7430 No match
7432 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
7433     12
7434  0: 12
7435  1: 12
7436     (((2+2)*-3)-7)
7437  0: (((2+2)*-3)-7)
7438  1: (((2+2)*-3)-7)
7439  2: -
7440     -12
7441  0: -12
7442  1: -12
7443     *** Failers
7444 No match
7445     ((2+2)*-3)-7)
7446 No match
7448 /^(x(y|(?1){2})z)/
7449     xyz
7450  0: xyz
7451  1: xyz
7452  2: y
7453     xxyzxyzz
7454  0: xxyzxyzz
7455  1: xxyzxyzz
7456  2: xyzxyz
7457     *** Failers
7458 No match
7459     xxyzz
7460 No match
7461     xxyzxyzxyzz
7462 No match
7464 /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
7465     <>
7466  0: <>
7467  1: <>
7468  2: <>
7469     <abcd>
7470  0: <abcd>
7471  1: <abcd>
7472  2: <abcd>
7473     <abc <123> hij>
7474  0: <abc <123> hij>
7475  1: <abc <123> hij>
7476  2: <abc <123> hij>
7477     <abc <def> hij>
7478  0: <def>
7479  1: <def>
7480  2: <def>
7481     <abc<>def>
7482  0: <abc<>def>
7483  1: <abc<>def>
7484  2: <abc<>def>
7485     <abc<>
7486  0: <>
7487  1: <>
7488  2: <>
7489     *** Failers
7490 No match
7491     <abc
7492 No match
7494 /^a+(*FAIL)/
7495     aaaaaa
7496 No match
7497     
7498 /a+b?c+(*FAIL)/
7499     aaabccc
7500 No match
7502 /a+b?(*PRUNE)c+(*FAIL)/
7503     aaabccc
7504 No match
7506 /a+b?(*COMMIT)c+(*FAIL)/
7507     aaabccc
7508 No match
7509     
7510 /a+b?(*SKIP)c+(*FAIL)/
7511     aaabcccaaabccc
7512 No match
7514 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7515     aaaxxxxxx
7516  0: aaaxxxxxx
7517     aaa++++++ 
7518  0: aaa
7519     bbbxxxxx
7520  0: bbbxxxxx
7521     bbb+++++ 
7522  0: bbb
7523     cccxxxx
7524  0: cccxxxx
7525     ccc++++ 
7526  0: ccc
7527     dddddddd   
7528  0: ddd
7530 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7531     aaaxxxxxx
7532  0: aaaxxxxxx
7533  1: aaaxxxxxx
7534     aaa++++++ 
7535  0: aaa
7536  1: aaa
7537     bbbxxxxx
7538  0: bbbxxxxx
7539  1: bbbxxxxx
7540     bbb+++++ 
7541  0: bbb
7542  1: bbb
7543     cccxxxx
7544  0: cccxxxx
7545  1: cccxxxx
7546     ccc++++ 
7547  0: ccc
7548  1: ccc
7549     dddddddd   
7550  0: ddd
7551  1: ddd
7553 /a+b?(*THEN)c+(*FAIL)/
7554     aaabccc
7555 No match
7557 /(A (A|B(*ACCEPT)|C) D)(E)/x
7558     AB
7559  0: AB
7560  1: AB
7561  2: B
7562     ABX
7563  0: AB
7564  1: AB
7565  2: B
7566     AADE
7567  0: AADE
7568  1: AAD
7569  2: A
7570  3: E
7571     ACDE
7572  0: ACDE
7573  1: ACD
7574  2: C
7575  3: E
7576     ** Failers
7577 No match
7578     AD 
7579 No match
7580         
7581 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
7582     1221
7583  0: 1221
7584  1: 1221
7585  2: 1
7586     Satan, oscillate my metallic sonatas!
7587  0: Satan, oscillate my metallic sonatas!
7588  1: <unset>
7589  2: <unset>
7590  3: Satan, oscillate my metallic sonatas
7591  4: S
7592     A man, a plan, a canal: Panama!
7593  0: A man, a plan, a canal: Panama!
7594  1: <unset>
7595  2: <unset>
7596  3: A man, a plan, a canal: Panama
7597  4: A
7598     Able was I ere I saw Elba.
7599  0: Able was I ere I saw Elba.
7600  1: <unset>
7601  2: <unset>
7602  3: Able was I ere I saw Elba
7603  4: A
7604     *** Failers
7605 No match
7606     The quick brown fox
7607 No match
7609 /^((.)(?1)\2|.)$/
7610     a
7611  0: a
7612  1: a
7613     aba
7614  0: aba
7615  1: aba
7616  2: a
7617     aabaa  
7618  0: aabaa
7619  1: aabaa
7620  2: a
7621     abcdcba 
7622  0: abcdcba
7623  1: abcdcba
7624  2: a
7625     pqaabaaqp  
7626  0: pqaabaaqp
7627  1: pqaabaaqp
7628  2: p
7629     ablewasiereisawelba
7630  0: ablewasiereisawelba
7631  1: ablewasiereisawelba
7632  2: a
7633     rhubarb
7634 No match
7635     the quick brown fox  
7636 No match
7638 /(a)(?<=b(?1))/
7639     baz
7640  0: a
7641  1: a
7642     ** Failers
7643 No match
7644     caz  
7645 No match
7646     
7647 /(?<=b(?1))(a)/
7648     zbaaz
7649  0: a
7650  1: a
7651     ** Failers
7652 No match
7653     aaa  
7654 No match
7655     
7656 /(?<X>a)(?<=b(?&X))/
7657     baz
7658  0: a
7659  1: a
7661 /^(?|(abc)|(def))\1/
7662     abcabc
7663  0: abcabc
7664  1: abc
7665     defdef 
7666  0: defdef
7667  1: def
7668     ** Failers
7669 No match
7670     abcdef
7671 No match
7672     defabc   
7673 No match
7674     
7675 /^(?|(abc)|(def))(?1)/
7676     abcabc
7677  0: abcabc
7678  1: abc
7679     defabc
7680  0: defabc
7681  1: def
7682     ** Failers
7683 No match
7684     defdef
7685 No match
7686     abcdef    
7687 No match
7689 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
7690     a\"aaaaa
7691  0: a"aaaaa
7692  1: "
7693  2: <unset>
7694  3: "
7695     b\"aaaaa 
7696  0: b"aaaaa
7697  1: <unset>
7698  2: <unset>
7699  3: <unset>
7700  4: "
7701  5: <unset>
7702  6: "
7703     ** Failers 
7704 No match
7705     b\"11111
7706 No match
7708 /(?:(?1)|B)(A(*F)|C)/
7709     ABCD
7710  0: BC
7711  1: C
7712     CCD
7713  0: CC
7714  1: C
7715     ** Failers
7716 No match
7717     CAD   
7718 No match
7720 /^(?:(?1)|B)(A(*F)|C)/
7721     CCD
7722  0: CC
7723  1: C
7724     BCD 
7725  0: BC
7726  1: C
7727     ** Failers
7728 No match
7729     ABCD
7730 No match
7731     CAD
7732 No match
7733     BAD    
7734 No match
7736 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
7737     AAD
7738  0: AA
7739  1: A
7740     ACD
7741  0: ACD
7742  1: C
7743     BAD
7744  0: BA
7745  1: A
7746     BCD
7747  0: BCD
7748  1: C
7749     BAX  
7750  0: BA
7751  1: A
7752     ** Failers
7753 No match
7754     ACX
7755 No match
7756     ABC   
7757 No match
7759 /(?(DEFINE)(A))B(?1)C/
7760     BAC
7761  0: BAC
7763 /(?(DEFINE)((A)\2))B(?1)C/
7764     BAAC
7765  0: BAAC
7767 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
7768     (ab(cd)ef)
7769  0: (ab(cd)ef)
7770  1: (ab(cd)ef)
7771  2: ef
7773 /^(?!a(*SKIP)b)/
7774     ac
7775  0: 
7776     
7777 /^(?=a(*SKIP)b|ac)/
7778     ** Failers
7779 No match
7780     ac
7781 No match
7782     
7783 /^(?=a(*THEN)b|ac)/
7784     ac
7785  0: 
7786     
7787 /^(?=a(*PRUNE)b)/
7788     ab  
7789  0: 
7790     ** Failers 
7791 No match
7792     ac
7793 No match
7795 /^(?=a(*ACCEPT)b)/
7796     ac
7797  0: 
7799 /^(?(?!a(*SKIP)b))/
7800     ac
7801  0: 
7803 /(?>a\Kb)/
7804     ab
7805  0: b
7807 /((?>a\Kb))/
7808     ab
7809  0: b
7810  1: ab
7812 /(a\Kb)/
7813     ab
7814  0: b
7815  1: ab
7816     
7817 /^a\Kcz|ac/
7818     ac
7819  0: ac
7820     
7821 /(?>a\Kbz|ab)/
7822     ab 
7823  0: ab
7825 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
7826     ab
7827  0: b
7829 /^([^()]|\((?1)*\))*$/
7830     a(b)c
7831  0: a(b)c
7832  1: c
7833     a(b(c)d)e 
7834  0: a(b(c)d)e
7835  1: e
7837 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
7838     0
7839  0: 0
7840  1: 0
7841     00
7842  0: 00
7843  1: 00
7844  2: 0
7845     0000  
7846  0: 0000
7847  1: 0000
7848  2: 0
7850 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
7851     0
7852  0: 0
7853  1: 0
7854  2: 0
7855     00
7856  0: 0
7857  1: 0
7858  2: 0
7859     0000  
7860  0: 0
7861  1: 0
7862  2: 0
7864 /--- This one does fail, as expected, in Perl. It needs the complex item at the
7865      end of the pattern. A single letter instead of (B|D) makes it not fail,
7866      which I think is a Perl bug. --- /
7868 /A(*COMMIT)(B|D)/
7869     ACABX
7870 No match
7872 /--- Check the use of names for failure ---/
7874 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
7875     ** Failers
7876 No match
7877     AC
7878 No match, mark = A
7879     CB    
7880 No match, mark = B
7881     
7882 /--- Force no study, otherwise mark is not seen. The studied version is in
7883      test 2 because it isn't Perl-compatible. ---/
7885 /(*MARK:A)(*SKIP:B)(C|X)/KSS
7886     C
7887  0: C
7888  1: C
7889 MK: A
7890     D
7891 No match, mark = A
7892      
7893 /^(A(*THEN:A)B|C(*THEN:B)D)/K
7894     ** Failers
7895 No match
7896     CB    
7897 No match, mark = B
7899 /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
7900     CB    
7901 No match, mark = B
7902     
7903 /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
7904     CB    
7905 No match, mark = B
7906     
7907 /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
7908 that we have to have something complicated such as (B|Z) at the end because,
7909 for Perl, a simple character somehow causes an unwanted optimization to mess
7910 with the handling of backtracking verbs. ---/
7912 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
7913     AAAC
7914  0: AC
7915     
7916 /--- Test skipping over a non-matching mark. ---/
7918 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
7919     AAAC
7920  0: AC
7921     
7922 /--- Check shorthand for MARK ---/
7924 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
7925     AAAC
7926  0: AC
7928 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
7930 /(*:A)A+(*SKIP:A)(B|Z)/KSS
7931     AAAC
7932 No match, mark = A
7934 /--- This should succeed, as a non-existent skip name disables the skip ---/ 
7936 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
7937     AAAC
7938  0: AC
7940 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
7941     AAAC
7942  0: AC
7943 MK: B
7945 /--- COMMIT at the start of a pattern should act like an anchor. Again, 
7946 however, we need the complication for Perl. ---/
7948 /(*COMMIT)(A|P)(B|P)(C|P)/
7949     ABCDEFG
7950  0: ABC
7951  1: A
7952  2: B
7953  3: C
7954     ** Failers
7955 No match
7956     DEFGABC  
7957 No match
7959 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
7961 /(\w+)(?>b(*COMMIT))\w{2}/
7962     abbb
7963  0: abbb
7964  1: a
7966 /(\w+)b(*COMMIT)\w{2}/
7967     abbb
7968 No match
7970 /--- Check opening parens in comment when seeking forward reference. ---/ 
7972 /(?&t)(?#()(?(DEFINE)(?<t>a))/
7973     bac
7974  0: a
7976 /--- COMMIT should override THEN ---/
7978 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
7979   yes
7980 No match
7982 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
7983   yes
7984 No match
7986 /b?(*SKIP)c/
7987     bc
7988  0: bc
7989     abc
7990  0: bc
7991    
7992 /(*SKIP)bc/
7993     a
7994 No match
7996 /(*SKIP)b/
7997     a 
7998 No match
8000 /(?P<abn>(?P=abn)xxx|)+/
8001     xxx
8002  0: 
8003  1: 
8005 /(?i:([^b]))(?1)/
8006     aa
8007  0: aa
8008  1: a
8009     aA     
8010  0: aA
8011  1: a
8012     ** Failers
8013  0: **
8014  1: *
8015     ab
8016 No match
8017     aB
8018 No match
8019     Ba
8020 No match
8021     ba
8022 No match
8024 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
8025     aaaaaaX
8026  0: aaaaaaX
8027     ** Failers 
8028 No match
8029     aaaaaa 
8030 No match
8032 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
8033     aaaaaaX
8034  0: aaaaaaX
8035     aaaaaa 
8036  0: aaaaaa
8038 /^(a)*+(\w)/
8039     aaaaX
8040  0: aaaaX
8041  1: a
8042  2: X
8043     YZ 
8044  0: Y
8045  1: <unset>
8046  2: Y
8047     ** Failers 
8048 No match
8049     aaaa
8050 No match
8052 /^(?:a)*+(\w)/
8053     aaaaX
8054  0: aaaaX
8055  1: X
8056     YZ 
8057  0: Y
8058  1: Y
8059     ** Failers 
8060 No match
8061     aaaa
8062 No match
8064 /^(a)++(\w)/
8065     aaaaX
8066  0: aaaaX
8067  1: a
8068  2: X
8069     ** Failers 
8070 No match
8071     aaaa
8072 No match
8073     YZ 
8074 No match
8076 /^(?:a)++(\w)/
8077     aaaaX
8078  0: aaaaX
8079  1: X
8080     ** Failers 
8081 No match
8082     aaaa
8083 No match
8084     YZ 
8085 No match
8087 /^(a)?+(\w)/
8088     aaaaX
8089  0: aa
8090  1: a
8091  2: a
8092     YZ 
8093  0: Y
8094  1: <unset>
8095  2: Y
8097 /^(?:a)?+(\w)/
8098     aaaaX
8099  0: aa
8100  1: a
8101     YZ 
8102  0: Y
8103  1: Y
8105 /^(a){2,}+(\w)/
8106     aaaaX
8107  0: aaaaX
8108  1: a
8109  2: X
8110     ** Failers
8111 No match
8112     aaa
8113 No match
8114     YZ 
8115 No match
8117 /^(?:a){2,}+(\w)/
8118     aaaaX
8119  0: aaaaX
8120  1: X
8121     ** Failers
8122 No match
8123     aaa
8124 No match
8125     YZ 
8126 No match
8128 /(a|)*(?1)b/
8129     b
8130  0: b
8131  1: 
8132     ab
8133  0: ab
8134  1: 
8135     aab  
8136  0: aab
8137  1: 
8139 /(a)++(?1)b/
8140     ** Failers
8141 No match
8142     ab 
8143 No match
8144     aab
8145 No match
8147 /(a)*+(?1)b/
8148     ** Failers
8149 No match
8150     ab
8151 No match
8152     aab  
8153 No match
8155 /(?1)(?:(b)){0}/
8156     b
8157  0: b
8159 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
8160     foo(bar(baz)+baz(bop))
8161  0: foo(bar(baz)+baz(bop))
8162  1: foo(bar(baz)+baz(bop))
8163  2: (bar(baz)+baz(bop))
8164  3: bar(baz)+baz(bop)
8166 /(A (A|B(*ACCEPT)|C) D)(E)/x
8167     AB
8168  0: AB
8169  1: AB
8170  2: B
8172 /\A.*?(?:a|b(*THEN)c)/
8173     ba
8174  0: ba
8176 /\A.*?(?:a|bc)/
8177     ba
8178  0: ba
8180 /\A.*?(a|b(*THEN)c)/
8181     ba
8182  0: ba
8183  1: a
8185 /\A.*?(a|bc)/
8186     ba
8187  0: ba
8188  1: a
8190 /\A.*?(?:a|b(*THEN)c)++/
8191     ba
8192  0: ba
8194 /\A.*?(?:a|bc)++/
8195     ba
8196  0: ba
8198 /\A.*?(a|b(*THEN)c)++/
8199     ba
8200  0: ba
8201  1: a
8203 /\A.*?(a|bc)++/
8204     ba
8205  0: ba
8206  1: a
8208 /\A.*?(?:a|b(*THEN)c|d)/
8209     ba
8210  0: ba
8212 /\A.*?(?:a|bc|d)/
8213     ba
8214  0: ba
8216 /(?:(b))++/
8217     beetle
8218  0: b
8219  1: b
8221 /(?(?=(a(*ACCEPT)z))a)/
8222     a
8223  0: a
8224  1: a
8226 /^(a)(?1)+ab/
8227     aaaab
8228  0: aaaab
8229  1: a
8230     
8231 /^(a)(?1)++ab/
8232     aaaab
8233 No match
8235 /^(?=a(*:M))aZ/K
8236     aZbc
8237  0: aZ
8238 MK: M
8240 /^(?!(*:M)b)aZ/K
8241     aZbc
8242  0: aZ
8244 /(?(DEFINE)(a))?b(?1)/
8245     backgammon
8246  0: ba
8248 /^\N+/
8249     abc\ndef
8250  0: abc
8251     
8252 /^\N{1,}/
8253     abc\ndef 
8254  0: abc
8256 /(?(R)a+|(?R)b)/
8257     aaaabcde
8258  0: aaaab
8260 /(?(R)a+|((?R))b)/
8261     aaaabcde
8262  0: aaaab
8263  1: aaaa
8265 /((?(R)a+|(?1)b))/
8266     aaaabcde
8267  0: aaaab
8268  1: aaaab
8270 /((?(R1)a+|(?1)b))/
8271     aaaabcde
8272  0: aaaab
8273  1: aaaab
8275 /a(*:any 
8276 name)/K
8277     abc
8278  0: a
8279 MK: any \x0aname
8280     
8281 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
8282     a
8283  0: a
8284     ba
8285  0: a
8286     bba 
8287  0: a
8288     
8289 /--- Checking revised (*THEN) handling ---/ 
8291 /--- Capture ---/
8293 /^.*? (a(*THEN)b) c/x
8294     aabc
8295 No match
8297 /^.*? (a(*THEN)b|(*F)) c/x
8298     aabc
8299  0: aabc
8300  1: ab
8302 /^.*? ( (a(*THEN)b) | (*F) ) c/x
8303     aabc
8304  0: aabc
8305  1: ab
8306  2: ab
8308 /^.*? ( (a(*THEN)b) ) c/x
8309     aabc
8310 No match
8312 /--- Non-capture ---/
8314 /^.*? (?:a(*THEN)b) c/x
8315     aabc
8316 No match
8318 /^.*? (?:a(*THEN)b|(*F)) c/x
8319     aabc
8320  0: aabc
8322 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
8323     aabc
8324  0: aabc
8326 /^.*? (?: (?:a(*THEN)b) ) c/x
8327     aabc
8328 No match
8330 /--- Atomic ---/
8332 /^.*? (?>a(*THEN)b) c/x
8333     aabc
8334 No match
8336 /^.*? (?>a(*THEN)b|(*F)) c/x
8337     aabc
8338  0: aabc
8340 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
8341     aabc
8342  0: aabc
8344 /^.*? (?> (?>a(*THEN)b) ) c/x
8345     aabc
8346 No match
8348 /--- Possessive capture ---/
8350 /^.*? (a(*THEN)b)++ c/x
8351     aabc
8352 No match
8354 /^.*? (a(*THEN)b|(*F))++ c/x
8355     aabc
8356  0: aabc
8357  1: ab
8359 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
8360     aabc
8361  0: aabc
8362  1: ab
8363  2: ab
8365 /^.*? ( (a(*THEN)b)++ )++ c/x
8366     aabc
8367 No match
8369 /--- Possessive non-capture ---/
8371 /^.*? (?:a(*THEN)b)++ c/x
8372     aabc
8373 No match
8375 /^.*? (?:a(*THEN)b|(*F))++ c/x
8376     aabc
8377  0: aabc
8379 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
8380     aabc
8381  0: aabc
8383 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
8384     aabc
8385 No match
8386     
8387 /--- Condition assertion ---/
8389 /^(?(?=a(*THEN)b)ab|ac)/
8390     ac
8391  0: ac
8393 /--- Condition ---/
8395 /^.*?(?(?=a)a|b(*THEN)c)/
8396     ba
8397 No match
8399 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
8400     ba
8401  0: ba
8403 /^.*?(?(?=a)a(*THEN)b|c)/
8404     ac
8405 No match
8407 /--- Assertion ---/
8409 /^.*(?=a(*THEN)b)/ 
8410     aabc
8411  0: a
8413 /------------------------------/
8415 /(?>a(*:m))/imsxSK 
8416     a
8417  0: a
8418 MK: m
8420 /(?>(a)(*:m))/imsxSK 
8421     a
8422  0: a
8423  1: a
8424 MK: m
8426 /(?<=a(*ACCEPT)b)c/
8427     xacd
8428  0: c
8430 /(?<=(a(*ACCEPT)b))c/
8431     xacd
8432  0: c
8433  1: a
8435 /(?<=(a(*COMMIT)b))c/
8436     xabcd
8437  0: c
8438  1: ab
8439     ** Failers 
8440 No match
8441     xacd
8442 No match
8443     
8444 /(?<!a(*FAIL)b)c/
8445     xcd
8446  0: c
8447     acd 
8448  0: c
8450 /(?<=a(*:N)b)c/K
8451     xabcd
8452  0: c
8453 MK: N
8454     
8455 /(?<=a(*PRUNE)b)c/
8456     xabcd 
8457  0: c
8459 /(?<=a(*SKIP)b)c/
8460     xabcd 
8461  0: c
8463 /(?<=a(*THEN)b)c/
8464     xabcd 
8465  0: c
8467 /(a)(?2){2}(.)/
8468     abcd
8469  0: abcd
8470  1: a
8471  2: d
8473 /(*MARK:A)(*PRUNE:B)(C|X)/KS
8474     C
8475  0: C
8476  1: C
8477 MK: B
8478     D 
8479 No match, mark = B
8481 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
8482     C
8483  0: C
8484  1: C
8485 MK: B
8486     D 
8487 No match, mark = B
8489 /(*MARK:A)(*THEN:B)(C|X)/KS
8490     C
8491  0: C
8492  1: C
8493 MK: B
8494     D 
8495 No match, mark = B
8497 /(*MARK:A)(*THEN:B)(C|X)/KSY
8498     C
8499  0: C
8500  1: C
8501 MK: B
8502     D 
8503 No match, mark = B
8505 /(*MARK:A)(*THEN:B)(C|X)/KSS
8506     C
8507  0: C
8508  1: C
8509 MK: B
8510     D 
8511 No match, mark = B
8513 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
8515 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
8516     AAAC
8517 No match, mark = A
8519 /--- Same --/
8521 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
8522     AAAC
8523 No match, mark = B
8525 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
8526     AAAC
8527 No match, mark = A
8529 /--- This should fail, as a null name is the same as no name ---/
8531 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
8532     AAAC
8533 No match, mark = A
8535 /--- A check on what happens after hitting a mark and them bumping along to
8536 something that does not even start. Perl reports tags after the failures here, 
8537 though it does not when the individual letters are made into something 
8538 more complicated. ---/
8540 /A(*:A)B|XX(*:B)Y/K
8541     AABC
8542  0: AB
8543 MK: A
8544     XXYZ 
8545  0: XXY
8546 MK: B
8547     ** Failers
8548 No match
8549     XAQQ  
8550 No match, mark = A
8551     XAQQXZZ  
8552 No match, mark = A
8553     AXQQQ 
8554 No match, mark = A
8555     AXXQQQ 
8556 No match, mark = B
8557     
8558 /^(A(*THEN:A)B|C(*THEN:B)D)/K
8559     AB
8560  0: AB
8561  1: AB
8562 MK: A
8563     CD
8564  0: CD
8565  1: CD
8566 MK: B
8567     ** Failers
8568 No match
8569     AC
8570 No match, mark = A
8571     CB    
8572 No match, mark = B
8573     
8574 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
8575     AB
8576  0: AB
8577  1: AB
8578 MK: A
8579     CD
8580  0: CD
8581  1: CD
8582 MK: B
8583     ** Failers
8584 No match
8585     AC
8586 No match, mark = A
8587     CB    
8588 No match, mark = B
8589     
8590 /--- An empty name does not pass back an empty string. It is the same as if no
8591 name were given. ---/ 
8593 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
8594     AB
8595  0: AB
8596  1: AB
8597     CD 
8598  0: CD
8599  1: CD
8600 MK: B
8602 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
8603     
8604 /A(*PRUNE:A)B/K
8605     ACAB
8606  0: AB
8607 MK: A
8609 /--- Mark names can be duplicated ---/
8611 /A(*:A)B|X(*:A)Y/K
8612     AABC
8613  0: AB
8614 MK: A
8615     XXYZ 
8616  0: XY
8617 MK: A
8618     
8619 /b(*:m)f|a(*:n)w/K
8620     aw 
8621  0: aw
8622 MK: n
8623     ** Failers 
8624 No match, mark = n
8625     abc
8626 No match, mark = m
8628 /b(*:m)f|aw/K
8629     abaw
8630  0: aw
8631     ** Failers 
8632 No match
8633     abc
8634 No match, mark = m
8635     abax 
8636 No match, mark = m
8638 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
8639     AAAC
8640  0: AAC
8642 /a(*PRUNE:X)bc|qq/KY
8643     ** Failers
8644 No match, mark = X
8645     axy
8646 No match, mark = X
8648 /a(*THEN:X)bc|qq/KY
8649     ** Failers
8650 No match, mark = X
8651     axy
8652 No match, mark = X
8654 /(?=a(*MARK:A)b)..x/K
8655     abxy
8656  0: abx
8657 MK: A
8658     ** Failers
8659 No match
8660     abpq  
8661 No match
8663 /(?=a(*MARK:A)b)..(*:Y)x/K
8664     abxy
8665  0: abx
8666 MK: Y
8667     ** Failers
8668 No match
8669     abpq  
8670 No match
8672 /(?=a(*PRUNE:A)b)..x/K
8673     abxy
8674  0: abx
8675 MK: A
8676     ** Failers
8677 No match
8678     abpq  
8679 No match
8681 /(?=a(*PRUNE:A)b)..(*:Y)x/K
8682     abxy
8683  0: abx
8684 MK: Y
8685     ** Failers
8686 No match
8687     abpq  
8688 No match
8690 /(?=a(*THEN:A)b)..x/K
8691     abxy
8692  0: abx
8693 MK: A
8694     ** Failers
8695 No match
8696     abpq  
8697 No match
8699 /(?=a(*THEN:A)b)..(*:Y)x/K
8700     abxy
8701  0: abx
8702 MK: Y
8703     ** Failers
8704 No match
8705     abpq  
8706 No match
8708 /(another)?(\1?)test/
8709     hello world test
8710  0: test
8711  1: <unset>
8712  2: 
8714 /(another)?(\1+)test/
8715     hello world test
8716 No match
8718 /(a(*COMMIT)b){0}a(?1)|aac/
8719     aac
8720  0: aac
8722 /(?!a(*COMMIT)b)ac|cd/
8723     ac
8724  0: ac
8726 /((?:a?)*)*c/
8727   aac   
8728  0: aac
8729  1: 
8731 /((?>a?)*)*c/
8732   aac   
8733  0: aac
8734  1: 
8736 /(?>.*?a)(?<=ba)/
8737     aba
8738  0: ba
8740 /(?:.*?a)(?<=ba)/
8741     aba
8742  0: aba
8744 /.*?a(*PRUNE)b/
8745     aab
8746  0: ab
8748 /.*?a(*PRUNE)b/s
8749     aab
8750  0: ab
8752 /^a(*PRUNE)b/s
8753     aab
8754 No match
8756 /.*?a(*SKIP)b/
8757     aab
8758  0: ab
8760 /(?>.*?a)b/s
8761     aab
8762  0: ab
8764 /(?>.*?a)b/
8765     aab
8766  0: ab
8768 /(?>^a)b/s
8769     aab
8770 No match
8772 /(?>.*?)(?<=(abcd)|(wxyz))/
8773     alphabetabcd
8774  0: 
8775  1: abcd
8776     endingwxyz 
8777  0: 
8778  1: <unset>
8779  2: wxyz
8781 /(?>.*)(?<=(abcd)|(wxyz))/
8782     alphabetabcd
8783  0: alphabetabcd
8784  1: abcd
8785     endingwxyz 
8786  0: endingwxyz
8787  1: <unset>
8788  2: wxyz
8790 "(?>.*)foo"
8791     abcdfooxyz
8792 No match
8793     
8794 "(?>.*?)foo"
8795     abcdfooxyz
8796  0: foo
8798 /-- End of testinput1 --/