stdlib: Implement introsort for qsort (BZ 19305)
[glibc.git] / posix / PCRE.tests
blobda63b866371e7fcdf05bd902828090659394cbe9
1 # PCRE version 4.4 21-August-2003
3 # Tests taken from PCRE and modified to suit glibc regex.
5 # PCRE LICENCE
6 # ------------
8 # PCRE is a library of functions to support regular expressions whose syntax
9 # and semantics are as close as possible to those of the Perl 5 language.
11 # Written by: Philip Hazel <ph10@cam.ac.uk>
13 # University of Cambridge Computing Service,
14 # Cambridge, England. Phone: +44 1223 334714.
16 # Copyright (c) 1997-2003 University of Cambridge
18 # Permission is granted to anyone to use this software for any purpose on any
19 # computer system, and to redistribute it freely, subject to the following
20 # restrictions:
22 # 1. This software is distributed in the hope that it will be useful,
23 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
24 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 # 2. The origin of this software must not be misrepresented, either by
27 #    explicit claim or by omission. In practice, this means that if you use
28 #    PCRE in software that you distribute to others, commercially or
29 #    otherwise, you must put a sentence like this
31 #      Regular expression support is provided by the PCRE library package,
32 #      which is open source software, written by Philip Hazel, and copyright
33 #      by the University of Cambridge, England.
35 #    somewhere reasonably visible in your documentation and in any relevant
36 #    files or online help data or similar. A reference to the ftp site for
37 #    the source, that is, to
39 #      ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
41 #    should also be given in the documentation. However, this condition is not
42 #    intended to apply to whole chains of software. If package A includes PCRE,
43 #    it must acknowledge it, but if package B is software that includes package
44 #    A, the condition is not imposed on package B (unless it uses PCRE
45 #    independently).
47 # 3. Altered versions must be plainly marked as such, and must not be
48 #    misrepresented as being the original software.
50 # 4. If PCRE is embedded in any software that is released under the GNU
51 #   General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
52 #   then the terms of that licence shall supersede any condition above with
53 #   which it is incompatible.
55 # The documentation for PCRE, supplied in the "doc" directory, is distributed
56 # under the same terms as the software itself.
58 # End
61 /the quick brown fox/
62     the quick brown fox
63  0: the quick brown fox
64     The quick brown FOX
65 No match
66     What do you know about the quick brown fox?
67  0: the quick brown fox
68     What do you know about THE QUICK BROWN FOX?
69 No match
71 /The quick brown fox/i
72     the quick brown fox
73  0: the quick brown fox
74     The quick brown FOX
75  0: The quick brown FOX
76     What do you know about the quick brown fox?
77  0: the quick brown fox
78     What do you know about THE QUICK BROWN FOX?
79  0: THE QUICK BROWN FOX
81 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
82     abxyzpqrrrabbxyyyypqAzz
83  0: abxyzpqrrrabbxyyyypqAzz
84     abxyzpqrrrabbxyyyypqAzz
85  0: abxyzpqrrrabbxyyyypqAzz
86     aabxyzpqrrrabbxyyyypqAzz
87  0: aabxyzpqrrrabbxyyyypqAzz
88     aaabxyzpqrrrabbxyyyypqAzz
89  0: aaabxyzpqrrrabbxyyyypqAzz
90     aaaabxyzpqrrrabbxyyyypqAzz
91  0: aaaabxyzpqrrrabbxyyyypqAzz
92     abcxyzpqrrrabbxyyyypqAzz
93  0: abcxyzpqrrrabbxyyyypqAzz
94     aabcxyzpqrrrabbxyyyypqAzz
95  0: aabcxyzpqrrrabbxyyyypqAzz
96     aaabcxyzpqrrrabbxyyyypAzz
97  0: aaabcxyzpqrrrabbxyyyypAzz
98     aaabcxyzpqrrrabbxyyyypqAzz
99  0: aaabcxyzpqrrrabbxyyyypqAzz
100     aaabcxyzpqrrrabbxyyyypqqAzz
101  0: aaabcxyzpqrrrabbxyyyypqqAzz
102     aaabcxyzpqrrrabbxyyyypqqqAzz
103  0: aaabcxyzpqrrrabbxyyyypqqqAzz
104     aaabcxyzpqrrrabbxyyyypqqqqAzz
105  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
106     aaabcxyzpqrrrabbxyyyypqqqqqAzz
107  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
108     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
109  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
110     aaaabcxyzpqrrrabbxyyyypqAzz
111  0: aaaabcxyzpqrrrabbxyyyypqAzz
112     abxyzzpqrrrabbxyyyypqAzz
113  0: abxyzzpqrrrabbxyyyypqAzz
114     aabxyzzzpqrrrabbxyyyypqAzz
115  0: aabxyzzzpqrrrabbxyyyypqAzz
116     aaabxyzzzzpqrrrabbxyyyypqAzz
117  0: aaabxyzzzzpqrrrabbxyyyypqAzz
118     aaaabxyzzzzpqrrrabbxyyyypqAzz
119  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
120     abcxyzzpqrrrabbxyyyypqAzz
121  0: abcxyzzpqrrrabbxyyyypqAzz
122     aabcxyzzzpqrrrabbxyyyypqAzz
123  0: aabcxyzzzpqrrrabbxyyyypqAzz
124     aaabcxyzzzzpqrrrabbxyyyypqAzz
125  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
126     aaaabcxyzzzzpqrrrabbxyyyypqAzz
127  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
128     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
129  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
130     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
131  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
132     aaabcxyzpqrrrabbxyyyypABzz
133  0: aaabcxyzpqrrrabbxyyyypABzz
134     aaabcxyzpqrrrabbxyyyypABBzz
135  0: aaabcxyzpqrrrabbxyyyypABBzz
136     >>>aaabxyzpqrrrabbxyyyypqAzz
137  0: aaabxyzpqrrrabbxyyyypqAzz
138     >aaaabxyzpqrrrabbxyyyypqAzz
139  0: aaaabxyzpqrrrabbxyyyypqAzz
140     >>>>abcxyzpqrrrabbxyyyypqAzz
141  0: abcxyzpqrrrabbxyyyypqAzz
142     *** Failers
143 No match
144     abxyzpqrrabbxyyyypqAzz
145 No match
146     abxyzpqrrrrabbxyyyypqAzz
147 No match
148     abxyzpqrrrabxyyyypqAzz
149 No match
150     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
151 No match
152     aaaabcxyzzzzpqrrrabbbxyyypqAzz
153 No match
154     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
155 No match
157 /^(abc){1,2}zz/
158     abczz
159  0: abczz
160  1: abc
161     abcabczz
162  0: abcabczz
163  1: abc
164     *** Failers
165 No match
166     zz
167 No match
168     abcabcabczz
169 No match
170     >>abczz
171 No match
173 /^(b+|a){1,2}c/
174     bc
175  0: bc
176  1: b
177     bbc
178  0: bbc
179  1: bb
180     bbbc
181  0: bbbc
182  1: bbb
183     bac
184  0: bac
185  1: a
186     bbac
187  0: bbac
188  1: a
189     aac
190  0: aac
191  1: a
192     abbbbbbbbbbbc
193  0: abbbbbbbbbbbc
194  1: bbbbbbbbbbb
195     bbbbbbbbbbbac
196  0: bbbbbbbbbbbac
197  1: a
198     *** Failers
199 No match
200     aaac
201 No match
202     abbbbbbbbbbbac
203 No match
205 /^[]cde]/
206     ]thing
207  0: ]
208     cthing
209  0: c
210     dthing
211  0: d
212     ething
213  0: e
214     *** Failers
215 No match
216     athing
217 No match
218     fthing
219 No match
221 /^[^]cde]/
222     athing
223  0: a
224     fthing
225  0: f
226     *** Failers
227  0: *
228     ]thing
229 No match
230     cthing
231 No match
232     dthing
233 No match
234     ething
235 No match
237 /^[0-9]+$/
238     0
239  0: 0
240     1
241  0: 1
242     2
243  0: 2
244     3
245  0: 3
246     4
247  0: 4
248     5
249  0: 5
250     6
251  0: 6
252     7
253  0: 7
254     8
255  0: 8
256     9
257  0: 9
258     10
259  0: 10
260     100
261  0: 100
262     *** Failers
263 No match
264     abc
265 No match
267 /^.*nter/
268     enter
269  0: enter
270     inter
271  0: inter
272     uponter
273  0: uponter
275 /^xxx[0-9]+$/
276     xxx0
277  0: xxx0
278     xxx1234
279  0: xxx1234
280     *** Failers
281 No match
282     xxx
283 No match
285 /^.+[0-9][0-9][0-9]$/
286     x123
287  0: x123
288     xx123
289  0: xx123
290     123456
291  0: 123456
292     *** Failers
293 No match
294     123
295 No match
296     x1234
297  0: x1234
299 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
300     abc!pqr=apquxz.ixr.zzz.ac.uk
301  0: abc!pqr=apquxz.ixr.zzz.ac.uk
302  1: abc
303  2: pqr
304     *** Failers
305 No match
306     !pqr=apquxz.ixr.zzz.ac.uk
307 No match
308     abc!=apquxz.ixr.zzz.ac.uk
309 No match
310     abc!pqr=apquxz:ixr.zzz.ac.uk
311 No match
312     abc!pqr=apquxz.ixr.zzz.ac.ukk
313 No match
316     Well, we need a colon: somewhere
317  0: :
318     *** Fail if we don't
319 No match
321 /([0-9a-f:]+)$/i
322     0abc
323  0: 0abc
324  1: 0abc
325     abc
326  0: abc
327  1: abc
328     fed
329  0: fed
330  1: fed
331     E
332  0: E
333  1: E
334     ::
335  0: ::
336  1: ::
337     5f03:12C0::932e
338  0: 5f03:12C0::932e
339  1: 5f03:12C0::932e
340     fed def
341  0: def
342  1: def
343     Any old stuff
344  0: ff
345  1: ff
346     *** Failers
347 No match
348     0zzz
349 No match
350     gzzz
351 No match
352     Any old rubbish
353 No match
355 /^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/
356     .1.2.3
357  0: .1.2.3
358  1: 1
359  2: 2
360  3: 3
361     A.12.123.0
362  0: A.12.123.0
363  1: 12
364  2: 123
365  3: 0
366     *** Failers
367 No match
368     .1.2.3333
369 No match
370     1.2.3
371 No match
372     1234.2.3
373 No match
375 /^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
376     1 IN SOA non-sp1 non-sp2(
377  0: 1 IN SOA non-sp1 non-sp2(
378  1: 1
379  2: non-sp1
380  3: non-sp2
381     1    IN    SOA    non-sp1    non-sp2   (
382  0: 1    IN    SOA    non-sp1    non-sp2   (
383  1: 1
384  2: non-sp1
385  3: non-sp2
386     *** Failers
387 No match
388     1IN SOA non-sp1 non-sp2(
389 No match
391 /^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/
392     a.
393  0: a.
394     Z.
395  0: Z.
396     2.
397  0: 2.
398     ab-c.pq-r.
399  0: ab-c.pq-r.
400  1: .pq-r
401     sxk.zzz.ac.uk.
402  0: sxk.zzz.ac.uk.
403  1: .uk
404     x-.y-.
405  0: x-.y-.
406  1: .y-
407     *** Failers
408 No match
409     -abc.peq.
410 No match
412 /^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/
413     *.a
414  0: *.a
415     *.b0-a
416  0: *.b0-a
417  1: 0-a
418     *.c3-b.c
419  0: *.c3-b.c
420  1: 3-b
421  2: .c
422     *.c-a.b-c
423  0: *.c-a.b-c
424  1: -a
425  2: .b-c
426  3: -c
427     *** Failers
428 No match
429     *.0
430 No match
431     *.a-
432 No match
433     *.a-b.c-
434 No match
435     *.c-a.0-c
436 No match
438 /^[0-9a-f](\.[0-9a-f])*$/i
439     a.b.c.d
440  0: a.b.c.d
441  1: .d
442     A.B.C.D
443  0: A.B.C.D
444  1: .D
445     a.b.c.1.2.3.C
446  0: a.b.c.1.2.3.C
447  1: .C
449 /^".*"\s*(;.*)?$/
450     "1234"
451  0: "1234"
452     "abcd" ;
453  0: "abcd" ;
454  1: ;
455     "" ; rhubarb
456  0: "" ; rhubarb
457  1: ; rhubarb
458     *** Failers
459 No match
460     "1234" : things
461 No match
463 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
464     abcdefhijklm
465  0: abcdefhijklm
466  1: abc
467  2: bc
468  3: c
469  4: def
470  5: ef
471  6: f
472  7: hij
473  8: ij
474  9: j
475 10: klm
476 11: lm
477 12: m
479 /^a*\w/
480     z
481  0: z
482     az
483  0: az
484     aaaz
485  0: aaaz
486     a
487  0: a
488     aa
489  0: aa
490     aaaa
491  0: aaaa
492     a+
493  0: a
494     aa+
495  0: aa
497 /^a+\w/
498     az
499  0: az
500     aaaz
501  0: aaaz
502     aa
503  0: aa
504     aaaa
505  0: aaaa
506     aa+
507  0: aa
509 /^[0-9]{8}\w{2,}/
510     1234567890
511  0: 1234567890
512     12345678ab
513  0: 12345678ab
514     12345678__
515  0: 12345678__
516     *** Failers
517 No match
518     1234567
519 No match
521 /^[aeiou0-9]{4,5}$/
522     uoie
523  0: uoie
524     1234
525  0: 1234
526     12345
527  0: 12345
528     aaaaa
529  0: aaaaa
530     *** Failers
531 No match
532     123456
533 No match
535 /\`(abc|def)=(\1){2,3}\'/
536     abc=abcabc
537  0: abc=abcabc
538  1: abc
539  2: abc
540     def=defdefdef
541  0: def=defdefdef
542  1: def
543  2: def
544     *** Failers
545 No match
546     abc=defdef
547 No match
549 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
550     cataract cataract23
551  0: cataract cataract23
552  1: cataract
553  2: aract
554  3: ract
555  4: 
556  5: 3
557     catatonic catatonic23
558  0: catatonic catatonic23
559  1: catatonic
560  2: atonic
561  3: tonic
562  4: 
563  5: 3
564     caterpillar caterpillar23
565  0: caterpillar caterpillar23
566  1: caterpillar
567  2: erpillar
568  3: <unset>
569  4: 
570  5: 3
573 /^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]/
574     From abcd  Mon Sep 01 12:33:02 1997
575  0: From abcd  Mon Sep 01 12:33
576  1: abcd
578 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/
579     From abcd  Mon Sep 01 12:33:02 1997
580  0: From abcd  Mon Sep 01 12:33
581  1: Sep 
582     From abcd  Mon Sep  1 12:33:02 1997
583  0: From abcd  Mon Sep  1 12:33
584  1: Sep  
585     *** Failers
586 No match
587     From abcd  Sep 01 12:33:02 1997
588 No match
590 /^(a)\1{2,3}(.)/
591     aaab
592  0: aaab
593  1: a
594  2: b
595     aaaab
596  0: aaaab
597  1: a
598  2: b
599     aaaaab
600  0: aaaaa
601  1: a
602  2: a
603     aaaaaab
604  0: aaaaa
605  1: a
606  2: a
608 /^[ab]{1,3}(ab*|b)/
609     aabbbbb
610  0: aabbbbb
611  1: abbbbb
613 /^(cow|)\1(bell)/
614     cowcowbell
615  0: cowcowbell
616  1: cow
617  2: bell
618     bell
619  0: bell
620  1: 
621  2: bell
622     *** Failers
623 No match
624     cowbell
625 No match
627 /^(a|)\1+b/
628     aab
629  0: aab
630  1: a
631     aaaab
632  0: aaaab
633  1: a
634     b
635  0: b
636  1: 
637     *** Failers
638 No match
639     ab
640 No match
642 /^(a|)\1{2}b/
643     aaab
644  0: aaab
645  1: a
646     b
647  0: b
648  1: 
649     *** Failers
650 No match
651     ab
652 No match
653     aab
654 No match
655     aaaab
656 No match
658 /^(a|)\1{2,3}b/
659     aaab
660  0: aaab
661  1: a
662     aaaab
663  0: aaaab
664  1: a
665     b
666  0: b
667  1: 
668     *** Failers
669 No match
670     ab
671 No match
672     aab
673 No match
674     aaaaab
675 No match
677 /ab{1,3}bc/
678     abbbbc
679  0: abbbbc
680     abbbc
681  0: abbbc
682     abbc
683  0: abbc
684     *** Failers
685 No match
686     abc
687 No match
688     abbbbbc
689 No match
691 /([^.]*)\.([^:]*):[T ]+(.*)/
692     track1.title:TBlah blah blah
693  0: track1.title:TBlah blah blah
694  1: track1
695  2: title
696  3: Blah blah blah
698 /([^.]*)\.([^:]*):[T ]+(.*)/i
699     track1.title:TBlah blah blah
700  0: track1.title:TBlah blah blah
701  1: track1
702  2: title
703  3: Blah blah blah
705 /([^.]*)\.([^:]*):[t ]+(.*)/i
706     track1.title:TBlah blah blah
707  0: track1.title:TBlah blah blah
708  1: track1
709  2: title
710  3: Blah blah blah
712 /^abc$/
713     abc
714  0: abc
715     *** Failers
716 No match
718 /[-az]+/
719     az-
720  0: az-
721     *** Failers
722  0: a
723     b
724 No match
726 /[az-]+/
727     za-
728  0: za-
729     *** Failers
730  0: a
731     b
732 No match
734 /[a-z]+/
735     abcdxyz
736  0: abcdxyz
738 /[0-9-]+/
739     12-34
740  0: 12-34
741     *** Failers
742 No match
743     aaa
744 No match
746 /(abc)\1/i
747     abcabc
748  0: abcabc
749  1: abc
750     ABCabc
751  0: ABCabc
752  1: ABC
753     abcABC
754  0: abcABC
755  1: abc
757 /a{0}bc/
758     bc
759  0: bc
761 /^([^a])([^b])([^c]*)([^d]{3,4})/
762     baNOTccccd
763  0: baNOTcccc
764  1: b
765  2: a
766  3: NOT
767  4: cccc
768     baNOTcccd
769  0: baNOTccc
770  1: b
771  2: a
772  3: NOT
773  4: ccc
774     baNOTccd
775  0: baNOTcc
776  1: b
777  2: a
778  3: NO
779  4: Tcc
780     bacccd
781  0: baccc
782  1: b
783  2: a
784  3: 
785  4: ccc
786     *** Failers
787  0: *** Failers
788  1: *
789  2: *
790  3: * Fail
791  4: ers
792     anything
793 No match
794     baccd
795 No match
797 /[^a]/
798     Abc
799  0: A
801 /[^a]/i
802     Abc 
803  0: b
805 /[^a]+/
806     AAAaAbc
807  0: AAA
809 /[^a]+/i
810     AAAaAbc
811  0: bc
813 /[^k]$/
814     abc
815  0: c
816     *** Failers
817  0: s
818     abk
819 No match
821 /[^k]{2,3}$/
822     abc
823  0: abc
824     kbc
825  0: bc
826     kabc
827  0: abc
828     *** Failers
829  0: ers
830     abk
831 No match
832     akb
833 No match
834     akk 
835 No match
837 /^[0-9]{8,}@.+[^k]$/
838     12345678@a.b.c.d
839  0: 12345678@a.b.c.d
840     123456789@x.y.z
841  0: 123456789@x.y.z
842     *** Failers
843 No match
844     12345678@x.y.uk
845 No match
846     1234567@a.b.c.d       
847 No match
849 /(a)\1{8,}/
850     aaaaaaaaa
851  0: aaaaaaaaa
852  1: a
853     aaaaaaaaaa
854  0: aaaaaaaaaa
855  1: a
856     *** Failers
857 No match
858     aaaaaaa   
859 No match
861 /[^a]/
862     aaaabcd
863  0: b
864     aaAabcd 
865  0: A
867 /[^a]/i
868     aaaabcd
869  0: b
870     aaAabcd 
871  0: b
873 /[^az]/
874     aaaabcd
875  0: b
876     aaAabcd 
877  0: A
879 /[^az]/i
880     aaaabcd
881  0: b
882     aaAabcd 
883  0: b
885 /P[^*]TAIRE[^*]{1,6}LL/
886     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
887  0: PSTAIREISLL
889 /P[^*]TAIRE[^*]{1,}LL/
890     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
891  0: PSTAIREISLL
893 /(\.[0-9][0-9][1-9]?)[0-9]+/
894     1.230003938
895  0: .230003938
896  1: .23
897     1.875000282   
898  0: .875000282
899  1: .875
900     1.235  
901  0: .235
902  1: .23
903                   
904 /\b(foo)\s+(\w+)/i
905     Food is on the foo table
906  0: foo table
907  1: foo
908  2: table
909     
910 /foo(.*)bar/
911     The food is under the bar in the barn.
912  0: food is under the bar in the bar
913  1: d is under the bar in the 
914     
915 /(.*)([0-9]*)/
916     I have 2 numbers: 53147
917  0: I have 2 numbers: 53147
918  1: I have 2 numbers: 53147
919  2: 
920     
921 /(.*)([0-9]+)/
922     I have 2 numbers: 53147
923  0: I have 2 numbers: 53147
924  1: I have 2 numbers: 5314
925  2: 7
927 /(.*)([0-9]+)$/
928     I have 2 numbers: 53147
929  0: I have 2 numbers: 53147
930  1: I have 2 numbers: 5314
931  2: 7
933 /(.*)\b([0-9]+)$/
934     I have 2 numbers: 53147
935  0: I have 2 numbers: 53147
936  1: I have 2 numbers: 
937  2: 53147
939 /(.*[^0-9])([0-9]+)$/
940     I have 2 numbers: 53147
941  0: I have 2 numbers: 53147
942  1: I have 2 numbers: 
943  2: 53147
945 /[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
946     01/01/2000
947  0: 01/01/2000
949 /^(a){0,0}/
950     bcd
951  0: 
952     abc
953  0: 
954     aab     
955  0: 
957 /^(a){0,1}/
958     bcd
959  0: 
960     abc
961  0: a
962  1: a
963     aab  
964  0: a
965  1: a
967 /^(a){0,2}/
968     bcd
969  0: 
970     abc
971  0: a
972  1: a
973     aab  
974  0: aa
975  1: a
977 /^(a){0,3}/
978     bcd
979  0: 
980     abc
981  0: a
982  1: a
983     aab
984  0: aa
985  1: a
986     aaa   
987  0: aaa
988  1: a
990 /^(a){0,}/
991     bcd
992  0: 
993     abc
994  0: a
995  1: a
996     aab
997  0: aa
998  1: a
999     aaa
1000  0: aaa
1001  1: a
1002     aaaaaaaa    
1003  0: aaaaaaaa
1004  1: a
1006 /^(a){1,1}/
1007     bcd
1008 No match
1009     abc
1010  0: a
1011  1: a
1012     aab  
1013  0: a
1014  1: a
1016 /^(a){1,2}/
1017     bcd
1018 No match
1019     abc
1020  0: a
1021  1: a
1022     aab  
1023  0: aa
1024  1: a
1026 /^(a){1,3}/
1027     bcd
1028 No match
1029     abc
1030  0: a
1031  1: a
1032     aab
1033  0: aa
1034  1: a
1035     aaa   
1036  0: aaa
1037  1: a
1039 /^(a){1,}/
1040     bcd
1041 No match
1042     abc
1043  0: a
1044  1: a
1045     aab
1046  0: aa
1047  1: a
1048     aaa
1049  0: aaa
1050  1: a
1051     aaaaaaaa    
1052  0: aaaaaaaa
1053  1: a
1055 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1056     123456654321
1057  0: 123456654321
1059 /^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
1060     123456654321 
1061  0: 123456654321
1063 /^[abc]{12}/
1064     abcabcabcabc
1065  0: abcabcabcabc
1066     
1067 /^[a-c]{12}/
1068     abcabcabcabc
1069  0: abcabcabcabc
1070     
1071 /^(a|b|c){12}/
1072     abcabcabcabc 
1073  0: abcabcabcabc
1074  1: c
1076 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1077     n
1078  0: n
1079     *** Failers 
1080 No match
1081     z 
1082 No match
1084 /abcde{0,0}/
1085     abcd
1086  0: abcd
1087     *** Failers
1088 No match
1089     abce  
1090 No match
1092 /ab[cd]{0,0}e/
1093     abe
1094  0: abe
1095     *** Failers
1096 No match
1097     abcde 
1098 No match
1099     
1100 /ab(c){0,0}d/
1101     abd
1102  0: abd
1103     *** Failers
1104 No match
1105     abcd   
1106 No match
1108 /a(b*)/
1109     a
1110  0: a
1111  1: 
1112     ab
1113  0: ab
1114  1: b
1115     abbbb
1116  0: abbbb
1117  1: bbbb
1118     *** Failers
1119  0: a
1120  1: 
1121     bbbbb    
1122 No match
1123     
1124 /ab[0-9]{0}e/
1125     abe
1126  0: abe
1127     *** Failers
1128 No match
1129     ab1e   
1130 No match
1131     
1132 /(A|B)*CD/
1133     CD 
1134  0: CD
1136 /(AB)*\1/
1137     ABABAB
1138  0: ABABAB
1139  1: AB
1140     
1141 /([0-9]+)(\w)/
1142     12345a
1143  0: 12345a
1144  1: 12345
1145  2: a
1146     12345+ 
1147  0: 12345
1148  1: 1234
1149  2: 5
1151 /(abc|)+/
1152     abc
1153  0: abc
1154  1: abc
1155     abcabc
1156  0: abcabc
1157  1: abc
1158     abcabcabc
1159  0: abcabcabc
1160  1: abc
1161     xyz      
1162  0: 
1163  1: 
1165 /([a]*)*/
1166     a
1167  0: a
1168  1: a
1169     aaaaa 
1170  0: aaaaa
1171  1: aaaaa
1173 /([ab]*)*/
1174     a
1175  0: a
1176  1: a
1177     b
1178  0: b
1179  1: b
1180     ababab
1181  0: ababab
1182  1: ababab
1183     aaaabcde
1184  0: aaaab
1185  1: aaaab
1186     bbbb    
1187  0: bbbb
1188  1: bbbb
1190 /([^a]*)*/
1191     b
1192  0: b
1193  1: b
1194     bbbb
1195  0: bbbb
1196  1: bbbb
1197     aaa   
1198  0: 
1200 /([^ab]*)*/
1201     cccc
1202  0: cccc
1203  1: cccc
1204     abab  
1205  0: 
1207 /abc/
1208     abc
1209  0: abc
1210     xabcy
1211  0: abc
1212     ababc
1213  0: abc
1214     *** Failers
1215 No match
1216     xbc
1217 No match
1218     axc
1219 No match
1220     abx
1221 No match
1223 /ab*c/
1224     abc
1225  0: abc
1227 /ab*bc/
1228     abc
1229  0: abc
1230     abbc
1231  0: abbc
1232     abbbbc
1233  0: abbbbc
1235 /.{1}/
1236     abbbbc
1237  0: a
1239 /.{3,4}/
1240     abbbbc
1241  0: abbb
1243 /ab{0,}bc/
1244     abbbbc
1245  0: abbbbc
1247 /ab+bc/
1248     abbc
1249  0: abbc
1250     *** Failers
1251 No match
1252     abc
1253 No match
1254     abq
1255 No match
1257 /ab+bc/
1258     abbbbc
1259  0: abbbbc
1261 /ab{1,}bc/
1262     abbbbc
1263  0: abbbbc
1265 /ab{1,3}bc/
1266     abbbbc
1267  0: abbbbc
1269 /ab{3,4}bc/
1270     abbbbc
1271  0: abbbbc
1273 /ab{4,5}bc/
1274     *** Failers
1275 No match
1276     abq
1277 No match
1278     abbbbc
1279 No match
1281 /ab?bc/
1282     abbc
1283  0: abbc
1284     abc
1285  0: abc
1287 /ab{0,1}bc/
1288     abc
1289  0: abc
1291 /ab?c/
1292     abc
1293  0: abc
1295 /ab{0,1}c/
1296     abc
1297  0: abc
1299 /^abc$/
1300     abc
1301  0: abc
1302     *** Failers
1303 No match
1304     abbbbc
1305 No match
1306     abcc
1307 No match
1309 /^abc/
1310     abcc
1311  0: abc
1313 /abc$/
1314     aabc
1315  0: abc
1316     *** Failers
1317 No match
1318     aabc
1319  0: abc
1320     aabcd
1321 No match
1324     abc
1325  0: 
1328     abc
1329  0: 
1331 /a.c/
1332     abc
1333  0: abc
1334     axc
1335  0: axc
1337 /a.*c/
1338     axyzc
1339  0: axyzc
1341 /a[bc]d/
1342     abd
1343  0: abd
1344     *** Failers
1345 No match
1346     axyzd
1347 No match
1348     abc
1349 No match
1351 /a[b-d]e/
1352     ace
1353  0: ace
1355 /a[b-d]/
1356     aac
1357  0: ac
1359 /a[-b]/
1360     a-
1361  0: a-
1363 /a[b-]/
1364     a-
1365  0: a-
1367 /a[]]b/
1368     a]b
1369  0: a]b
1371 /a[^bc]d/
1372     aed
1373  0: aed
1374     *** Failers
1375 No match
1376     abd
1377 No match
1378     abd
1379 No match
1381 /a[^-b]c/
1382     adc
1383  0: adc
1385 /a[^]b]c/
1386     adc
1387  0: adc
1388     *** Failers
1389 No match
1390     a-c
1391  0: a-c
1392     a]c
1393 No match
1395 /\ba\b/
1396     a-
1397  0: a
1398     -a
1399  0: a
1400     -a-
1401  0: a
1403 /\by\b/
1404     *** Failers
1405 No match
1406     xy
1407 No match
1408     yz
1409 No match
1410     xyz
1411 No match
1413 /\Ba\B/
1414     *** Failers
1415  0: a
1416     a-
1417 No match
1418     -a
1419 No match
1420     -a-
1421 No match
1423 /\By\b/
1424     xy
1425  0: y
1427 /\by\B/
1428     yz
1429  0: y
1431 /\By\B/
1432     xyz
1433  0: y
1435 /\w/
1436     a
1437  0: a
1439 /\W/
1440     -
1441  0: -
1442     *** Failers
1443  0: *
1444     -
1445  0: -
1446     a
1447 No match
1449 /a\sb/
1450     a b
1451  0: a b
1453 /a\Sb/
1454     a-b
1455  0: a-b
1456     *** Failers
1457 No match
1458     a-b
1459  0: a-b
1460     a b
1461 No match
1463 /[0-9]/
1464     1
1465  0: 1
1467 /[^0-9]/
1468     -
1469  0: -
1470     *** Failers
1471  0: *
1472     -
1473  0: -
1474     1
1475 No match
1477 /ab|cd/
1478     abc
1479  0: ab
1480     abcd
1481  0: ab
1483 /()ef/
1484     def
1485  0: ef
1486  1: 
1488 /a\(b/
1489     a(b
1490  0: a(b
1492 /a\(*b/
1493     ab
1494  0: ab
1495     a((b
1496  0: a((b
1498 /((a))/
1499     abc
1500  0: a
1501  1: a
1502  2: a
1504 /(a)b(c)/
1505     abc
1506  0: abc
1507  1: a
1508  2: c
1510 /a+b+c/
1511     aabbabc
1512  0: abc
1514 /a{1,}b{1,}c/
1515     aabbabc
1516  0: abc
1518 /(a+|b)*/
1519     ab
1520  0: ab
1521  1: b
1523 /(a+|b){0,}/
1524     ab
1525  0: ab
1526  1: b
1528 /(a+|b)+/
1529     ab
1530  0: ab
1531  1: b
1533 /(a+|b){1,}/
1534     ab
1535  0: ab
1536  1: b
1538 /(a+|b)?/
1539     ab
1540  0: a
1541  1: a
1543 /(a+|b){0,1}/
1544     ab
1545  0: a
1546  1: a
1548 /[^ab]*/
1549     cde
1550  0: cde
1552 /abc/
1553     *** Failers
1554 No match
1555     b
1556 No match
1557     
1559 /a*/
1560     
1562 /([abc])*d/
1563     abbbcd
1564  0: abbbcd
1565  1: c
1567 /([abc])*bcd/
1568     abcd
1569  0: abcd
1570  1: a
1572 /a|b|c|d|e/
1573     e
1574  0: e
1576 /(a|b|c|d|e)f/
1577     ef
1578  0: ef
1579  1: e
1581 /abcd*efg/
1582     abcdefg
1583  0: abcdefg
1585 /ab*/
1586     xabyabbbz
1587  0: ab
1588     xayabbbz
1589  0: a
1591 /(ab|cd)e/
1592     abcde
1593  0: cde
1594  1: cd
1596 /[abhgefdc]ij/
1597     hij
1598  0: hij
1600 /(abc|)ef/
1601     abcdef
1602  0: ef
1603  1: 
1605 /(a|b)c*d/
1606     abcd
1607  0: bcd
1608  1: b
1610 /(ab|ab*)bc/
1611     abc
1612  0: abc
1613  1: a
1615 /a([bc]*)c*/
1616     abc
1617  0: abc
1618  1: bc
1620 /a([bc]*)(c*d)/
1621     abcd
1622  0: abcd
1623  1: bc
1624  2: d
1626 /a([bc]+)(c*d)/
1627     abcd
1628  0: abcd
1629  1: bc
1630  2: d
1632 /a([bc]*)(c+d)/
1633     abcd
1634  0: abcd
1635  1: b
1636  2: cd
1638 /a[bcd]*dcdcde/
1639     adcdcde
1640  0: adcdcde
1642 /a[bcd]+dcdcde/
1643     *** Failers
1644 No match
1645     abcde
1646 No match
1647     adcdcde
1648 No match
1650 /(ab|a)b*c/
1651     abc
1652  0: abc
1653  1: ab
1655 /((a)(b)c)(d)/
1656     abcd
1657  0: abcd
1658  1: abc
1659  2: a
1660  3: b
1661  4: d
1663 /[a-zA-Z_][a-zA-Z0-9_]*/
1664     alpha
1665  0: alpha
1667 /^a(bc+|b[eh])g|.h$/
1668     abh
1669  0: bh
1671 /(bc+d$|ef*g.|h?i(j|k))/
1672     effgz
1673  0: effgz
1674  1: effgz
1675     ij
1676  0: ij
1677  1: ij
1678  2: j
1679     reffgz
1680  0: effgz
1681  1: effgz
1682     *** Failers
1683 No match
1684     effg
1685 No match
1686     bcdd
1687 No match
1689 /((((((((((a))))))))))/
1690     a
1691  0: a
1692  1: a
1693  2: a
1694  3: a
1695  4: a
1696  5: a
1697  6: a
1698  7: a
1699  8: a
1700  9: a
1701 10: a
1703 /((((((((((a))))))))))\9/
1704     aa
1705  0: aa
1706  1: a
1707  2: a
1708  3: a
1709  4: a
1710  5: a
1711  6: a
1712  7: a
1713  8: a
1714  9: a
1715 10: a
1717 /(((((((((a)))))))))/
1718     a
1719  0: a
1720  1: a
1721  2: a
1722  3: a
1723  4: a
1724  5: a
1725  6: a
1726  7: a
1727  8: a
1728  9: a
1730 /multiple words of text/
1731     *** Failers
1732 No match
1733     aa
1734 No match
1735     uh-uh
1736 No match
1738 /multiple words/
1739     multiple words, yeah
1740  0: multiple words
1742 /(.*)c(.*)/
1743     abcde
1744  0: abcde
1745  1: ab
1746  2: de
1748 /\((.*), (.*)\)/
1749     (a, b)
1750  0: (a, b)
1751  1: a
1752  2: b
1754 /abcd/
1755     abcd
1756  0: abcd
1758 /a(bc)d/
1759     abcd
1760  0: abcd
1761  1: bc
1763 /a[-]?c/
1764     ac
1765  0: ac
1767 /(abc)\1/
1768     abcabc
1769  0: abcabc
1770  1: abc
1772 /([a-c]*)\1/
1773     abcabc
1774  0: abcabc
1775  1: abc
1777 /abc/i
1778     ABC
1779  0: ABC
1780     XABCY
1781  0: ABC
1782     ABABC
1783  0: ABC
1784     *** Failers
1785 No match
1786     aaxabxbaxbbx
1787 No match
1788     XBC
1789 No match
1790     AXC
1791 No match
1792     ABX
1793 No match
1795 /ab*c/i
1796     ABC
1797  0: ABC
1799 /ab*bc/i
1800     ABC
1801  0: ABC
1802     ABBC
1803  0: ABBC
1805 /ab+bc/i
1806     *** Failers
1807 No match
1808     ABC
1809 No match
1810     ABQ
1811 No match
1813 /ab+bc/i
1814     ABBBBC
1815  0: ABBBBC
1817 /^abc$/i
1818     ABC
1819  0: ABC
1820     *** Failers
1821 No match
1822     ABBBBC
1823 No match
1824     ABCC
1825 No match
1827 /^abc/i
1828     ABCC
1829  0: ABC
1831 /abc$/i
1832     AABC
1833  0: ABC
1835 /^/i
1836     ABC
1837  0: 
1839 /$/i
1840     ABC
1841  0: 
1843 /a.c/i
1844     ABC
1845  0: ABC
1846     AXC
1847  0: AXC
1849 /a.*c/i
1850     *** Failers
1851 No match
1852     AABC
1853  0: AABC
1854     AXYZD
1855 No match
1857 /a[bc]d/i
1858     ABD
1859  0: ABD
1861 /a[b-d]e/i
1862     ACE
1863  0: ACE
1864     *** Failers
1865 No match
1866     ABC
1867 No match
1868     ABD
1869 No match
1871 /a[b-d]/i
1872     AAC
1873  0: AC
1875 /a[-b]/i
1876     A-
1877  0: A-
1879 /a[b-]/i
1880     A-
1881  0: A-
1883 /a[]]b/i
1884     A]B
1885  0: A]B
1887 /a[^bc]d/i
1888     AED
1889  0: AED
1891 /a[^-b]c/i
1892     ADC
1893  0: ADC
1894     *** Failers
1895 No match
1896     ABD
1897 No match
1898     A-C
1899 No match
1901 /a[^]b]c/i
1902     ADC
1903  0: ADC
1905 /ab|cd/i
1906     ABC
1907  0: AB
1908     ABCD
1909  0: AB
1911 /()ef/i
1912     DEF
1913  0: EF
1914  1: 
1916 /$b/i
1917     *** Failers
1918 No match
1919     A]C
1920 No match
1921     B
1922 No match
1924 /a\(b/i
1925     A(B
1926  0: A(B
1928 /a\(*b/i
1929     AB
1930  0: AB
1931     A((B
1932  0: A((B
1934 /((a))/i
1935     ABC
1936  0: A
1937  1: A
1938  2: A
1940 /(a)b(c)/i
1941     ABC
1942  0: ABC
1943  1: A
1944  2: C
1946 /a+b+c/i
1947     AABBABC
1948  0: ABC
1950 /a{1,}b{1,}c/i
1951     AABBABC
1952  0: ABC
1954 /(a+|b)*/i
1955     AB
1956  0: AB
1957  1: B
1959 /(a+|b){0,}/i
1960     AB
1961  0: AB
1962  1: B
1964 /(a+|b)+/i
1965     AB
1966  0: AB
1967  1: B
1969 /(a+|b){1,}/i
1970     AB
1971  0: AB
1972  1: B
1974 /(a+|b)?/i
1975     AB
1976  0: A
1977  1: A
1979 /(a+|b){0,1}/i
1980     AB
1981  0: A
1982  1: A
1984 /[^ab]*/i
1985     CDE
1986  0: CDE
1988 /([abc])*d/i
1989     ABBBCD
1990  0: ABBBCD
1991  1: C
1993 /([abc])*bcd/i
1994     ABCD
1995  0: ABCD
1996  1: A
1998 /a|b|c|d|e/i
1999     E
2000  0: E
2002 /(a|b|c|d|e)f/i
2003     EF
2004  0: EF
2005  1: E
2007 /abcd*efg/i
2008     ABCDEFG
2009  0: ABCDEFG
2011 /ab*/i
2012     XABYABBBZ
2013  0: AB
2014     XAYABBBZ
2015  0: A
2017 /(ab|cd)e/i
2018     ABCDE
2019  0: CDE
2020  1: CD
2022 /[abhgefdc]ij/i
2023     HIJ
2024  0: HIJ
2026 /^(ab|cd)e/i
2027     ABCDE
2028 No match
2030 /(abc|)ef/i
2031     ABCDEF
2032  0: EF
2033  1: 
2035 /(a|b)c*d/i
2036     ABCD
2037  0: BCD
2038  1: B
2040 /(ab|ab*)bc/i
2041     ABC
2042  0: ABC
2043  1: A
2045 /a([bc]*)c*/i
2046     ABC
2047  0: ABC
2048  1: BC
2050 /a([bc]*)(c*d)/i
2051     ABCD
2052  0: ABCD
2053  1: BC
2054  2: D
2056 /a([bc]+)(c*d)/i
2057     ABCD
2058  0: ABCD
2059  1: BC
2060  2: D
2062 /a([bc]*)(c+d)/i
2063     ABCD
2064  0: ABCD
2065  1: B
2066  2: CD
2068 /a[bcd]*dcdcde/i
2069     ADCDCDE
2070  0: ADCDCDE
2072 /a[bcd]+dcdcde/i
2074 /(ab|a)b*c/i
2075     ABC
2076  0: ABC
2077  1: AB
2079 /((a)(b)c)(d)/i
2080     ABCD
2081  0: ABCD
2082  1: ABC
2083  2: A
2084  3: B
2085  4: D
2087 /[a-zA-Z_][a-zA-Z0-9_]*/i
2088     ALPHA
2089  0: ALPHA
2091 /^a(bc+|b[eh])g|.h$/i
2092     ABH
2093  0: BH
2095 /(bc+d$|ef*g.|h?i(j|k))/i
2096     EFFGZ
2097  0: EFFGZ
2098  1: EFFGZ
2099     IJ
2100  0: IJ
2101  1: IJ
2102  2: J
2103     REFFGZ
2104  0: EFFGZ
2105  1: EFFGZ
2106     *** Failers
2107 No match
2108     ADCDCDE
2109 No match
2110     EFFG
2111 No match
2112     BCDD
2113 No match
2115 /((((((((((a))))))))))/i
2116     A
2117  0: A
2118  1: A
2119  2: A
2120  3: A
2121  4: A
2122  5: A
2123  6: A
2124  7: A
2125  8: A
2126  9: A
2127 10: A
2129 /((((((((((a))))))))))\9/i
2130     AA
2131  0: AA
2132  1: A
2133  2: A
2134  3: A
2135  4: A
2136  5: A
2137  6: A
2138  7: A
2139  8: A
2140  9: A
2141 10: A
2143 /(((((((((a)))))))))/i
2144     A
2145  0: A
2146  1: A
2147  2: A
2148  3: A
2149  4: A
2150  5: A
2151  6: A
2152  7: A
2153  8: A
2154  9: A
2156 /multiple words of text/i
2157     *** Failers
2158 No match
2159     AA
2160 No match
2161     UH-UH
2162 No match
2164 /multiple words/i
2165     MULTIPLE WORDS, YEAH
2166  0: MULTIPLE WORDS
2168 /(.*)c(.*)/i
2169     ABCDE
2170  0: ABCDE
2171  1: AB
2172  2: DE
2174 /\((.*), (.*)\)/i
2175     (A, B)
2176  0: (A, B)
2177  1: A
2178  2: B
2180 /abcd/i
2181     ABCD
2182  0: ABCD
2184 /a(bc)d/i
2185     ABCD
2186  0: ABCD
2187  1: BC
2189 /a[-]?c/i
2190     AC
2191  0: AC
2193 /(abc)\1/i
2194     ABCABC
2195  0: ABCABC
2196  1: ABC
2198 /([a-c]*)\1/i
2199     ABCABC
2200  0: ABCABC
2201  1: ABC
2203 /((foo)|(bar))*/
2204     foobar
2205  0: foobar
2206  1: bar
2207  2: foo
2208  3: bar
2210 /^(.+)?B/
2211     AB
2212  0: AB
2213  1: A
2215 /^([^a-z])|(\^)$/
2216     .
2217  0: .
2218  1: .
2220 /^[<>]&/
2221     <&OUT
2222  0: <&
2224 /^(){3,5}/
2225     abc
2226  0: 
2227  1: 
2229 /^(a+)*ax/
2230     aax
2231  0: aax
2232  1: a
2234 /^((a|b)+)*ax/
2235     aax
2236  0: aax
2237  1: a
2238  2: a
2240 /^((a|bc)+)*ax/
2241     aax
2242  0: aax
2243  1: a
2244  2: a
2246 /(a|x)*ab/
2247     cab
2248  0: ab
2250 /(a)*ab/
2251     cab
2252  0: ab
2254 /(ab)[0-9]\1/i
2255     Ab4ab
2256  0: Ab4ab
2257  1: Ab
2258     ab4Ab
2259  0: ab4Ab
2260  1: ab
2262 /foo\w*[0-9]{4}baz/
2263     foobar1234baz
2264  0: foobar1234baz
2266 /(\w+:)+/
2267     one:
2268  0: one:
2269  1: one:
2271 /((\w|:)+::)?(\w+)$/
2272     abcd
2273  0: abcd
2274  1: <unset>
2275  2: <unset>
2276  3: abcd
2277     xy:z:::abcd
2278  0: xy:z:::abcd
2279  1: xy:z:::
2280  2: :
2281  3: abcd
2283 /^[^bcd]*(c+)/
2284     aexycd
2285  0: aexyc
2286  1: c
2288 /(a*)b+/
2289     caab
2290  0: aab
2291  1: aa
2293 /((\w|:)+::)?(\w+)$/
2294     abcd
2295  0: abcd
2296  1: <unset>
2297  2: <unset>
2298  3: abcd
2299     xy:z:::abcd
2300  0: xy:z:::abcd
2301  1: xy:z:::
2302  2: :
2303  3: abcd
2304     *** Failers
2305  0: Failers
2306  1: <unset>
2307  2: <unset>
2308  3: Failers
2309     abcd:
2310 No match
2311     abcd:
2312 No match
2314 /^[^bcd]*(c+)/
2315     aexycd
2316  0: aexyc
2317  1: c
2319 /((Z)+|A)*/
2320     ZABCDEFG
2321  0: ZA
2322  1: A
2323  2: Z
2325 /(Z()|A)*/
2326     ZABCDEFG
2327  0: ZA
2328  1: A
2329  2: 
2331 /(Z(())|A)*/
2332     ZABCDEFG
2333  0: ZA
2334  1: A
2335  2: 
2336  3: 
2338 /(.*)[0-9]+\1/
2339     abc123abc
2340  0: abc123abc
2341  1: abc
2342     abc123bc 
2343  0: bc123bc
2344  1: bc
2346 /((.*))[0-9]+\1/
2347     abc123abc
2348  0: abc123abc
2349  1: abc
2350  2: abc
2351     abc123bc  
2352  0: bc123bc
2353  1: bc
2354  2: bc
2356 /^a{2,5}$/
2357     aa
2358  0: aa
2359     aaa
2360  0: aaa
2361     aaaa
2362  0: aaaa
2363     aaaaa
2364  0: aaaaa
2365     *** Failers
2366 No match
2367     a
2368 No match
2369     b
2370 No match
2371     aaaaab
2372 No match
2373     aaaaaa