bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / srclib / pcre / testdata / testoutput1
1 PCRE version 3.9 02-Jan-2002
2
3 /the quick brown fox/
4     the quick brown fox
5  0: the quick brown fox
6     The quick brown FOX
7 No match
8     What do you know about the quick brown fox?
9  0: the quick brown fox
10     What do you know about THE QUICK BROWN FOX?
11 No match
12
13 /The quick brown fox/i
14     the quick brown fox
15  0: the quick brown fox
16     The quick brown FOX
17  0: The quick brown FOX
18     What do you know about 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
23 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
24     abcd\t\n\r\f\a\e9;\$\\?caxyz
25  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
26
27 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
28     abxyzpqrrrabbxyyyypqAzz
29  0: abxyzpqrrrabbxyyyypqAzz
30     abxyzpqrrrabbxyyyypqAzz
31  0: abxyzpqrrrabbxyyyypqAzz
32     aabxyzpqrrrabbxyyyypqAzz
33  0: aabxyzpqrrrabbxyyyypqAzz
34     aaabxyzpqrrrabbxyyyypqAzz
35  0: aaabxyzpqrrrabbxyyyypqAzz
36     aaaabxyzpqrrrabbxyyyypqAzz
37  0: aaaabxyzpqrrrabbxyyyypqAzz
38     abcxyzpqrrrabbxyyyypqAzz
39  0: abcxyzpqrrrabbxyyyypqAzz
40     aabcxyzpqrrrabbxyyyypqAzz
41  0: aabcxyzpqrrrabbxyyyypqAzz
42     aaabcxyzpqrrrabbxyyyypAzz
43  0: aaabcxyzpqrrrabbxyyyypAzz
44     aaabcxyzpqrrrabbxyyyypqAzz
45  0: aaabcxyzpqrrrabbxyyyypqAzz
46     aaabcxyzpqrrrabbxyyyypqqAzz
47  0: aaabcxyzpqrrrabbxyyyypqqAzz
48     aaabcxyzpqrrrabbxyyyypqqqAzz
49  0: aaabcxyzpqrrrabbxyyyypqqqAzz
50     aaabcxyzpqrrrabbxyyyypqqqqAzz
51  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
52     aaabcxyzpqrrrabbxyyyypqqqqqAzz
53  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
54     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
55  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
56     aaaabcxyzpqrrrabbxyyyypqAzz
57  0: aaaabcxyzpqrrrabbxyyyypqAzz
58     abxyzzpqrrrabbxyyyypqAzz
59  0: abxyzzpqrrrabbxyyyypqAzz
60     aabxyzzzpqrrrabbxyyyypqAzz
61  0: aabxyzzzpqrrrabbxyyyypqAzz
62     aaabxyzzzzpqrrrabbxyyyypqAzz
63  0: aaabxyzzzzpqrrrabbxyyyypqAzz
64     aaaabxyzzzzpqrrrabbxyyyypqAzz
65  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
66     abcxyzzpqrrrabbxyyyypqAzz
67  0: abcxyzzpqrrrabbxyyyypqAzz
68     aabcxyzzzpqrrrabbxyyyypqAzz
69  0: aabcxyzzzpqrrrabbxyyyypqAzz
70     aaabcxyzzzzpqrrrabbxyyyypqAzz
71  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
72     aaaabcxyzzzzpqrrrabbxyyyypqAzz
73  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
74     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
75  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
76     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
77  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
78     aaabcxyzpqrrrabbxyyyypABzz
79  0: aaabcxyzpqrrrabbxyyyypABzz
80     aaabcxyzpqrrrabbxyyyypABBzz
81  0: aaabcxyzpqrrrabbxyyyypABBzz
82     >>>aaabxyzpqrrrabbxyyyypqAzz
83  0: aaabxyzpqrrrabbxyyyypqAzz
84     >aaaabxyzpqrrrabbxyyyypqAzz
85  0: aaaabxyzpqrrrabbxyyyypqAzz
86     >>>>abcxyzpqrrrabbxyyyypqAzz
87  0: abcxyzpqrrrabbxyyyypqAzz
88     *** Failers
89 No match
90     abxyzpqrrabbxyyyypqAzz
91 No match
92     abxyzpqrrrrabbxyyyypqAzz
93 No match
94     abxyzpqrrrabxyyyypqAzz
95 No match
96     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
97 No match
98     aaaabcxyzzzzpqrrrabbbxyyypqAzz
99 No match
100     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
101 No match
102
103 /^(abc){1,2}zz/
104     abczz
105  0: abczz
106  1: abc
107     abcabczz
108  0: abcabczz
109  1: abc
110     *** Failers
111 No match
112     zz
113 No match
114     abcabcabczz
115 No match
116     >>abczz
117 No match
118
119 /^(b+?|a){1,2}?c/
120     bc
121  0: bc
122  1: b
123     bbc
124  0: bbc
125  1: b
126     bbbc
127  0: bbbc
128  1: bb
129     bac
130  0: bac
131  1: a
132     bbac
133  0: bbac
134  1: a
135     aac
136  0: aac
137  1: a
138     abbbbbbbbbbbc
139  0: abbbbbbbbbbbc
140  1: bbbbbbbbbbb
141     bbbbbbbbbbbac
142  0: bbbbbbbbbbbac
143  1: a
144     *** Failers
145 No match
146     aaac
147 No match
148     abbbbbbbbbbbac
149 No match
150
151 /^(b+|a){1,2}c/
152     bc
153  0: bc
154  1: b
155     bbc
156  0: bbc
157  1: bb
158     bbbc
159  0: bbbc
160  1: bbb
161     bac
162  0: bac
163  1: a
164     bbac
165  0: bbac
166  1: a
167     aac
168  0: aac
169  1: a
170     abbbbbbbbbbbc
171  0: abbbbbbbbbbbc
172  1: bbbbbbbbbbb
173     bbbbbbbbbbbac
174  0: bbbbbbbbbbbac
175  1: a
176     *** Failers
177 No match
178     aaac
179 No match
180     abbbbbbbbbbbac
181 No match
182
183 /^(b+|a){1,2}?bc/
184     bbc
185  0: bbc
186  1: b
187
188 /^(b*|ba){1,2}?bc/
189     babc
190  0: babc
191  1: ba
192     bbabc
193  0: bbabc
194  1: ba
195     bababc
196  0: bababc
197  1: ba
198     *** Failers
199 No match
200     bababbc
201 No match
202     babababc
203 No match
204
205 /^(ba|b*){1,2}?bc/
206     babc
207  0: babc
208  1: ba
209     bbabc
210  0: bbabc
211  1: ba
212     bababc
213  0: bababc
214  1: ba
215     *** Failers
216 No match
217     bababbc
218 No match
219     babababc
220 No match
221
222 /^\ca\cA\c[\c{\c:/
223     \x01\x01\e;z
224  0: \x01\x01\x1b;z
225
226 /^[ab\]cde]/
227     athing
228  0: a
229     bthing
230  0: b
231     ]thing
232  0: ]
233     cthing
234  0: c
235     dthing
236  0: d
237     ething
238  0: e
239     *** Failers
240 No match
241     fthing
242 No match
243     [thing
244 No match
245     \\thing
246 No match
247
248 /^[]cde]/
249     ]thing
250  0: ]
251     cthing
252  0: c
253     dthing
254  0: d
255     ething
256  0: e
257     *** Failers
258 No match
259     athing
260 No match
261     fthing
262 No match
263
264 /^[^ab\]cde]/
265     fthing
266  0: f
267     [thing
268  0: [
269     \\thing
270  0: \
271     *** Failers
272  0: *
273     athing
274 No match
275     bthing
276 No match
277     ]thing
278 No match
279     cthing
280 No match
281     dthing
282 No match
283     ething
284 No match
285
286 /^[^]cde]/
287     athing
288  0: a
289     fthing
290  0: f
291     *** Failers
292  0: *
293     ]thing
294 No match
295     cthing
296 No match
297     dthing
298 No match
299     ething
300 No match
301
302 /^\\81/
303     \81
304  0: \x81
305
306 /^ÿ/
307     Ã¿
308  0: \xff
309
310 /^[0-9]+$/
311     0
312  0: 0
313     1
314  0: 1
315     2
316  0: 2
317     3
318  0: 3
319     4
320  0: 4
321     5
322  0: 5
323     6
324  0: 6
325     7
326  0: 7
327     8
328  0: 8
329     9
330  0: 9
331     10
332  0: 10
333     100
334  0: 100
335     *** Failers
336 No match
337     abc
338 No match
339
340 /^.*nter/
341     enter
342  0: enter
343     inter
344  0: inter
345     uponter
346  0: uponter
347
348 /^xxx[0-9]+$/
349     xxx0
350  0: xxx0
351     xxx1234
352  0: xxx1234
353     *** Failers
354 No match
355     xxx
356 No match
357
358 /^.+[0-9][0-9][0-9]$/
359     x123
360  0: x123
361     xx123
362  0: xx123
363     123456
364  0: 123456
365     *** Failers
366 No match
367     123
368 No match
369     x1234
370  0: x1234
371
372 /^.+?[0-9][0-9][0-9]$/
373     x123
374  0: x123
375     xx123
376  0: xx123
377     123456
378  0: 123456
379     *** Failers
380 No match
381     123
382 No match
383     x1234
384  0: x1234
385
386 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
387     abc!pqr=apquxz.ixr.zzz.ac.uk
388  0: abc!pqr=apquxz.ixr.zzz.ac.uk
389  1: abc
390  2: pqr
391     *** Failers
392 No match
393     !pqr=apquxz.ixr.zzz.ac.uk
394 No match
395     abc!=apquxz.ixr.zzz.ac.uk
396 No match
397     abc!pqr=apquxz:ixr.zzz.ac.uk
398 No match
399     abc!pqr=apquxz.ixr.zzz.ac.ukk
400 No match
401
402 /:/
403     Well, we need a colon: somewhere
404  0: :
405     *** Fail if we don't
406 No match
407
408 /([\da-f:]+)$/i
409     0abc
410  0: 0abc
411  1: 0abc
412     abc
413  0: abc
414  1: abc
415     fed
416  0: fed
417  1: fed
418     E
419  0: E
420  1: E
421     ::
422  0: ::
423  1: ::
424     5f03:12C0::932e
425  0: 5f03:12C0::932e
426  1: 5f03:12C0::932e
427     fed def
428  0: def
429  1: def
430     Any old stuff
431  0: ff
432  1: ff
433     *** Failers
434 No match
435     0zzz
436 No match
437     gzzz
438 No match
439     fed\x20
440 No match
441     Any old rubbish
442 No match
443
444 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
445     .1.2.3
446  0: .1.2.3
447  1: 1
448  2: 2
449  3: 3
450     A.12.123.0
451  0: A.12.123.0
452  1: 12
453  2: 123
454  3: 0
455     *** Failers
456 No match
457     .1.2.3333
458 No match
459     1.2.3
460 No match
461     1234.2.3
462 No match
463
464 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
465     1 IN SOA non-sp1 non-sp2(
466  0: 1 IN SOA non-sp1 non-sp2(
467  1: 1
468  2: non-sp1
469  3: non-sp2
470     1    IN    SOA    non-sp1    non-sp2   (
471  0: 1    IN    SOA    non-sp1    non-sp2   (
472  1: 1
473  2: non-sp1
474  3: non-sp2
475     *** Failers
476 No match
477     1IN SOA non-sp1 non-sp2(
478 No match
479
480 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
481     a.
482  0: a.
483     Z.
484  0: Z.
485     2.
486  0: 2.
487     ab-c.pq-r.
488  0: ab-c.pq-r.
489  1: .pq-r
490     sxk.zzz.ac.uk.
491  0: sxk.zzz.ac.uk.
492  1: .uk
493     x-.y-.
494  0: x-.y-.
495  1: .y-
496     *** Failers
497 No match
498     -abc.peq.
499 No match
500
501 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
502     *.a
503  0: *.a
504     *.b0-a
505  0: *.b0-a
506  1: 0-a
507     *.c3-b.c
508  0: *.c3-b.c
509  1: 3-b
510  2: .c
511     *.c-a.b-c
512  0: *.c-a.b-c
513  1: -a
514  2: .b-c
515  3: -c
516     *** Failers
517 No match
518     *.0
519 No match
520     *.a-
521 No match
522     *.a-b.c-
523 No match
524     *.c-a.0-c
525 No match
526
527 /^(?=ab(de))(abd)(e)/
528     abde
529  0: abde
530  1: de
531  2: abd
532  3: e
533
534 /^(?!(ab)de|x)(abd)(f)/
535     abdf
536  0: abdf
537  1: <unset>
538  2: abd
539  3: f
540
541 /^(?=(ab(cd)))(ab)/
542     abcd
543  0: ab
544  1: abcd
545  2: cd
546  3: ab
547
548 /^[\da-f](\.[\da-f])*$/i
549     a.b.c.d
550  0: a.b.c.d
551  1: .d
552     A.B.C.D
553  0: A.B.C.D
554  1: .D
555     a.b.c.1.2.3.C
556  0: a.b.c.1.2.3.C
557  1: .C
558
559 /^\".*\"\s*(;.*)?$/
560     \"1234\"
561  0: "1234"
562     \"abcd\" ;
563  0: "abcd" ;
564  1: ;
565     \"\" ; rhubarb
566  0: "" ; rhubarb
567  1: ; rhubarb
568     *** Failers
569 No match
570     \"1234\" : things
571 No match
572
573 /^$/
574     \
575  0: 
576     *** Failers
577 No match
578
579 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
580     ab c
581  0: ab c
582     *** Failers
583 No match
584     abc
585 No match
586     ab cde
587 No match
588
589 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
590     ab c
591  0: ab c
592     *** Failers
593 No match
594     abc
595 No match
596     ab cde
597 No match
598
599 /^   a\ b[c ]d       $/x
600     a bcd
601  0: a bcd
602     a b d
603  0: a b d
604     *** Failers
605 No match
606     abcd
607 No match
608     ab d
609 No match
610
611 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
612     abcdefhijklm
613  0: abcdefhijklm
614  1: abc
615  2: bc
616  3: c
617  4: def
618  5: ef
619  6: f
620  7: hij
621  8: ij
622  9: j
623 10: klm
624 11: lm
625 12: m
626
627 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
628     abcdefhijklm
629  0: abcdefhijklm
630  1: bc
631  2: c
632  3: ef
633  4: f
634  5: ij
635  6: j
636  7: lm
637  8: m
638
639 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
640     a+ Z0+\x08\n\x1d\x12
641  0: a+ Z0+\x08\x0a\x1d\x12
642
643 /^[.^$|()*+?{,}]+/
644     .^\$(*+)|{?,?}
645  0: .^$(*+)|{?,?}
646
647 /^a*\w/
648     z
649  0: z
650     az
651  0: az
652     aaaz
653  0: aaaz
654     a
655  0: a
656     aa
657  0: aa
658     aaaa
659  0: aaaa
660     a+
661  0: a
662     aa+
663  0: aa
664
665 /^a*?\w/
666     z
667  0: z
668     az
669  0: a
670     aaaz
671  0: a
672     a
673  0: a
674     aa
675  0: a
676     aaaa
677  0: a
678     a+
679  0: a
680     aa+
681  0: a
682
683 /^a+\w/
684     az
685  0: az
686     aaaz
687  0: aaaz
688     aa
689  0: aa
690     aaaa
691  0: aaaa
692     aa+
693  0: aa
694
695 /^a+?\w/
696     az
697  0: az
698     aaaz
699  0: aa
700     aa
701  0: aa
702     aaaa
703  0: aa
704     aa+
705  0: aa
706
707 /^\d{8}\w{2,}/
708     1234567890
709  0: 1234567890
710     12345678ab
711  0: 12345678ab
712     12345678__
713  0: 12345678__
714     *** Failers
715 No match
716     1234567
717 No match
718
719 /^[aeiou\d]{4,5}$/
720     uoie
721  0: uoie
722     1234
723  0: 1234
724     12345
725  0: 12345
726     aaaaa
727  0: aaaaa
728     *** Failers
729 No match
730     123456
731 No match
732
733 /^[aeiou\d]{4,5}?/
734     uoie
735  0: uoie
736     1234
737  0: 1234
738     12345
739  0: 1234
740     aaaaa
741  0: aaaa
742     123456
743  0: 1234
744
745 /\A(abc|def)=(\1){2,3}\Z/
746     abc=abcabc
747  0: abc=abcabc
748  1: abc
749  2: abc
750     def=defdefdef
751  0: def=defdefdef
752  1: def
753  2: def
754     *** Failers
755 No match
756     abc=defdef
757 No match
758
759 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
760     abcdefghijkcda2
761  0: abcdefghijkcda2
762  1: a
763  2: b
764  3: c
765  4: d
766  5: e
767  6: f
768  7: g
769  8: h
770  9: i
771 10: j
772 11: k
773 12: cd
774     abcdefghijkkkkcda2
775  0: abcdefghijkkkkcda2
776  1: a
777  2: b
778  3: c
779  4: d
780  5: e
781  6: f
782  7: g
783  8: h
784  9: i
785 10: j
786 11: k
787 12: cd
788
789 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
790     cataract cataract23
791  0: cataract cataract23
792  1: cataract
793  2: aract
794  3: ract
795  4: 
796  5: 3
797     catatonic catatonic23
798  0: catatonic catatonic23
799  1: catatonic
800  2: atonic
801  3: tonic
802  4: 
803  5: 3
804     caterpillar caterpillar23
805  0: caterpillar caterpillar23
806  1: caterpillar
807  2: erpillar
808  3: <unset>
809  4: 
810  5: 3
811
812
813 /^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]/
814     From abcd  Mon Sep 01 12:33:02 1997
815  0: From abcd  Mon Sep 01 12:33
816  1: abcd
817
818 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
819     From abcd  Mon Sep 01 12:33:02 1997
820  0: From abcd  Mon Sep 01 12:33
821  1: Sep 
822     From abcd  Mon Sep  1 12:33:02 1997
823  0: From abcd  Mon Sep  1 12:33
824  1: Sep  
825     *** Failers
826 No match
827     From abcd  Sep 01 12:33:02 1997
828 No match
829
830 /^12.34/s
831     12\n34
832  0: 12\x0a34
833     12\r34
834  0: 12\x0d34
835
836 /\w+(?=\t)/
837     the quick brown\t fox
838  0: brown
839
840 /foo(?!bar)(.*)/
841     foobar is foolish see?
842  0: foolish see?
843  1: lish see?
844
845 /(?:(?!foo)...|^.{0,2})bar(.*)/
846     foobar crowbar etc
847  0: rowbar etc
848  1:  etc
849     barrel
850  0: barrel
851  1: rel
852     2barrel
853  0: 2barrel
854  1: rel
855     A barrel
856  0: A barrel
857  1: rel
858
859 /^(\D*)(?=\d)(?!123)/
860     abc456
861  0: abc
862  1: abc
863     *** Failers
864 No match
865     abc123
866 No match
867
868 /^1234(?# test newlines
869   inside)/
870     1234
871  0: 1234
872
873 /^1234 #comment in extended re
874   /x
875     1234
876  0: 1234
877
878 /#rhubarb
879   abcd/x
880     abcd
881  0: abcd
882
883 /^abcd#rhubarb/x
884     abcd
885  0: abcd
886
887 /^(a)\1{2,3}(.)/
888     aaab
889  0: aaab
890  1: a
891  2: b
892     aaaab
893  0: aaaab
894  1: a
895  2: b
896     aaaaab
897  0: aaaaa
898  1: a
899  2: a
900     aaaaaab
901  0: aaaaa
902  1: a
903  2: a
904
905 /(?!^)abc/
906     the abc
907  0: abc
908     *** Failers
909 No match
910     abc
911 No match
912
913 /(?=^)abc/
914     abc
915  0: abc
916     *** Failers
917 No match
918     the abc
919 No match
920
921 /^[ab]{1,3}(ab*|b)/
922     aabbbbb
923  0: aabb
924  1: b
925
926 /^[ab]{1,3}?(ab*|b)/
927     aabbbbb
928  0: aabbbbb
929  1: abbbbb
930
931 /^[ab]{1,3}?(ab*?|b)/
932     aabbbbb
933  0: aa
934  1: a
935
936 /^[ab]{1,3}(ab*?|b)/
937     aabbbbb
938  0: aabb
939  1: b
940
941 /  (?: [\040\t] |  \(
942 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
943 \)  )*                          # optional leading comment
944 (?:    (?:
945 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
946 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
947 |
948 " (?:                      # opening quote...
949 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
950 |                     #    or
951 \\ [^\x80-\xff]           #   Escaped something (something != CR)
952 )* "  # closing quote
953 )                    # initial word
954 (?:  (?: [\040\t] |  \(
955 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
956 \)  )*  \.  (?: [\040\t] |  \(
957 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
958 \)  )*   (?:
959 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
960 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
961 |
962 " (?:                      # opening quote...
963 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
964 |                     #    or
965 \\ [^\x80-\xff]           #   Escaped something (something != CR)
966 )* "  # closing quote
967 )  )* # further okay, if led by a period
968 (?: [\040\t] |  \(
969 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
970 \)  )*  @  (?: [\040\t] |  \(
971 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
972 \)  )*    (?:
973 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
974 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
975 |   \[                         # [
976 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
977 \]                        #           ]
978 )                           # initial subdomain
979 (?:                                  #
980 (?: [\040\t] |  \(
981 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
982 \)  )*  \.                        # if led by a period...
983 (?: [\040\t] |  \(
984 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
985 \)  )*   (?:
986 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
987 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
988 |   \[                         # [
989 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
990 \]                        #           ]
991 )                     #   ...further okay
992 )*
993 # address
994 |                     #  or
995 (?:
996 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
997 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
998 |
999 " (?:                      # opening quote...
1000 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1001 |                     #    or
1002 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1003 )* "  # closing quote
1004 )             # one word, optionally followed by....
1005 (?:
1006 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
1007 \(
1008 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1009 \)       |  # comments, or...
1010
1011 " (?:                      # opening quote...
1012 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1013 |                     #    or
1014 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1015 )* "  # closing quote
1016 # quoted strings
1017 )*
1018 <  (?: [\040\t] |  \(
1019 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1020 \)  )*                     # leading <
1021 (?:  @  (?: [\040\t] |  \(
1022 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1023 \)  )*    (?:
1024 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1025 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1026 |   \[                         # [
1027 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1028 \]                        #           ]
1029 )                           # initial subdomain
1030 (?:                                  #
1031 (?: [\040\t] |  \(
1032 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1033 \)  )*  \.                        # if led by a period...
1034 (?: [\040\t] |  \(
1035 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1036 \)  )*   (?:
1037 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1038 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1039 |   \[                         # [
1040 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1041 \]                        #           ]
1042 )                     #   ...further okay
1043 )*
1044
1045 (?:  (?: [\040\t] |  \(
1046 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
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 \)  )*    (?:
1052 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1053 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1054 |   \[                         # [
1055 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1056 \]                        #           ]
1057 )                           # initial subdomain
1058 (?:                                  #
1059 (?: [\040\t] |  \(
1060 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1061 \)  )*  \.                        # if led by a period...
1062 (?: [\040\t] |  \(
1063 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1064 \)  )*   (?:
1065 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1066 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1067 |   \[                         # [
1068 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1069 \]                        #           ]
1070 )                     #   ...further okay
1071 )*
1072 )* # further okay, if led by comma
1073 :                                # closing colon
1074 (?: [\040\t] |  \(
1075 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1076 \)  )*  )? #       optional route
1077 (?:
1078 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1079 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1080 |
1081 " (?:                      # opening quote...
1082 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1083 |                     #    or
1084 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1085 )* "  # closing quote
1086 )                    # initial word
1087 (?:  (?: [\040\t] |  \(
1088 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1089 \)  )*  \.  (?: [\040\t] |  \(
1090 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1091 \)  )*   (?:
1092 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1093 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1094 |
1095 " (?:                      # opening quote...
1096 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1097 |                     #    or
1098 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1099 )* "  # closing quote
1100 )  )* # further okay, if led by a period
1101 (?: [\040\t] |  \(
1102 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1103 \)  )*  @  (?: [\040\t] |  \(
1104 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1105 \)  )*    (?:
1106 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1107 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1108 |   \[                         # [
1109 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1110 \]                        #           ]
1111 )                           # initial subdomain
1112 (?:                                  #
1113 (?: [\040\t] |  \(
1114 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1115 \)  )*  \.                        # if led by a period...
1116 (?: [\040\t] |  \(
1117 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1118 \)  )*   (?:
1119 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1120 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1121 |   \[                         # [
1122 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1123 \]                        #           ]
1124 )                     #   ...further okay
1125 )*
1126 #       address spec
1127 (?: [\040\t] |  \(
1128 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1129 \)  )*  > #                  trailing >
1130 # name and address
1131 )  (?: [\040\t] |  \(
1132 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1133 \)  )*                       # optional trailing comment
1134 /x
1135     Alan Other <user\@dom.ain>
1136  0: Alan Other <user@dom.ain>
1137     <user\@dom.ain>
1138  0: user@dom.ain
1139     user\@dom.ain
1140  0: user@dom.ain
1141     \"A. Other\" <user.1234\@dom.ain> (a comment)
1142  0: "A. Other" <user.1234@dom.ain> (a comment)
1143     A. Other <user.1234\@dom.ain> (a comment)
1144  0:  Other <user.1234@dom.ain> (a comment)
1145     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1146  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1147     A missing angle <user\@some.where
1148  0: user@some.where
1149     *** Failers
1150 No match
1151     The quick brown fox
1152 No match
1153
1154 /[\040\t]*                    # Nab whitespace.
1155 (?:
1156 \(                              #  (
1157 [^\\\x80-\xff\n\015()] *                             #     normal*
1158 (?:                                 #       (
1159 (?:  \\ [^\x80-\xff]  |
1160 \(                            #  (
1161 [^\\\x80-\xff\n\015()] *                            #     normal*
1162 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1163 \)                           #                       )
1164 )    #         special
1165 [^\\\x80-\xff\n\015()] *                         #         normal*
1166 )*                                  #            )*
1167 \)                             #                )
1168 [\040\t]* )*    # If comment found, allow more spaces.
1169 # optional leading comment
1170 (?:
1171 (?:
1172 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1173 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1174 # Atom
1175 |                       #  or
1176 "                                     # "
1177 [^\\\x80-\xff\n\015"] *                            #   normal
1178 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1179 "                                     #        "
1180 # Quoted string
1181 )
1182 [\040\t]*                    # Nab whitespace.
1183 (?:
1184 \(                              #  (
1185 [^\\\x80-\xff\n\015()] *                             #     normal*
1186 (?:                                 #       (
1187 (?:  \\ [^\x80-\xff]  |
1188 \(                            #  (
1189 [^\\\x80-\xff\n\015()] *                            #     normal*
1190 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1191 \)                           #                       )
1192 )    #         special
1193 [^\\\x80-\xff\n\015()] *                         #         normal*
1194 )*                                  #            )*
1195 \)                             #                )
1196 [\040\t]* )*    # If comment found, allow more spaces.
1197 (?:
1198 \.
1199 [\040\t]*                    # Nab whitespace.
1200 (?:
1201 \(                              #  (
1202 [^\\\x80-\xff\n\015()] *                             #     normal*
1203 (?:                                 #       (
1204 (?:  \\ [^\x80-\xff]  |
1205 \(                            #  (
1206 [^\\\x80-\xff\n\015()] *                            #     normal*
1207 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1208 \)                           #                       )
1209 )    #         special
1210 [^\\\x80-\xff\n\015()] *                         #         normal*
1211 )*                                  #            )*
1212 \)                             #                )
1213 [\040\t]* )*    # If comment found, allow more spaces.
1214 (?:
1215 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1216 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1217 # Atom
1218 |                       #  or
1219 "                                     # "
1220 [^\\\x80-\xff\n\015"] *                            #   normal
1221 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1222 "                                     #        "
1223 # Quoted string
1224 )
1225 [\040\t]*                    # Nab whitespace.
1226 (?:
1227 \(                              #  (
1228 [^\\\x80-\xff\n\015()] *                             #     normal*
1229 (?:                                 #       (
1230 (?:  \\ [^\x80-\xff]  |
1231 \(                            #  (
1232 [^\\\x80-\xff\n\015()] *                            #     normal*
1233 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1234 \)                           #                       )
1235 )    #         special
1236 [^\\\x80-\xff\n\015()] *                         #         normal*
1237 )*                                  #            )*
1238 \)                             #                )
1239 [\040\t]* )*    # If comment found, allow more spaces.
1240 # additional words
1241 )*
1242 @
1243 [\040\t]*                    # Nab whitespace.
1244 (?:
1245 \(                              #  (
1246 [^\\\x80-\xff\n\015()] *                             #     normal*
1247 (?:                                 #       (
1248 (?:  \\ [^\x80-\xff]  |
1249 \(                            #  (
1250 [^\\\x80-\xff\n\015()] *                            #     normal*
1251 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1252 \)                           #                       )
1253 )    #         special
1254 [^\\\x80-\xff\n\015()] *                         #         normal*
1255 )*                                  #            )*
1256 \)                             #                )
1257 [\040\t]* )*    # If comment found, allow more spaces.
1258 (?:
1259 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1260 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1261 |
1262 \[                            # [
1263 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1264 \]                           #           ]
1265 )
1266 [\040\t]*                    # Nab whitespace.
1267 (?:
1268 \(                              #  (
1269 [^\\\x80-\xff\n\015()] *                             #     normal*
1270 (?:                                 #       (
1271 (?:  \\ [^\x80-\xff]  |
1272 \(                            #  (
1273 [^\\\x80-\xff\n\015()] *                            #     normal*
1274 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1275 \)                           #                       )
1276 )    #         special
1277 [^\\\x80-\xff\n\015()] *                         #         normal*
1278 )*                                  #            )*
1279 \)                             #                )
1280 [\040\t]* )*    # If comment found, allow more spaces.
1281 # optional trailing comments
1282 (?:
1283 \.
1284 [\040\t]*                    # Nab whitespace.
1285 (?:
1286 \(                              #  (
1287 [^\\\x80-\xff\n\015()] *                             #     normal*
1288 (?:                                 #       (
1289 (?:  \\ [^\x80-\xff]  |
1290 \(                            #  (
1291 [^\\\x80-\xff\n\015()] *                            #     normal*
1292 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1293 \)                           #                       )
1294 )    #         special
1295 [^\\\x80-\xff\n\015()] *                         #         normal*
1296 )*                                  #            )*
1297 \)                             #                )
1298 [\040\t]* )*    # If comment found, allow more spaces.
1299 (?:
1300 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1301 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1302 |
1303 \[                            # [
1304 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1305 \]                           #           ]
1306 )
1307 [\040\t]*                    # Nab whitespace.
1308 (?:
1309 \(                              #  (
1310 [^\\\x80-\xff\n\015()] *                             #     normal*
1311 (?:                                 #       (
1312 (?:  \\ [^\x80-\xff]  |
1313 \(                            #  (
1314 [^\\\x80-\xff\n\015()] *                            #     normal*
1315 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1316 \)                           #                       )
1317 )    #         special
1318 [^\\\x80-\xff\n\015()] *                         #         normal*
1319 )*                                  #            )*
1320 \)                             #                )
1321 [\040\t]* )*    # If comment found, allow more spaces.
1322 # optional trailing comments
1323 )*
1324 # address
1325 |                             #  or
1326 (?:
1327 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1328 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1329 # Atom
1330 |                       #  or
1331 "                                     # "
1332 [^\\\x80-\xff\n\015"] *                            #   normal
1333 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1334 "                                     #        "
1335 # Quoted string
1336 )
1337 # leading word
1338 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
1339 (?:
1340 (?:
1341 \(                              #  (
1342 [^\\\x80-\xff\n\015()] *                             #     normal*
1343 (?:                                 #       (
1344 (?:  \\ [^\x80-\xff]  |
1345 \(                            #  (
1346 [^\\\x80-\xff\n\015()] *                            #     normal*
1347 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1348 \)                           #                       )
1349 )    #         special
1350 [^\\\x80-\xff\n\015()] *                         #         normal*
1351 )*                                  #            )*
1352 \)                             #                )
1353 |
1354 "                                     # "
1355 [^\\\x80-\xff\n\015"] *                            #   normal
1356 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1357 "                                     #        "
1358 ) # "special" comment or quoted string
1359 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
1360 )*
1361 <
1362 [\040\t]*                    # Nab whitespace.
1363 (?:
1364 \(                              #  (
1365 [^\\\x80-\xff\n\015()] *                             #     normal*
1366 (?:                                 #       (
1367 (?:  \\ [^\x80-\xff]  |
1368 \(                            #  (
1369 [^\\\x80-\xff\n\015()] *                            #     normal*
1370 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1371 \)                           #                       )
1372 )    #         special
1373 [^\\\x80-\xff\n\015()] *                         #         normal*
1374 )*                                  #            )*
1375 \)                             #                )
1376 [\040\t]* )*    # If comment found, allow more spaces.
1377 # <
1378 (?:
1379 @
1380 [\040\t]*                    # Nab whitespace.
1381 (?:
1382 \(                              #  (
1383 [^\\\x80-\xff\n\015()] *                             #     normal*
1384 (?:                                 #       (
1385 (?:  \\ [^\x80-\xff]  |
1386 \(                            #  (
1387 [^\\\x80-\xff\n\015()] *                            #     normal*
1388 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1389 \)                           #                       )
1390 )    #         special
1391 [^\\\x80-\xff\n\015()] *                         #         normal*
1392 )*                                  #            )*
1393 \)                             #                )
1394 [\040\t]* )*    # If comment found, allow more spaces.
1395 (?:
1396 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1397 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1398 |
1399 \[                            # [
1400 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1401 \]                           #           ]
1402 )
1403 [\040\t]*                    # Nab whitespace.
1404 (?:
1405 \(                              #  (
1406 [^\\\x80-\xff\n\015()] *                             #     normal*
1407 (?:                                 #       (
1408 (?:  \\ [^\x80-\xff]  |
1409 \(                            #  (
1410 [^\\\x80-\xff\n\015()] *                            #     normal*
1411 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1412 \)                           #                       )
1413 )    #         special
1414 [^\\\x80-\xff\n\015()] *                         #         normal*
1415 )*                                  #            )*
1416 \)                             #                )
1417 [\040\t]* )*    # If comment found, allow more spaces.
1418 # optional trailing comments
1419 (?:
1420 \.
1421 [\040\t]*                    # Nab whitespace.
1422 (?:
1423 \(                              #  (
1424 [^\\\x80-\xff\n\015()] *                             #     normal*
1425 (?:                                 #       (
1426 (?:  \\ [^\x80-\xff]  |
1427 \(                            #  (
1428 [^\\\x80-\xff\n\015()] *                            #     normal*
1429 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1430 \)                           #                       )
1431 )    #         special
1432 [^\\\x80-\xff\n\015()] *                         #         normal*
1433 )*                                  #            )*
1434 \)                             #                )
1435 [\040\t]* )*    # If comment found, allow more spaces.
1436 (?:
1437 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1438 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1439 |
1440 \[                            # [
1441 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1442 \]                           #           ]
1443 )
1444 [\040\t]*                    # Nab whitespace.
1445 (?:
1446 \(                              #  (
1447 [^\\\x80-\xff\n\015()] *                             #     normal*
1448 (?:                                 #       (
1449 (?:  \\ [^\x80-\xff]  |
1450 \(                            #  (
1451 [^\\\x80-\xff\n\015()] *                            #     normal*
1452 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1453 \)                           #                       )
1454 )    #         special
1455 [^\\\x80-\xff\n\015()] *                         #         normal*
1456 )*                                  #            )*
1457 \)                             #                )
1458 [\040\t]* )*    # If comment found, allow more spaces.
1459 # optional trailing comments
1460 )*
1461 (?: ,
1462 [\040\t]*                    # Nab whitespace.
1463 (?:
1464 \(                              #  (
1465 [^\\\x80-\xff\n\015()] *                             #     normal*
1466 (?:                                 #       (
1467 (?:  \\ [^\x80-\xff]  |
1468 \(                            #  (
1469 [^\\\x80-\xff\n\015()] *                            #     normal*
1470 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1471 \)                           #                       )
1472 )    #         special
1473 [^\\\x80-\xff\n\015()] *                         #         normal*
1474 )*                                  #            )*
1475 \)                             #                )
1476 [\040\t]* )*    # If comment found, allow more spaces.
1477 @
1478 [\040\t]*                    # Nab whitespace.
1479 (?:
1480 \(                              #  (
1481 [^\\\x80-\xff\n\015()] *                             #     normal*
1482 (?:                                 #       (
1483 (?:  \\ [^\x80-\xff]  |
1484 \(                            #  (
1485 [^\\\x80-\xff\n\015()] *                            #     normal*
1486 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1487 \)                           #                       )
1488 )    #         special
1489 [^\\\x80-\xff\n\015()] *                         #         normal*
1490 )*                                  #            )*
1491 \)                             #                )
1492 [\040\t]* )*    # If comment found, allow more spaces.
1493 (?:
1494 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1495 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1496 |
1497 \[                            # [
1498 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1499 \]                           #           ]
1500 )
1501 [\040\t]*                    # Nab whitespace.
1502 (?:
1503 \(                              #  (
1504 [^\\\x80-\xff\n\015()] *                             #     normal*
1505 (?:                                 #       (
1506 (?:  \\ [^\x80-\xff]  |
1507 \(                            #  (
1508 [^\\\x80-\xff\n\015()] *                            #     normal*
1509 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1510 \)                           #                       )
1511 )    #         special
1512 [^\\\x80-\xff\n\015()] *                         #         normal*
1513 )*                                  #            )*
1514 \)                             #                )
1515 [\040\t]* )*    # If comment found, allow more spaces.
1516 # optional trailing comments
1517 (?:
1518 \.
1519 [\040\t]*                    # Nab whitespace.
1520 (?:
1521 \(                              #  (
1522 [^\\\x80-\xff\n\015()] *                             #     normal*
1523 (?:                                 #       (
1524 (?:  \\ [^\x80-\xff]  |
1525 \(                            #  (
1526 [^\\\x80-\xff\n\015()] *                            #     normal*
1527 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1528 \)                           #                       )
1529 )    #         special
1530 [^\\\x80-\xff\n\015()] *                         #         normal*
1531 )*                                  #            )*
1532 \)                             #                )
1533 [\040\t]* )*    # If comment found, allow more spaces.
1534 (?:
1535 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1536 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1537 |
1538 \[                            # [
1539 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1540 \]                           #           ]
1541 )
1542 [\040\t]*                    # Nab whitespace.
1543 (?:
1544 \(                              #  (
1545 [^\\\x80-\xff\n\015()] *                             #     normal*
1546 (?:                                 #       (
1547 (?:  \\ [^\x80-\xff]  |
1548 \(                            #  (
1549 [^\\\x80-\xff\n\015()] *                            #     normal*
1550 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1551 \)                           #                       )
1552 )    #         special
1553 [^\\\x80-\xff\n\015()] *                         #         normal*
1554 )*                                  #            )*
1555 \)                             #                )
1556 [\040\t]* )*    # If comment found, allow more spaces.
1557 # optional trailing comments
1558 )*
1559 )*  # additional domains
1560 :
1561 [\040\t]*                    # Nab whitespace.
1562 (?:
1563 \(                              #  (
1564 [^\\\x80-\xff\n\015()] *                             #     normal*
1565 (?:                                 #       (
1566 (?:  \\ [^\x80-\xff]  |
1567 \(                            #  (
1568 [^\\\x80-\xff\n\015()] *                            #     normal*
1569 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1570 \)                           #                       )
1571 )    #         special
1572 [^\\\x80-\xff\n\015()] *                         #         normal*
1573 )*                                  #            )*
1574 \)                             #                )
1575 [\040\t]* )*    # If comment found, allow more spaces.
1576 # optional trailing comments
1577 )?     #       optional route
1578 (?:
1579 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1580 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1581 # Atom
1582 |                       #  or
1583 "                                     # "
1584 [^\\\x80-\xff\n\015"] *                            #   normal
1585 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1586 "                                     #        "
1587 # Quoted string
1588 )
1589 [\040\t]*                    # Nab whitespace.
1590 (?:
1591 \(                              #  (
1592 [^\\\x80-\xff\n\015()] *                             #     normal*
1593 (?:                                 #       (
1594 (?:  \\ [^\x80-\xff]  |
1595 \(                            #  (
1596 [^\\\x80-\xff\n\015()] *                            #     normal*
1597 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1598 \)                           #                       )
1599 )    #         special
1600 [^\\\x80-\xff\n\015()] *                         #         normal*
1601 )*                                  #            )*
1602 \)                             #                )
1603 [\040\t]* )*    # If comment found, allow more spaces.
1604 (?:
1605 \.
1606 [\040\t]*                    # Nab whitespace.
1607 (?:
1608 \(                              #  (
1609 [^\\\x80-\xff\n\015()] *                             #     normal*
1610 (?:                                 #       (
1611 (?:  \\ [^\x80-\xff]  |
1612 \(                            #  (
1613 [^\\\x80-\xff\n\015()] *                            #     normal*
1614 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1615 \)                           #                       )
1616 )    #         special
1617 [^\\\x80-\xff\n\015()] *                         #         normal*
1618 )*                                  #            )*
1619 \)                             #                )
1620 [\040\t]* )*    # If comment found, allow more spaces.
1621 (?:
1622 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1623 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1624 # Atom
1625 |                       #  or
1626 "                                     # "
1627 [^\\\x80-\xff\n\015"] *                            #   normal
1628 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1629 "                                     #        "
1630 # Quoted string
1631 )
1632 [\040\t]*                    # Nab whitespace.
1633 (?:
1634 \(                              #  (
1635 [^\\\x80-\xff\n\015()] *                             #     normal*
1636 (?:                                 #       (
1637 (?:  \\ [^\x80-\xff]  |
1638 \(                            #  (
1639 [^\\\x80-\xff\n\015()] *                            #     normal*
1640 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1641 \)                           #                       )
1642 )    #         special
1643 [^\\\x80-\xff\n\015()] *                         #         normal*
1644 )*                                  #            )*
1645 \)                             #                )
1646 [\040\t]* )*    # If comment found, allow more spaces.
1647 # additional words
1648 )*
1649 @
1650 [\040\t]*                    # Nab whitespace.
1651 (?:
1652 \(                              #  (
1653 [^\\\x80-\xff\n\015()] *                             #     normal*
1654 (?:                                 #       (
1655 (?:  \\ [^\x80-\xff]  |
1656 \(                            #  (
1657 [^\\\x80-\xff\n\015()] *                            #     normal*
1658 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1659 \)                           #                       )
1660 )    #         special
1661 [^\\\x80-\xff\n\015()] *                         #         normal*
1662 )*                                  #            )*
1663 \)                             #                )
1664 [\040\t]* )*    # If comment found, allow more spaces.
1665 (?:
1666 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1667 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1668 |
1669 \[                            # [
1670 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1671 \]                           #           ]
1672 )
1673 [\040\t]*                    # Nab whitespace.
1674 (?:
1675 \(                              #  (
1676 [^\\\x80-\xff\n\015()] *                             #     normal*
1677 (?:                                 #       (
1678 (?:  \\ [^\x80-\xff]  |
1679 \(                            #  (
1680 [^\\\x80-\xff\n\015()] *                            #     normal*
1681 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1682 \)                           #                       )
1683 )    #         special
1684 [^\\\x80-\xff\n\015()] *                         #         normal*
1685 )*                                  #            )*
1686 \)                             #                )
1687 [\040\t]* )*    # If comment found, allow more spaces.
1688 # optional trailing comments
1689 (?:
1690 \.
1691 [\040\t]*                    # Nab whitespace.
1692 (?:
1693 \(                              #  (
1694 [^\\\x80-\xff\n\015()] *                             #     normal*
1695 (?:                                 #       (
1696 (?:  \\ [^\x80-\xff]  |
1697 \(                            #  (
1698 [^\\\x80-\xff\n\015()] *                            #     normal*
1699 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1700 \)                           #                       )
1701 )    #         special
1702 [^\\\x80-\xff\n\015()] *                         #         normal*
1703 )*                                  #            )*
1704 \)                             #                )
1705 [\040\t]* )*    # If comment found, allow more spaces.
1706 (?:
1707 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1708 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1709 |
1710 \[                            # [
1711 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1712 \]                           #           ]
1713 )
1714 [\040\t]*                    # Nab whitespace.
1715 (?:
1716 \(                              #  (
1717 [^\\\x80-\xff\n\015()] *                             #     normal*
1718 (?:                                 #       (
1719 (?:  \\ [^\x80-\xff]  |
1720 \(                            #  (
1721 [^\\\x80-\xff\n\015()] *                            #     normal*
1722 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1723 \)                           #                       )
1724 )    #         special
1725 [^\\\x80-\xff\n\015()] *                         #         normal*
1726 )*                                  #            )*
1727 \)                             #                )
1728 [\040\t]* )*    # If comment found, allow more spaces.
1729 # optional trailing comments
1730 )*
1731 #       address spec
1732 >                    #                 >
1733 # name and address
1734 )
1735 /x
1736     Alan Other <user\@dom.ain>
1737  0: Alan Other <user@dom.ain>
1738     <user\@dom.ain>
1739  0: user@dom.ain
1740     user\@dom.ain
1741  0: user@dom.ain
1742     \"A. Other\" <user.1234\@dom.ain> (a comment)
1743  0: "A. Other" <user.1234@dom.ain>
1744     A. Other <user.1234\@dom.ain> (a comment)
1745  0:  Other <user.1234@dom.ain>
1746     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1747  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1748     A missing angle <user\@some.where
1749  0: user@some.where
1750     *** Failers
1751 No match
1752     The quick brown fox
1753 No match
1754
1755 /abc\0def\00pqr\000xyz\0000AB/
1756     abc\0def\00pqr\000xyz\0000AB
1757  0: abc\x00def\x00pqr\x00xyz\x000AB
1758     abc456 abc\0def\00pqr\000xyz\0000ABCDE
1759  0: abc\x00def\x00pqr\x00xyz\x000AB
1760
1761 /abc\x0def\x00pqr\x000xyz\x0000AB/
1762     abc\x0def\x00pqr\x000xyz\x0000AB
1763  0: abc\x0def\x00pqr\x000xyz\x0000AB
1764     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1765  0: abc\x0def\x00pqr\x000xyz\x0000AB
1766
1767 /^[\000-\037]/
1768     \0A
1769  0: \x00
1770     \01B
1771  0: \x01
1772     \037C
1773  0: \x1f
1774
1775 /\0*/
1776     \0\0\0\0
1777  0: \x00\x00\x00\x00
1778
1779 /A\x0{2,3}Z/
1780     The A\x0\x0Z
1781  0: A\x00\x00Z
1782     An A\0\x0\0Z
1783  0: A\x00\x00\x00Z
1784     *** Failers
1785 No match
1786     A\0Z
1787 No match
1788     A\0\x0\0\x0Z
1789 No match
1790
1791 /^(cow|)\1(bell)/
1792     cowcowbell
1793  0: cowcowbell
1794  1: cow
1795  2: bell
1796     bell
1797  0: bell
1798  1: 
1799  2: bell
1800     *** Failers
1801 No match
1802     cowbell
1803 No match
1804
1805 /^\s/
1806     \040abc
1807  0:  
1808     \x0cabc
1809  0: \x0c
1810     \nabc
1811  0: \x0a
1812     \rabc
1813  0: \x0d
1814     \tabc
1815  0: \x09
1816     *** Failers
1817 No match
1818     abc
1819 No match
1820
1821 /^a     b
1822   \r  \f  c/x
1823     abc
1824  0: abc
1825
1826 /^(a|)\1*b/
1827     ab
1828  0: ab
1829  1: a
1830     aaaab
1831  0: aaaab
1832  1: a
1833     b
1834  0: b
1835  1: 
1836     *** Failers
1837 No match
1838     acb
1839 No match
1840
1841 /^(a|)\1+b/
1842     aab
1843  0: aab
1844  1: a
1845     aaaab
1846  0: aaaab
1847  1: a
1848     b
1849  0: b
1850  1: 
1851     *** Failers
1852 No match
1853     ab
1854 No match
1855
1856 /^(a|)\1?b/
1857     ab
1858  0: ab
1859  1: a
1860     aab
1861  0: aab
1862  1: a
1863     b
1864  0: b
1865  1: 
1866     *** Failers
1867 No match
1868     acb
1869 No match
1870
1871 /^(a|)\1{2}b/
1872     aaab
1873  0: aaab
1874  1: a
1875     b
1876  0: b
1877  1: 
1878     *** Failers
1879 No match
1880     ab
1881 No match
1882     aab
1883 No match
1884     aaaab
1885 No match
1886
1887 /^(a|)\1{2,3}b/
1888     aaab
1889  0: aaab
1890  1: a
1891     aaaab
1892  0: aaaab
1893  1: a
1894     b
1895  0: b
1896  1: 
1897     *** Failers
1898 No match
1899     ab
1900 No match
1901     aab
1902 No match
1903     aaaaab
1904 No match
1905
1906 /ab{1,3}bc/
1907     abbbbc
1908  0: abbbbc
1909     abbbc
1910  0: abbbc
1911     abbc
1912  0: abbc
1913     *** Failers
1914 No match
1915     abc
1916 No match
1917     abbbbbc
1918 No match
1919
1920 /([^.]*)\.([^:]*):[T ]+(.*)/
1921     track1.title:TBlah blah blah
1922  0: track1.title:TBlah blah blah
1923  1: track1
1924  2: title
1925  3: Blah blah blah
1926
1927 /([^.]*)\.([^:]*):[T ]+(.*)/i
1928     track1.title:TBlah blah blah
1929  0: track1.title:TBlah blah blah
1930  1: track1
1931  2: title
1932  3: Blah blah blah
1933
1934 /([^.]*)\.([^:]*):[t ]+(.*)/i
1935     track1.title:TBlah blah blah
1936  0: track1.title:TBlah blah blah
1937  1: track1
1938  2: title
1939  3: Blah blah blah
1940
1941 /^[W-c]+$/
1942     WXY_^abc
1943  0: WXY_^abc
1944     ***Failers
1945 No match
1946     wxy
1947 No match
1948
1949 /^[W-c]+$/i
1950     WXY_^abc
1951  0: WXY_^abc
1952     wxy_^ABC
1953  0: wxy_^ABC
1954
1955 /^[\x3f-\x5F]+$/i
1956     WXY_^abc
1957  0: WXY_^abc
1958     wxy_^ABC
1959  0: wxy_^ABC
1960
1961 /^abc$/m
1962     abc
1963  0: abc
1964     qqq\nabc
1965  0: abc
1966     abc\nzzz
1967  0: abc
1968     qqq\nabc\nzzz
1969  0: abc
1970
1971 /^abc$/
1972     abc
1973  0: abc
1974     *** Failers
1975 No match
1976     qqq\nabc
1977 No match
1978     abc\nzzz
1979 No match
1980     qqq\nabc\nzzz
1981 No match
1982
1983 /\Aabc\Z/m
1984     abc
1985  0: abc
1986     abc\n 
1987  0: abc
1988     *** Failers
1989 No match
1990     qqq\nabc
1991 No match
1992     abc\nzzz
1993 No match
1994     qqq\nabc\nzzz
1995 No match
1996     
1997 /\A(.)*\Z/s
1998     abc\ndef
1999  0: abc\x0adef
2000  1: f
2001
2002 /\A(.)*\Z/m
2003     *** Failers
2004  0: *** Failers
2005  1: s
2006     abc\ndef
2007 No match
2008
2009 /(?:b)|(?::+)/
2010     b::c
2011  0: b
2012     c::b
2013  0: ::
2014
2015 /[-az]+/
2016     az-
2017  0: az-
2018     *** Failers
2019  0: a
2020     b
2021 No match
2022
2023 /[az-]+/
2024     za-
2025  0: za-
2026     *** Failers
2027  0: a
2028     b
2029 No match
2030
2031 /[a\-z]+/
2032     a-z
2033  0: a-z
2034     *** Failers
2035  0: a
2036     b
2037 No match
2038
2039 /[a-z]+/
2040     abcdxyz
2041  0: abcdxyz
2042
2043 /[\d-]+/
2044     12-34
2045  0: 12-34
2046     *** Failers
2047 No match
2048     aaa
2049 No match
2050
2051 /[\d-z]+/
2052     12-34z
2053  0: 12-34z
2054     *** Failers
2055 No match
2056     aaa
2057 No match
2058
2059 /\x5c/
2060     \\
2061  0: \
2062
2063 /\x20Z/
2064     the Zoo
2065  0:  Z
2066     *** Failers
2067 No match
2068     Zulu
2069 No match
2070
2071 /(abc)\1/i
2072     abcabc
2073  0: abcabc
2074  1: abc
2075     ABCabc
2076  0: ABCabc
2077  1: ABC
2078     abcABC
2079  0: abcABC
2080  1: abc
2081
2082 /ab{3cd/
2083     ab{3cd
2084  0: ab{3cd
2085
2086 /ab{3,cd/
2087     ab{3,cd
2088  0: ab{3,cd
2089
2090 /ab{3,4a}cd/
2091     ab{3,4a}cd
2092  0: ab{3,4a}cd
2093
2094 /{4,5a}bc/
2095     {4,5a}bc
2096  0: {4,5a}bc
2097
2098 /^a.b/
2099     a\rb
2100  0: a\x0db
2101     *** Failers
2102 No match
2103     a\nb
2104 No match
2105
2106 /abc$/
2107     abc
2108  0: abc
2109     abc\n
2110  0: abc
2111     *** Failers
2112 No match
2113     abc\ndef
2114 No match
2115
2116 /(abc)\123/
2117     abc\x53
2118  0: abcS
2119  1: abc
2120
2121 /(abc)\223/
2122     abc\x93
2123  0: abc\x93
2124  1: abc
2125
2126 /(abc)\323/
2127     abc\xd3
2128  0: abc\xd3
2129  1: abc
2130
2131 /(abc)\500/
2132     abc\x40
2133  0: abc@
2134  1: abc
2135     abc\100
2136  0: abc@
2137  1: abc
2138
2139 /(abc)\5000/
2140     abc\x400
2141  0: abc@0
2142  1: abc
2143     abc\x40\x30
2144  0: abc@0
2145  1: abc
2146     abc\1000
2147  0: abc@0
2148  1: abc
2149     abc\100\x30
2150  0: abc@0
2151  1: abc
2152     abc\100\060
2153  0: abc@0
2154  1: abc
2155     abc\100\60
2156  0: abc@0
2157  1: abc
2158
2159 /abc\81/
2160     abc\081
2161  0: abc\x0081
2162     abc\0\x38\x31
2163  0: abc\x0081
2164
2165 /abc\91/
2166     abc\091
2167  0: abc\x0091
2168     abc\0\x39\x31
2169  0: abc\x0091
2170
2171 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2172     abcdefghijkllS
2173  0: abcdefghijkllS
2174  1: a
2175  2: b
2176  3: c
2177  4: d
2178  5: e
2179  6: f
2180  7: g
2181  8: h
2182  9: i
2183 10: j
2184 11: k
2185 12: l
2186
2187 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2188     abcdefghijk\12S
2189  0: abcdefghijk\x0aS
2190  1: a
2191  2: b
2192  3: c
2193  4: d
2194  5: e
2195  6: f
2196  7: g
2197  8: h
2198  9: i
2199 10: j
2200 11: k
2201
2202 /ab\gdef/
2203     abgdef
2204  0: abgdef
2205
2206 /a{0}bc/
2207     bc
2208  0: bc
2209
2210 /(a|(bc)){0,0}?xyz/
2211     xyz
2212  0: xyz
2213
2214 /abc[\10]de/
2215     abc\010de
2216  0: abc\x08de
2217
2218 /abc[\1]de/
2219     abc\1de
2220  0: abc\x01de
2221
2222 /(abc)[\1]de/
2223     abc\1de
2224  0: abc\x01de
2225  1: abc
2226
2227 /a.b(?s)/
2228     a\nb
2229  0: a\x0ab
2230
2231 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2232     baNOTccccd
2233  0: baNOTcccc
2234  1: b
2235  2: a
2236  3: NOT
2237  4: cccc
2238     baNOTcccd
2239  0: baNOTccc
2240  1: b
2241  2: a
2242  3: NOT
2243  4: ccc
2244     baNOTccd
2245  0: baNOTcc
2246  1: b
2247  2: a
2248  3: NO
2249  4: Tcc
2250     bacccd
2251  0: baccc
2252  1: b
2253  2: a
2254  3: 
2255  4: ccc
2256     *** Failers
2257  0: *** Failers
2258  1: *
2259  2: *
2260  3: * Fail
2261  4: ers
2262     anything
2263 No match
2264     b\bc   
2265 No match
2266     baccd
2267 No match
2268
2269 /[^a]/
2270     Abc
2271  0: A
2272   
2273 /[^a]/i
2274     Abc 
2275  0: b
2276
2277 /[^a]+/
2278     AAAaAbc
2279  0: AAA
2280   
2281 /[^a]+/i
2282     AAAaAbc 
2283  0: bc
2284
2285 /[^a]+/
2286     bbb\nccc
2287  0: bbb\x0accc
2288    
2289 /[^k]$/
2290     abc
2291  0: c
2292     *** Failers
2293  0: s
2294     abk   
2295 No match
2296    
2297 /[^k]{2,3}$/
2298     abc
2299  0: abc
2300     kbc
2301  0: bc
2302     kabc 
2303  0: abc
2304     *** Failers
2305  0: ers
2306     abk
2307 No match
2308     akb
2309 No match
2310     akk 
2311 No match
2312
2313 /^\d{8,}\@.+[^k]$/
2314     12345678\@a.b.c.d
2315  0: 12345678@a.b.c.d
2316     123456789\@x.y.z
2317  0: 123456789@x.y.z
2318     *** Failers
2319 No match
2320     12345678\@x.y.uk
2321 No match
2322     1234567\@a.b.c.d       
2323 No match
2324
2325 /(a)\1{8,}/
2326     aaaaaaaaa
2327  0: aaaaaaaaa
2328  1: a
2329     aaaaaaaaaa
2330  0: aaaaaaaaaa
2331  1: a
2332     *** Failers
2333 No match
2334     aaaaaaa   
2335 No match
2336
2337 /[^a]/
2338     aaaabcd
2339  0: b
2340     aaAabcd 
2341  0: A
2342
2343 /[^a]/i
2344     aaaabcd
2345  0: b
2346     aaAabcd 
2347  0: b
2348
2349 /[^az]/
2350     aaaabcd
2351  0: b
2352     aaAabcd 
2353  0: A
2354
2355 /[^az]/i
2356     aaaabcd
2357  0: b
2358     aaAabcd 
2359  0: b
2360
2361 /\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/
2362  \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
2363  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
2364
2365 /P[^*]TAIRE[^*]{1,6}?LL/
2366     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2367  0: PSTAIREISLL
2368
2369 /P[^*]TAIRE[^*]{1,}?LL/
2370     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2371  0: PSTAIREISLL
2372
2373 /(\.\d\d[1-9]?)\d+/
2374     1.230003938
2375  0: .230003938
2376  1: .23
2377     1.875000282   
2378  0: .875000282
2379  1: .875
2380     1.235  
2381  0: .235
2382  1: .23
2383                   
2384 /(\.\d\d((?=0)|\d(?=\d)))/
2385     1.230003938      
2386  0: .23
2387  1: .23
2388  2: 
2389     1.875000282
2390  0: .875
2391  1: .875
2392  2: 5
2393     *** Failers 
2394 No match
2395     1.235 
2396 No match
2397     
2398 /a(?)b/
2399     ab 
2400  0: ab
2401  
2402 /\b(foo)\s+(\w+)/i
2403     Food is on the foo table
2404  0: foo table
2405  1: foo
2406  2: table
2407     
2408 /foo(.*)bar/
2409     The food is under the bar in the barn.
2410  0: food is under the bar in the bar
2411  1: d is under the bar in the 
2412     
2413 /foo(.*?)bar/  
2414     The food is under the bar in the barn.
2415  0: food is under the bar
2416  1: d is under the 
2417
2418 /(.*)(\d*)/
2419     I have 2 numbers: 53147
2420  0: I have 2 numbers: 53147
2421  1: I have 2 numbers: 53147
2422  2: 
2423     
2424 /(.*)(\d+)/
2425     I have 2 numbers: 53147
2426  0: I have 2 numbers: 53147
2427  1: I have 2 numbers: 5314
2428  2: 7
2429  
2430 /(.*?)(\d*)/
2431     I have 2 numbers: 53147
2432  0: 
2433  1: 
2434  2: 
2435
2436 /(.*?)(\d+)/
2437     I have 2 numbers: 53147
2438  0: I have 2
2439  1: I have 
2440  2: 2
2441
2442 /(.*)(\d+)$/
2443     I have 2 numbers: 53147
2444  0: I have 2 numbers: 53147
2445  1: I have 2 numbers: 5314
2446  2: 7
2447
2448 /(.*?)(\d+)$/
2449     I have 2 numbers: 53147
2450  0: I have 2 numbers: 53147
2451  1: I have 2 numbers: 
2452  2: 53147
2453
2454 /(.*)\b(\d+)$/
2455     I have 2 numbers: 53147
2456  0: I have 2 numbers: 53147
2457  1: I have 2 numbers: 
2458  2: 53147
2459
2460 /(.*\D)(\d+)$/
2461     I have 2 numbers: 53147
2462  0: I have 2 numbers: 53147
2463  1: I have 2 numbers: 
2464  2: 53147
2465
2466 /^\D*(?!123)/
2467     ABC123
2468  0: AB
2469      
2470 /^(\D*)(?=\d)(?!123)/
2471     ABC445
2472  0: ABC
2473  1: ABC
2474     *** Failers
2475 No match
2476     ABC123
2477 No match
2478     
2479 /^[W-]46]/
2480     W46]789 
2481  0: W46]
2482     -46]789
2483  0: -46]
2484     *** Failers
2485 No match
2486     Wall
2487 No match
2488     Zebra
2489 No match
2490     42
2491 No match
2492     [abcd] 
2493 No match
2494     ]abcd[
2495 No match
2496        
2497 /^[W-\]46]/
2498     W46]789 
2499  0: W
2500     Wall
2501  0: W
2502     Zebra
2503  0: Z
2504     Xylophone  
2505  0: X
2506     42
2507  0: 4
2508     [abcd] 
2509  0: [
2510     ]abcd[
2511  0: ]
2512     \\backslash 
2513  0: \
2514     *** Failers
2515 No match
2516     -46]789
2517 No match
2518     well
2519 No match
2520     
2521 /\d\d\/\d\d\/\d\d\d\d/
2522     01/01/2000
2523  0: 01/01/2000
2524
2525 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2526   word cat dog elephant mussel cow horse canary baboon snake shark otherword
2527  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2528   word cat dog elephant mussel cow horse canary baboon snake shark
2529 No match
2530
2531 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2532   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
2533 No match
2534
2535 /^(a){0,0}/
2536     bcd
2537  0: 
2538     abc
2539  0: 
2540     aab     
2541  0: 
2542
2543 /^(a){0,1}/
2544     bcd
2545  0: 
2546     abc
2547  0: a
2548  1: a
2549     aab  
2550  0: a
2551  1: a
2552
2553 /^(a){0,2}/
2554     bcd
2555  0: 
2556     abc
2557  0: a
2558  1: a
2559     aab  
2560  0: aa
2561  1: a
2562
2563 /^(a){0,3}/
2564     bcd
2565  0: 
2566     abc
2567  0: a
2568  1: a
2569     aab
2570  0: aa
2571  1: a
2572     aaa   
2573  0: aaa
2574  1: a
2575
2576 /^(a){0,}/
2577     bcd
2578  0: 
2579     abc
2580  0: a
2581  1: a
2582     aab
2583  0: aa
2584  1: a
2585     aaa
2586  0: aaa
2587  1: a
2588     aaaaaaaa    
2589  0: aaaaaaaa
2590  1: a
2591
2592 /^(a){1,1}/
2593     bcd
2594 No match
2595     abc
2596  0: a
2597  1: a
2598     aab  
2599  0: a
2600  1: a
2601
2602 /^(a){1,2}/
2603     bcd
2604 No match
2605     abc
2606  0: a
2607  1: a
2608     aab  
2609  0: aa
2610  1: a
2611
2612 /^(a){1,3}/
2613     bcd
2614 No match
2615     abc
2616  0: a
2617  1: a
2618     aab
2619  0: aa
2620  1: a
2621     aaa   
2622  0: aaa
2623  1: a
2624
2625 /^(a){1,}/
2626     bcd
2627 No match
2628     abc
2629  0: a
2630  1: a
2631     aab
2632  0: aa
2633  1: a
2634     aaa
2635  0: aaa
2636  1: a
2637     aaaaaaaa    
2638  0: aaaaaaaa
2639  1: a
2640
2641 /.*\.gif/
2642     borfle\nbib.gif\nno
2643  0: bib.gif
2644
2645 /.{0,}\.gif/
2646     borfle\nbib.gif\nno
2647  0: bib.gif
2648
2649 /.*\.gif/m
2650     borfle\nbib.gif\nno
2651  0: bib.gif
2652
2653 /.*\.gif/s
2654     borfle\nbib.gif\nno
2655  0: borfle\x0abib.gif
2656
2657 /.*\.gif/ms
2658     borfle\nbib.gif\nno
2659  0: borfle\x0abib.gif
2660     
2661 /.*$/
2662     borfle\nbib.gif\nno
2663  0: no
2664
2665 /.*$/m
2666     borfle\nbib.gif\nno
2667  0: borfle
2668
2669 /.*$/s
2670     borfle\nbib.gif\nno
2671  0: borfle\x0abib.gif\x0ano
2672
2673 /.*$/ms
2674     borfle\nbib.gif\nno
2675  0: borfle\x0abib.gif\x0ano
2676     
2677 /.*$/
2678     borfle\nbib.gif\nno\n
2679  0: no
2680
2681 /.*$/m
2682     borfle\nbib.gif\nno\n
2683  0: borfle
2684
2685 /.*$/s
2686     borfle\nbib.gif\nno\n
2687  0: borfle\x0abib.gif\x0ano\x0a
2688
2689 /.*$/ms
2690     borfle\nbib.gif\nno\n
2691  0: borfle\x0abib.gif\x0ano\x0a
2692     
2693 /(.*X|^B)/
2694     abcde\n1234Xyz
2695  0: 1234X
2696  1: 1234X
2697     BarFoo 
2698  0: B
2699  1: B
2700     *** Failers
2701 No match
2702     abcde\nBar  
2703 No match
2704
2705 /(.*X|^B)/m
2706     abcde\n1234Xyz
2707  0: 1234X
2708  1: 1234X
2709     BarFoo 
2710  0: B
2711  1: B
2712     abcde\nBar  
2713  0: B
2714  1: B
2715
2716 /(.*X|^B)/s
2717     abcde\n1234Xyz
2718  0: abcde\x0a1234X
2719  1: abcde\x0a1234X
2720     BarFoo 
2721  0: B
2722  1: B
2723     *** Failers
2724 No match
2725     abcde\nBar  
2726 No match
2727
2728 /(.*X|^B)/ms
2729     abcde\n1234Xyz
2730  0: abcde\x0a1234X
2731  1: abcde\x0a1234X
2732     BarFoo 
2733  0: B
2734  1: B
2735     abcde\nBar  
2736  0: B
2737  1: B
2738
2739 /(?s)(.*X|^B)/
2740     abcde\n1234Xyz
2741  0: abcde\x0a1234X
2742  1: abcde\x0a1234X
2743     BarFoo 
2744  0: B
2745  1: B
2746     *** Failers 
2747 No match
2748     abcde\nBar  
2749 No match
2750
2751 /(?s:.*X|^B)/
2752     abcde\n1234Xyz
2753  0: abcde\x0a1234X
2754     BarFoo 
2755  0: B
2756     *** Failers 
2757 No match
2758     abcde\nBar  
2759 No match
2760
2761 /^.*B/
2762     **** Failers
2763 No match
2764     abc\nB
2765 No match
2766      
2767 /(?s)^.*B/
2768     abc\nB
2769  0: abc\x0aB
2770
2771 /(?m)^.*B/
2772     abc\nB
2773  0: B
2774      
2775 /(?ms)^.*B/
2776     abc\nB
2777  0: abc\x0aB
2778
2779 /(?ms)^B/
2780     abc\nB
2781  0: B
2782
2783 /(?s)B$/
2784     B\n
2785  0: B
2786
2787 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2788     123456654321
2789  0: 123456654321
2790   
2791 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2792     123456654321 
2793  0: 123456654321
2794
2795 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2796     123456654321
2797  0: 123456654321
2798   
2799 /^[abc]{12}/
2800     abcabcabcabc
2801  0: abcabcabcabc
2802     
2803 /^[a-c]{12}/
2804     abcabcabcabc
2805  0: abcabcabcabc
2806     
2807 /^(a|b|c){12}/
2808     abcabcabcabc 
2809  0: abcabcabcabc
2810  1: c
2811
2812 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2813     n
2814  0: n
2815     *** Failers 
2816 No match
2817     z 
2818 No match
2819
2820 /abcde{0,0}/
2821     abcd
2822  0: abcd
2823     *** Failers
2824 No match
2825     abce  
2826 No match
2827
2828 /ab[cd]{0,0}e/
2829     abe
2830  0: abe
2831     *** Failers
2832 No match
2833     abcde 
2834 No match
2835     
2836 /ab(c){0,0}d/
2837     abd
2838  0: abd
2839     *** Failers
2840 No match
2841     abcd   
2842 No match
2843
2844 /a(b*)/
2845     a
2846  0: a
2847  1: 
2848     ab
2849  0: ab
2850  1: b
2851     abbbb
2852  0: abbbb
2853  1: bbbb
2854     *** Failers
2855  0: a
2856  1: 
2857     bbbbb    
2858 No match
2859     
2860 /ab\d{0}e/
2861     abe
2862  0: abe
2863     *** Failers
2864 No match
2865     ab1e   
2866 No match
2867     
2868 /"([^\\"]+|\\.)*"/
2869     the \"quick\" brown fox
2870  0: "quick"
2871  1: quick
2872     \"the \\\"quick\\\" brown fox\" 
2873  0: "the \"quick\" brown fox"
2874  1:  brown fox
2875
2876 /.*?/g+
2877     abc
2878  0: 
2879  0+ abc
2880  0: a
2881  0+ bc
2882  0: 
2883  0+ bc
2884  0: b
2885  0+ c
2886  0: 
2887  0+ c
2888  0: c
2889  0+ 
2890  0: 
2891  0+ 
2892   
2893 /\b/g+
2894     abc 
2895  0: 
2896  0+ abc
2897  0: 
2898  0+ 
2899
2900 /\b/+g
2901     abc 
2902  0: 
2903  0+ abc
2904  0: 
2905  0+ 
2906
2907 //g
2908     abc
2909  0: 
2910  0: 
2911  0: 
2912  0: 
2913
2914 /<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
2915   <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>
2916  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>
2917  1:  BGCOLOR='#DBE9E9'
2918  2:  align=left valign=top
2919  3: 43.
2920  4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2921  5: 
2922  6: 
2923  7: <unset>
2924  8:  align=left valign=top
2925  9: Lega lstaff.com
2926 10:  align=left valign=top
2927 11: CA - Statewide
2928
2929 /a[^a]b/
2930     acb
2931  0: acb
2932     a\nb
2933  0: a\x0ab
2934     
2935 /a.b/
2936     acb
2937  0: acb
2938     *** Failers 
2939 No match
2940     a\nb   
2941 No match
2942     
2943 /a[^a]b/s
2944     acb
2945  0: acb
2946     a\nb  
2947  0: a\x0ab
2948     
2949 /a.b/s
2950     acb
2951  0: acb
2952     a\nb  
2953  0: a\x0ab
2954
2955 /^(b+?|a){1,2}?c/
2956     bac
2957  0: bac
2958  1: a
2959     bbac
2960  0: bbac
2961  1: a
2962     bbbac
2963  0: bbbac
2964  1: a
2965     bbbbac
2966  0: bbbbac
2967  1: a
2968     bbbbbac 
2969  0: bbbbbac
2970  1: a
2971
2972 /^(b+|a){1,2}?c/
2973     bac
2974  0: bac
2975  1: a
2976     bbac
2977  0: bbac
2978  1: a
2979     bbbac
2980  0: bbbac
2981  1: a
2982     bbbbac
2983  0: bbbbac
2984  1: a
2985     bbbbbac 
2986  0: bbbbbac
2987  1: a
2988     
2989 /(?!\A)x/m
2990     x\nb\n
2991 No match
2992     a\bx\n  
2993  0: x
2994     
2995 /\x0{ab}/
2996     \0{ab} 
2997  0: \x00{ab}
2998
2999 /(A|B)*?CD/
3000     CD 
3001  0: CD
3002     
3003 /(A|B)*CD/
3004     CD 
3005  0: CD
3006
3007 /(AB)*?\1/
3008     ABABAB
3009  0: ABAB
3010  1: AB
3011
3012 /(AB)*\1/
3013     ABABAB
3014  0: ABABAB
3015  1: AB
3016     
3017 / End of testinput1 /
3018