source: trunk/third/pcre/testdata/testoutput1 @ 19309

Revision 19309, 64.2 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r19308, which included commits to RCS files with non-trunk default branches.
Line 
1PCRE 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
7No 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?
11No 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
89No match
90    abxyzpqrrabbxyyyypqAzz
91No match
92    abxyzpqrrrrabbxyyyypqAzz
93No match
94    abxyzpqrrrabxyyyypqAzz
95No match
96    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
97No match
98    aaaabcxyzzzzpqrrrabbbxyyypqAzz
99No match
100    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
101No 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
111No match
112    zz
113No match
114    abcabcabczz
115No match
116    >>abczz
117No 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
145No match
146    aaac
147No match
148    abbbbbbbbbbbac
149No 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
177No match
178    aaac
179No match
180    abbbbbbbbbbbac
181No 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
199No match
200    bababbc
201No match
202    babababc
203No 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
216No match
217    bababbc
218No match
219    babababc
220No 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
240No match
241    fthing
242No match
243    [thing
244No match
245    \\thing
246No 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
258No match
259    athing
260No match
261    fthing
262No match
263
264/^[^ab\]cde]/
265    fthing
266 0: f
267    [thing
268 0: [
269    \\thing
270 0: \
271    *** Failers
272 0: *
273    athing
274No match
275    bthing
276No match
277    ]thing
278No match
279    cthing
280No match
281    dthing
282No match
283    ething
284No match
285
286/^[^]cde]/
287    athing
288 0: a
289    fthing
290 0: f
291    *** Failers
292 0: *
293    ]thing
294No match
295    cthing
296No match
297    dthing
298No match
299    ething
300No match
301
302/^\/
303    
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
336No match
337    abc
338No 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
354No match
355    xxx
356No 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
366No match
367    123
368No 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
380No match
381    123
382No 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
392No match
393    !pqr=apquxz.ixr.zzz.ac.uk
394No match
395    abc!=apquxz.ixr.zzz.ac.uk
396No match
397    abc!pqr=apquxz:ixr.zzz.ac.uk
398No match
399    abc!pqr=apquxz.ixr.zzz.ac.ukk
400No match
401
402/:/
403    Well, we need a colon: somewhere
404 0: :
405    *** Fail if we don't
406No 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
434No match
435    0zzz
436No match
437    gzzz
438No match
439    fed\x20
440No match
441    Any old rubbish
442No 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
456No match
457    .1.2.3333
458No match
459    1.2.3
460No match
461    1234.2.3
462No 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
476No match
477    1IN SOA non-sp1 non-sp2(
478No 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
497No match
498    -abc.peq.
499No 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
517No match
518    *.0
519No match
520    *.a-
521No match
522    *.a-b.c-
523No match
524    *.c-a.0-c
525No 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
569No match
570    \"1234\" : things
571No match
572
573/^$/
574    \
575 0:
576    *** Failers
577No match
578
579/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
580    ab c
581 0: ab c
582    *** Failers
583No match
584    abc
585No match
586    ab cde
587No match
588
589/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
590    ab c
591 0: ab c
592    *** Failers
593No match
594    abc
595No match
596    ab cde
597No 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
605No match
606    abcd
607No match
608    ab d
609No 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
62310: klm
62411: lm
62512: 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
715No match
716    1234567
717No 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
729No match
730    123456
731No 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
755No match
756    abc=defdef
757No 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
77110: j
77211: k
77312: 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
78510: j
78611: k
78712: 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
826No match
827    From abcd  Sep 01 12:33:02 1997
828No 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
864No match
865    abc123
866No 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
909No match
910    abc
911No match
912
913/(?=^)abc/
914    abc
915 0: abc
916    *** Failers
917No match
918    the abc
919No 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
1150No match
1151    The quick brown fox
1152No 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
1751No match
1752    The quick brown fox
1753No 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
1785No match
1786    A\0Z
1787No match
1788    A\0\x0\0\x0Z
1789No 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
1801No match
1802    cowbell
1803No 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
1817No match
1818    abc
1819No match
1820
1821/^a     b
1822      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
1837No match
1838    acb
1839No 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
1852No match
1853    ab
1854No 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
1867No match
1868    acb
1869No match
1870
1871/^(a|)\1{2}b/
1872    aaab
1873 0: aaab
1874 1: a
1875    b
1876 0: b
1877 1:
1878    *** Failers
1879No match
1880    ab
1881No match
1882    aab
1883No match
1884    aaaab
1885No 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
1898No match
1899    ab
1900No match
1901    aab
1902No match
1903    aaaaab
1904No match
1905
1906/ab{1,3}bc/
1907    abbbbc
1908 0: abbbbc
1909    abbbc
1910 0: abbbc
1911    abbc
1912 0: abbc
1913    *** Failers
1914No match
1915    abc
1916No match
1917    abbbbbc
1918No 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
1945No match
1946    wxy
1947No 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
1975No match
1976    qqq\nabc
1977No match
1978    abc\nzzz
1979No match
1980    qqq\nabc\nzzz
1981No match
1982
1983/\Aabc\Z/m
1984    abc
1985 0: abc
1986    abc\n
1987 0: abc
1988    *** Failers
1989No match
1990    qqq\nabc
1991No match
1992    abc\nzzz
1993No match
1994    qqq\nabc\nzzz
1995No 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
2007No 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
2021No match
2022
2023/[az-]+/
2024    za-
2025 0: za-
2026    *** Failers
2027 0: a
2028    b
2029No match
2030
2031/[a\-z]+/
2032    a-z
2033 0: a-z
2034    *** Failers
2035 0: a
2036    b
2037No match
2038
2039/[a-z]+/
2040    abcdxyz
2041 0: abcdxyz
2042
2043/[\d-]+/
2044    12-34
2045 0: 12-34
2046    *** Failers
2047No match
2048    aaa
2049No match
2050
2051/[\d-z]+/
2052    12-34z
2053 0: 12-34z
2054    *** Failers
2055No match
2056    aaa
2057No match
2058
2059/\x5c/
2060    \\
2061 0: \
2062
2063/\x20Z/
2064    the Zoo
2065 0:  Z
2066    *** Failers
2067No match
2068    Zulu
2069No 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
2102No match
2103    a\nb
2104No match
2105
2106/abc$/
2107    abc
2108 0: abc
2109    abc\n
2110 0: abc
2111    *** Failers
2112No match
2113    abc\ndef
2114No 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
218310: j
218411: k
218512: 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
219910: j
220011: 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
2263No match
2264    b\bc   
2265No match
2266    baccd
2267No 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   
2295No 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
2307No match
2308    akb
2309No match
2310    akk
2311No 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
2319No match
2320    12345678\@x.y.uk
2321No match
2322    1234567\@a.b.c.d       
2323No match
2324
2325/(a)\1{8,}/
2326    aaaaaaaaa
2327 0: aaaaaaaaa
2328 1: a
2329    aaaaaaaaaa
2330 0: aaaaaaaaaa
2331 1: a
2332    *** Failers
2333No match
2334    aaaaaaa   
2335No 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
2394No match
2395    1.235
2396No 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
2475No match
2476    ABC123
2477No match
2478   
2479/^[W-]46]/
2480    W46]789
2481 0: W46]
2482    -46]789
2483 0: -46]
2484    *** Failers
2485No match
2486    Wall
2487No match
2488    Zebra
2489No match
2490    42
2491No match
2492    [abcd]
2493No match
2494    ]abcd[
2495No 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
2515No match
2516    -46]789
2517No match
2518    well
2519No 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
2529No 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
2533No 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
2594No match
2595    abc
2596 0: a
2597 1: a
2598    aab 
2599 0: a
2600 1: a
2601
2602/^(a){1,2}/
2603    bcd
2604No match
2605    abc
2606 0: a
2607 1: a
2608    aab 
2609 0: aa
2610 1: a
2611
2612/^(a){1,3}/
2613    bcd
2614No 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
2627No 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
2701No match
2702    abcde\nBar 
2703No 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
2724No match
2725    abcde\nBar 
2726No 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
2747No match
2748    abcde\nBar 
2749No match
2750
2751/(?s:.*X|^B)/
2752    abcde\n1234Xyz
2753 0: abcde\x0a1234X
2754    BarFoo
2755 0: B
2756    *** Failers
2757No match
2758    abcde\nBar 
2759No match
2760
2761/^.*B/
2762    **** Failers
2763No match
2764    abc\nB
2765No 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
2816No match
2817    z
2818No match
2819
2820/abcde{0,0}/
2821    abcd
2822 0: abcd
2823    *** Failers
2824No match
2825    abce 
2826No match
2827
2828/ab[cd]{0,0}e/
2829    abe
2830 0: abe
2831    *** Failers
2832No match
2833    abcde
2834No match
2835   
2836/ab(c){0,0}d/
2837    abd
2838 0: abd
2839    *** Failers
2840No match
2841    abcd   
2842No 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   
2858No match
2859   
2860/ab\d{0}e/
2861    abe
2862 0: abe
2863    *** Failers
2864No match
2865    ab1e   
2866No 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
292610:  align=left valign=top
292711: 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
2939No match
2940    a\nb   
2941No 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
2991No 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
Note: See TracBrowser for help on using the repository browser.