[BZ #1877]
[glibc.git] / posix / PCRE.tests
blob0fb9cadafc91ddf39a42d048956ec9263634f579
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 /(a)|\1/
1778     a
1779  0: a
1780  1: a
1781     *** Failers
1782  0: a
1783  1: a
1784     ab
1785  0: a
1786  1: a
1787     x
1788 No match
1790 /abc/i
1791     ABC
1792  0: ABC
1793     XABCY
1794  0: ABC
1795     ABABC
1796  0: ABC
1797     *** Failers
1798 No match
1799     aaxabxbaxbbx
1800 No match
1801     XBC
1802 No match
1803     AXC
1804 No match
1805     ABX
1806 No match
1808 /ab*c/i
1809     ABC
1810  0: ABC
1812 /ab*bc/i
1813     ABC
1814  0: ABC
1815     ABBC
1816  0: ABBC
1818 /ab+bc/i
1819     *** Failers
1820 No match
1821     ABC
1822 No match
1823     ABQ
1824 No match
1826 /ab+bc/i
1827     ABBBBC
1828  0: ABBBBC
1830 /^abc$/i
1831     ABC
1832  0: ABC
1833     *** Failers
1834 No match
1835     ABBBBC
1836 No match
1837     ABCC
1838 No match
1840 /^abc/i
1841     ABCC
1842  0: ABC
1844 /abc$/i
1845     AABC
1846  0: ABC
1848 /^/i
1849     ABC
1850  0: 
1852 /$/i
1853     ABC
1854  0: 
1856 /a.c/i
1857     ABC
1858  0: ABC
1859     AXC
1860  0: AXC
1862 /a.*c/i
1863     *** Failers
1864 No match
1865     AABC
1866  0: AABC
1867     AXYZD
1868 No match
1870 /a[bc]d/i
1871     ABD
1872  0: ABD
1874 /a[b-d]e/i
1875     ACE
1876  0: ACE
1877     *** Failers
1878 No match
1879     ABC
1880 No match
1881     ABD
1882 No match
1884 /a[b-d]/i
1885     AAC
1886  0: AC
1888 /a[-b]/i
1889     A-
1890  0: A-
1892 /a[b-]/i
1893     A-
1894  0: A-
1896 /a[]]b/i
1897     A]B
1898  0: A]B
1900 /a[^bc]d/i
1901     AED
1902  0: AED
1904 /a[^-b]c/i
1905     ADC
1906  0: ADC
1907     *** Failers
1908 No match
1909     ABD
1910 No match
1911     A-C
1912 No match
1914 /a[^]b]c/i
1915     ADC
1916  0: ADC
1918 /ab|cd/i
1919     ABC
1920  0: AB
1921     ABCD
1922  0: AB
1924 /()ef/i
1925     DEF
1926  0: EF
1927  1: 
1929 /$b/i
1930     *** Failers
1931 No match
1932     A]C
1933 No match
1934     B
1935 No match
1937 /a\(b/i
1938     A(B
1939  0: A(B
1941 /a\(*b/i
1942     AB
1943  0: AB
1944     A((B
1945  0: A((B
1947 /((a))/i
1948     ABC
1949  0: A
1950  1: A
1951  2: A
1953 /(a)b(c)/i
1954     ABC
1955  0: ABC
1956  1: A
1957  2: C
1959 /a+b+c/i
1960     AABBABC
1961  0: ABC
1963 /a{1,}b{1,}c/i
1964     AABBABC
1965  0: ABC
1967 /(a+|b)*/i
1968     AB
1969  0: AB
1970  1: B
1972 /(a+|b){0,}/i
1973     AB
1974  0: AB
1975  1: B
1977 /(a+|b)+/i
1978     AB
1979  0: AB
1980  1: B
1982 /(a+|b){1,}/i
1983     AB
1984  0: AB
1985  1: B
1987 /(a+|b)?/i
1988     AB
1989  0: A
1990  1: A
1992 /(a+|b){0,1}/i
1993     AB
1994  0: A
1995  1: A
1997 /[^ab]*/i
1998     CDE
1999  0: CDE
2001 /([abc])*d/i
2002     ABBBCD
2003  0: ABBBCD
2004  1: C
2006 /([abc])*bcd/i
2007     ABCD
2008  0: ABCD
2009  1: A
2011 /a|b|c|d|e/i
2012     E
2013  0: E
2015 /(a|b|c|d|e)f/i
2016     EF
2017  0: EF
2018  1: E
2020 /abcd*efg/i
2021     ABCDEFG
2022  0: ABCDEFG
2024 /ab*/i
2025     XABYABBBZ
2026  0: AB
2027     XAYABBBZ
2028  0: A
2030 /(ab|cd)e/i
2031     ABCDE
2032  0: CDE
2033  1: CD
2035 /[abhgefdc]ij/i
2036     HIJ
2037  0: HIJ
2039 /^(ab|cd)e/i
2040     ABCDE
2041 No match
2043 /(abc|)ef/i
2044     ABCDEF
2045  0: EF
2046  1: 
2048 /(a|b)c*d/i
2049     ABCD
2050  0: BCD
2051  1: B
2053 /(ab|ab*)bc/i
2054     ABC
2055  0: ABC
2056  1: A
2058 /a([bc]*)c*/i
2059     ABC
2060  0: ABC
2061  1: BC
2063 /a([bc]*)(c*d)/i
2064     ABCD
2065  0: ABCD
2066  1: BC
2067  2: D
2069 /a([bc]+)(c*d)/i
2070     ABCD
2071  0: ABCD
2072  1: BC
2073  2: D
2075 /a([bc]*)(c+d)/i
2076     ABCD
2077  0: ABCD
2078  1: B
2079  2: CD
2081 /a[bcd]*dcdcde/i
2082     ADCDCDE
2083  0: ADCDCDE
2085 /a[bcd]+dcdcde/i
2087 /(ab|a)b*c/i
2088     ABC
2089  0: ABC
2090  1: AB
2092 /((a)(b)c)(d)/i
2093     ABCD
2094  0: ABCD
2095  1: ABC
2096  2: A
2097  3: B
2098  4: D
2100 /[a-zA-Z_][a-zA-Z0-9_]*/i
2101     ALPHA
2102  0: ALPHA
2104 /^a(bc+|b[eh])g|.h$/i
2105     ABH
2106  0: BH
2108 /(bc+d$|ef*g.|h?i(j|k))/i
2109     EFFGZ
2110  0: EFFGZ
2111  1: EFFGZ
2112     IJ
2113  0: IJ
2114  1: IJ
2115  2: J
2116     REFFGZ
2117  0: EFFGZ
2118  1: EFFGZ
2119     *** Failers
2120 No match
2121     ADCDCDE
2122 No match
2123     EFFG
2124 No match
2125     BCDD
2126 No match
2128 /((((((((((a))))))))))/i
2129     A
2130  0: A
2131  1: A
2132  2: A
2133  3: A
2134  4: A
2135  5: A
2136  6: A
2137  7: A
2138  8: A
2139  9: A
2140 10: A
2142 /((((((((((a))))))))))\9/i
2143     AA
2144  0: AA
2145  1: A
2146  2: A
2147  3: A
2148  4: A
2149  5: A
2150  6: A
2151  7: A
2152  8: A
2153  9: A
2154 10: A
2156 /(((((((((a)))))))))/i
2157     A
2158  0: A
2159  1: A
2160  2: A
2161  3: A
2162  4: A
2163  5: A
2164  6: A
2165  7: A
2166  8: A
2167  9: A
2169 /multiple words of text/i
2170     *** Failers
2171 No match
2172     AA
2173 No match
2174     UH-UH
2175 No match
2177 /multiple words/i
2178     MULTIPLE WORDS, YEAH
2179  0: MULTIPLE WORDS
2181 /(.*)c(.*)/i
2182     ABCDE
2183  0: ABCDE
2184  1: AB
2185  2: DE
2187 /\((.*), (.*)\)/i
2188     (A, B)
2189  0: (A, B)
2190  1: A
2191  2: B
2193 /abcd/i
2194     ABCD
2195  0: ABCD
2197 /a(bc)d/i
2198     ABCD
2199  0: ABCD
2200  1: BC
2202 /a[-]?c/i
2203     AC
2204  0: AC
2206 /(abc)\1/i
2207     ABCABC
2208  0: ABCABC
2209  1: ABC
2211 /([a-c]*)\1/i
2212     ABCABC
2213  0: ABCABC
2214  1: ABC
2216 /((foo)|(bar))*/
2217     foobar
2218  0: foobar
2219  1: bar
2220  2: foo
2221  3: bar
2223 /^(.+)?B/
2224     AB
2225  0: AB
2226  1: A
2228 /^([^a-z])|(\^)$/
2229     .
2230  0: .
2231  1: .
2233 /^[<>]&/
2234     <&OUT
2235  0: <&
2237 /^(){3,5}/
2238     abc
2239  0: 
2240  1: 
2242 /^(a+)*ax/
2243     aax
2244  0: aax
2245  1: a
2247 /^((a|b)+)*ax/
2248     aax
2249  0: aax
2250  1: a
2251  2: a
2253 /^((a|bc)+)*ax/
2254     aax
2255  0: aax
2256  1: a
2257  2: a
2259 /(a|x)*ab/
2260     cab
2261  0: ab
2263 /(a)*ab/
2264     cab
2265  0: ab
2267 /(ab)[0-9]\1/i
2268     Ab4ab
2269  0: Ab4ab
2270  1: Ab
2271     ab4Ab
2272  0: ab4Ab
2273  1: ab
2275 /foo\w*[0-9]{4}baz/
2276     foobar1234baz
2277  0: foobar1234baz
2279 /(\w+:)+/
2280     one:
2281  0: one:
2282  1: one:
2284 /((\w|:)+::)?(\w+)$/
2285     abcd
2286  0: abcd
2287  1: <unset>
2288  2: <unset>
2289  3: abcd
2290     xy:z:::abcd
2291  0: xy:z:::abcd
2292  1: xy:z:::
2293  2: :
2294  3: abcd
2296 /^[^bcd]*(c+)/
2297     aexycd
2298  0: aexyc
2299  1: c
2301 /(a*)b+/
2302     caab
2303  0: aab
2304  1: aa
2306 /((\w|:)+::)?(\w+)$/
2307     abcd
2308  0: abcd
2309  1: <unset>
2310  2: <unset>
2311  3: abcd
2312     xy:z:::abcd
2313  0: xy:z:::abcd
2314  1: xy:z:::
2315  2: :
2316  3: abcd
2317     *** Failers
2318  0: Failers
2319  1: <unset>
2320  2: <unset>
2321  3: Failers
2322     abcd:
2323 No match
2324     abcd:
2325 No match
2327 /^[^bcd]*(c+)/
2328     aexycd
2329  0: aexyc
2330  1: c
2332 /((Z)+|A)*/
2333     ZABCDEFG
2334  0: ZA
2335  1: A
2336  2: Z
2338 /(Z()|A)*/
2339     ZABCDEFG
2340  0: ZA
2341  1: A
2342  2: 
2344 /(Z(())|A)*/
2345     ZABCDEFG
2346  0: ZA
2347  1: A
2348  2: 
2349  3: 
2351 /(.*)[0-9]+\1/
2352     abc123abc
2353  0: abc123abc
2354  1: abc
2355     abc123bc 
2356  0: bc123bc
2357  1: bc
2359 /((.*))[0-9]+\1/
2360     abc123abc
2361  0: abc123abc
2362  1: abc
2363  2: abc
2364     abc123bc  
2365  0: bc123bc
2366  1: bc
2367  2: bc
2369 /^a{2,5}$/
2370     aa
2371  0: aa
2372     aaa
2373  0: aaa
2374     aaaa
2375  0: aaaa
2376     aaaaa
2377  0: aaaaa
2378     *** Failers
2379 No match
2380     a
2381 No match
2382     b
2383 No match
2384     aaaaab
2385 No match
2386     aaaaaa