/[pcre]/code/tags/pcre-2.00/testoutput
ViewVC logotype

Contents of /code/tags/pcre-2.00/testoutput

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17 - (show annotations) (download)
Sat Feb 24 21:38:29 2007 UTC (7 years, 5 months ago) by nigel
Original Path: code/trunk/testoutput
File size: 57771 byte(s)
Load pcre-1.07 into code/trunk.

1 Testing Perl-Compatible Regular Expressions
2 PCRE version 1.07 16-Feb-1998
3
4 /the quick brown fox/
5 the quick brown fox
6 0: the quick brown fox
7 The quick brown FOX
8 No match
9 What do you know about the quick brown fox?
10 0: the quick brown fox
11 What do you know about THE QUICK BROWN FOX?
12 No match
13
14 /The quick brown fox/i
15 the quick brown fox
16 0: the quick brown fox
17 The quick brown FOX
18 0: The quick brown FOX
19 What do you know about the quick brown fox?
20 0: the quick brown fox
21 What do you know about THE QUICK BROWN FOX?
22 0: THE QUICK BROWN FOX
23
24 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
25 abcd\t\n\r\f\a\e9;\$\\?caxyz
26 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
27
28 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
29 abxyzpqrrrabbxyyyypqAzz
30 0: abxyzpqrrrabbxyyyypqAzz
31 abxyzpqrrrabbxyyyypqAzz
32 0: abxyzpqrrrabbxyyyypqAzz
33 aabxyzpqrrrabbxyyyypqAzz
34 0: aabxyzpqrrrabbxyyyypqAzz
35 aaabxyzpqrrrabbxyyyypqAzz
36 0: aaabxyzpqrrrabbxyyyypqAzz
37 aaaabxyzpqrrrabbxyyyypqAzz
38 0: aaaabxyzpqrrrabbxyyyypqAzz
39 abcxyzpqrrrabbxyyyypqAzz
40 0: abcxyzpqrrrabbxyyyypqAzz
41 aabcxyzpqrrrabbxyyyypqAzz
42 0: aabcxyzpqrrrabbxyyyypqAzz
43 aaabcxyzpqrrrabbxyyyypAzz
44 0: aaabcxyzpqrrrabbxyyyypAzz
45 aaabcxyzpqrrrabbxyyyypqAzz
46 0: aaabcxyzpqrrrabbxyyyypqAzz
47 aaabcxyzpqrrrabbxyyyypqqAzz
48 0: aaabcxyzpqrrrabbxyyyypqqAzz
49 aaabcxyzpqrrrabbxyyyypqqqAzz
50 0: aaabcxyzpqrrrabbxyyyypqqqAzz
51 aaabcxyzpqrrrabbxyyyypqqqqAzz
52 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
53 aaabcxyzpqrrrabbxyyyypqqqqqAzz
54 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
55 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
56 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
57 aaaabcxyzpqrrrabbxyyyypqAzz
58 0: aaaabcxyzpqrrrabbxyyyypqAzz
59 abxyzzpqrrrabbxyyyypqAzz
60 0: abxyzzpqrrrabbxyyyypqAzz
61 aabxyzzzpqrrrabbxyyyypqAzz
62 0: aabxyzzzpqrrrabbxyyyypqAzz
63 aaabxyzzzzpqrrrabbxyyyypqAzz
64 0: aaabxyzzzzpqrrrabbxyyyypqAzz
65 aaaabxyzzzzpqrrrabbxyyyypqAzz
66 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
67 abcxyzzpqrrrabbxyyyypqAzz
68 0: abcxyzzpqrrrabbxyyyypqAzz
69 aabcxyzzzpqrrrabbxyyyypqAzz
70 0: aabcxyzzzpqrrrabbxyyyypqAzz
71 aaabcxyzzzzpqrrrabbxyyyypqAzz
72 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
73 aaaabcxyzzzzpqrrrabbxyyyypqAzz
74 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
75 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
76 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
77 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
78 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
79 aaabcxyzpqrrrabbxyyyypABzz
80 0: aaabcxyzpqrrrabbxyyyypABzz
81 aaabcxyzpqrrrabbxyyyypABBzz
82 0: aaabcxyzpqrrrabbxyyyypABBzz
83 >>>aaabxyzpqrrrabbxyyyypqAzz
84 0: aaabxyzpqrrrabbxyyyypqAzz
85 >aaaabxyzpqrrrabbxyyyypqAzz
86 0: aaaabxyzpqrrrabbxyyyypqAzz
87 >>>>abcxyzpqrrrabbxyyyypqAzz
88 0: abcxyzpqrrrabbxyyyypqAzz
89 *** Failers
90 No match
91 abxyzpqrrabbxyyyypqAzz
92 No match
93 abxyzpqrrrrabbxyyyypqAzz
94 No match
95 abxyzpqrrrabxyyyypqAzz
96 No match
97 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
98 No match
99 aaaabcxyzzzzpqrrrabbbxyyypqAzz
100 No match
101 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
102 No match
103
104 /^(abc){1,2}zz/
105 abczz
106 0: abczz
107 1: abc
108 abcabczz
109 0: abcabczz
110 1: abc
111 *** Failers
112 No match
113 zz
114 No match
115 abcabcabczz
116 No match
117 >>abczz
118 No match
119
120 /^(b+?|a){1,2}?c/
121 bc
122 0: bc
123 1: b
124 bbc
125 0: bbc
126 1: b
127 bbbc
128 0: bbbc
129 1: bb
130 bac
131 0: bac
132 1: a
133 bbac
134 0: bbac
135 1: a
136 aac
137 0: aac
138 1: a
139 abbbbbbbbbbbc
140 0: abbbbbbbbbbbc
141 1: bbbbbbbbbbb
142 bbbbbbbbbbbac
143 0: bbbbbbbbbbbac
144 1: a
145 *** Failers
146 No match
147 aaac
148 No match
149 abbbbbbbbbbbac
150 No match
151
152 /^(b+|a){1,2}c/
153 bc
154 0: bc
155 1: b
156 bbc
157 0: bbc
158 1: bb
159 bbbc
160 0: bbbc
161 1: bbb
162 bac
163 0: bac
164 1: a
165 bbac
166 0: bbac
167 1: a
168 aac
169 0: aac
170 1: a
171 abbbbbbbbbbbc
172 0: abbbbbbbbbbbc
173 1: bbbbbbbbbbb
174 bbbbbbbbbbbac
175 0: bbbbbbbbbbbac
176 1: a
177 *** Failers
178 No match
179 aaac
180 No match
181 abbbbbbbbbbbac
182 No match
183
184 /^(b+|a){1,2}?bc/
185 bbc
186 0: bbc
187 1: b
188
189 /^(b*|ba){1,2}?bc/
190 babc
191 0: babc
192 1: ba
193 bbabc
194 0: bbabc
195 1: ba
196 bababc
197 0: bababc
198 1: ba
199 *** Failers
200 No match
201 bababbc
202 No match
203 babababc
204 No match
205
206 /^(ba|b*){1,2}?bc/
207 babc
208 0: babc
209 1: ba
210 bbabc
211 0: bbabc
212 1: ba
213 bababc
214 0: bababc
215 1: ba
216 *** Failers
217 No match
218 bababbc
219 No match
220 babababc
221 No match
222
223 /^\ca\cA\c[\c{\c:/
224 \x01\x01\e;z
225 0: \x01\x01\x1b;z
226
227 /^[ab\]cde]/
228 athing
229 0: a
230 bthing
231 0: b
232 ]thing
233 0: ]
234 cthing
235 0: c
236 dthing
237 0: d
238 ething
239 0: e
240 *** Failers
241 No match
242 fthing
243 No match
244 [thing
245 No match
246 \\thing
247 No match
248
249 /^[]cde]/
250 ]thing
251 0: ]
252 cthing
253 0: c
254 dthing
255 0: d
256 ething
257 0: e
258 *** Failers
259 No match
260 athing
261 No match
262 fthing
263 No match
264
265 /^[^ab\]cde]/
266 fthing
267 0: f
268 [thing
269 0: [
270 \\thing
271 0: \
272 *** Failers
273 0: *
274 athing
275 No match
276 bthing
277 No match
278 ]thing
279 No match
280 cthing
281 No match
282 dthing
283 No match
284 ething
285 No match
286
287 /^[^]cde]/
288 athing
289 0: a
290 fthing
291 0: f
292 *** Failers
293 0: *
294 ]thing
295 No match
296 cthing
297 No match
298 dthing
299 No match
300 ething
301 No match
302
303 /^\/
304
305 0: \x81
306
307 /^/
308
309 0: \xff
310
311 /^[0-9]+$/
312 0
313 0: 0
314 1
315 0: 1
316 2
317 0: 2
318 3
319 0: 3
320 4
321 0: 4
322 5
323 0: 5
324 6
325 0: 6
326 7
327 0: 7
328 8
329 0: 8
330 9
331 0: 9
332 10
333 0: 10
334 100
335 0: 100
336 *** Failers
337 No match
338 abc
339 No match
340
341 /^.*nter/
342 enter
343 0: enter
344 inter
345 0: inter
346 uponter
347 0: uponter
348
349 /^xxx[0-9]+$/
350 xxx0
351 0: xxx0
352 xxx1234
353 0: xxx1234
354 *** Failers
355 No match
356 xxx
357 No match
358
359 /^.+[0-9][0-9][0-9]$/
360 x123
361 0: x123
362 xx123
363 0: xx123
364 123456
365 0: 123456
366 *** Failers
367 No match
368 123
369 No match
370 x1234
371 0: x1234
372
373 /^.+?[0-9][0-9][0-9]$/
374 x123
375 0: x123
376 xx123
377 0: xx123
378 123456
379 0: 123456
380 *** Failers
381 No match
382 123
383 No match
384 x1234
385 0: x1234
386
387 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
388 abc!pqr=apquxz.ixr.zzz.ac.uk
389 0: abc!pqr=apquxz.ixr.zzz.ac.uk
390 1: abc
391 2: pqr
392 *** Failers
393 No match
394 !pqr=apquxz.ixr.zzz.ac.uk
395 No match
396 abc!=apquxz.ixr.zzz.ac.uk
397 No match
398 abc!pqr=apquxz:ixr.zzz.ac.uk
399 No match
400 abc!pqr=apquxz.ixr.zzz.ac.ukk
401 No match
402
403 /:/
404 Well, we need a colon: somewhere
405 0: :
406 *** Fail if we don't
407 No match
408
409 /([\da-f:]+)$/i
410 0abc
411 0: 0abc
412 1: 0abc
413 abc
414 0: abc
415 1: abc
416 fed
417 0: fed
418 1: fed
419 E
420 0: E
421 1: E
422 ::
423 0: ::
424 1: ::
425 5f03:12C0::932e
426 0: 5f03:12C0::932e
427 1: 5f03:12C0::932e
428 fed def
429 0: def
430 1: def
431 Any old stuff
432 0: ff
433 1: ff
434 *** Failers
435 No match
436 0zzz
437 No match
438 gzzz
439 No match
440 fed\x20
441 No match
442 Any old rubbish
443 No match
444
445 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
446 .1.2.3
447 0: .1.2.3
448 1: 1
449 2: 2
450 3: 3
451 A.12.123.0
452 0: A.12.123.0
453 1: 12
454 2: 123
455 3: 0
456 *** Failers
457 No match
458 .1.2.3333
459 No match
460 1.2.3
461 No match
462 1234.2.3
463 No match
464
465 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
466 1 IN SOA non-sp1 non-sp2(
467 0: 1 IN SOA non-sp1 non-sp2(
468 1: 1
469 2: non-sp1
470 3: non-sp2
471 1 IN SOA non-sp1 non-sp2 (
472 0: 1 IN SOA non-sp1 non-sp2 (
473 1: 1
474 2: non-sp1
475 3: non-sp2
476 *** Failers
477 No match
478 1IN SOA non-sp1 non-sp2(
479 No match
480
481 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
482 a.
483 0: a.
484 Z.
485 0: Z.
486 2.
487 0: 2.
488 ab-c.pq-r.
489 0: ab-c.pq-r.
490 1: .pq-r
491 sxk.zzz.ac.uk.
492 0: sxk.zzz.ac.uk.
493 1: .uk
494 x-.y-.
495 0: x-.y-.
496 1: .y-
497 *** Failers
498 No match
499 -abc.peq.
500 No match
501
502 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
503 *.a
504 0: *.a
505 *.b0-a
506 0: *.b0-a
507 1: 0-a
508 *.c3-b.c
509 0: *.c3-b.c
510 1: 3-b
511 2: .c
512 *.c-a.b-c
513 0: *.c-a.b-c
514 1: -a
515 2: .b-c
516 3: -c
517 *** Failers
518 No match
519 *.0
520 No match
521 *.a-
522 No match
523 *.a-b.c-
524 No match
525 *.c-a.0-c
526 No match
527
528 /^(?=ab(de))(abd)(e)/
529 abde
530 0: abde
531 1: de
532 2: abd
533 3: e
534
535 /^(?!(ab)de|x)(abd)(f)/
536 abdf
537 0: abdf
538 1: <unset>
539 2: abd
540 3: f
541
542 /^(?=(ab(cd)))(ab)/
543 abcd
544 0: ab
545 1: abcd
546 2: cd
547 3: ab
548
549 /^[\da-f](\.[\da-f])*$/i
550 a.b.c.d
551 0: a.b.c.d
552 1: .d
553 A.B.C.D
554 0: A.B.C.D
555 1: .D
556 a.b.c.1.2.3.C
557 0: a.b.c.1.2.3.C
558 1: .C
559
560 /^\".*\"\s*(;.*)?$/
561 \"1234\"
562 0: "1234"
563 \"abcd\" ;
564 0: "abcd" ;
565 1: ;
566 \"\" ; rhubarb
567 0: "" ; rhubarb
568 1: ; rhubarb
569 *** Failers
570 No match
571 \"1234\" : things
572 No match
573
574 /^$/
575 \
576 0:
577 *** Failers
578 No match
579
580 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
581 ab c
582 0: ab c
583 *** Failers
584 No match
585 abc
586 No match
587 ab cde
588 No match
589
590 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
591 ab c
592 0: ab c
593 *** Failers
594 No match
595 abc
596 No match
597 ab cde
598 No match
599
600 /^ a\ b[c ]d $/x
601 a bcd
602 0: a bcd
603 a b d
604 0: a b d
605 *** Failers
606 No match
607 abcd
608 No match
609 ab d
610 No match
611
612 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
613 abcdefhijklm
614 0: abcdefhijklm
615 1: abc
616 2: bc
617 3: c
618 4: def
619 5: ef
620 6: f
621 7: hij
622 8: ij
623 9: j
624 10: klm
625 11: lm
626 12: m
627
628 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
629 abcdefhijklm
630 0: abcdefhijklm
631 1: bc
632 2: c
633 3: ef
634 4: f
635 5: ij
636 6: j
637 7: lm
638 8: m
639
640 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
641 a+ Z0+\x08\n\x1d\x12
642 0: a+ Z0+\x08\x0a\x1d\x12
643
644 /^[.^$|()*+?{,}]+/
645 .^\$(*+)|{?,?}
646 0: .^$(*+)|{?,?}
647
648 /^a*\w/
649 z
650 0: z
651 az
652 0: az
653 aaaz
654 0: aaaz
655 a
656 0: a
657 aa
658 0: aa
659 aaaa
660 0: aaaa
661 a+
662 0: a
663 aa+
664 0: aa
665
666 /^a*?\w/
667 z
668 0: z
669 az
670 0: a
671 aaaz
672 0: a
673 a
674 0: a
675 aa
676 0: a
677 aaaa
678 0: a
679 a+
680 0: a
681 aa+
682 0: a
683
684 /^a+\w/
685 az
686 0: az
687 aaaz
688 0: aaaz
689 aa
690 0: aa
691 aaaa
692 0: aaaa
693 aa+
694 0: aa
695
696 /^a+?\w/
697 az
698 0: az
699 aaaz
700 0: aa
701 aa
702 0: aa
703 aaaa
704 0: aa
705 aa+
706 0: aa
707
708 /^\d{8}\w{2,}/
709 1234567890
710 0: 1234567890
711 12345678ab
712 0: 12345678ab
713 12345678__
714 0: 12345678__
715 *** Failers
716 No match
717 1234567
718 No match
719
720 /^[aeiou\d]{4,5}$/
721 uoie
722 0: uoie
723 1234
724 0: 1234
725 12345
726 0: 12345
727 aaaaa
728 0: aaaaa
729 *** Failers
730 No match
731 123456
732 No match
733
734 /^[aeiou\d]{4,5}?/
735 uoie
736 0: uoie
737 1234
738 0: 1234
739 12345
740 0: 1234
741 aaaaa
742 0: aaaa
743 123456
744 0: 1234
745
746 /\A(abc|def)=(\1){2,3}\Z/
747 abc=abcabc
748 0: abc=abcabc
749 1: abc
750 2: abc
751 def=defdefdef
752 0: def=defdefdef
753 1: def
754 2: def
755 *** Failers
756 No match
757 abc=defdef
758 No match
759
760 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
761 abcdefghijkcda2
762 0: abcdefghijkcda2
763 1: a
764 2: b
765 3: c
766 4: d
767 5: e
768 6: f
769 7: g
770 8: h
771 9: i
772 10: j
773 11: k
774 12: cd
775 abcdefghijkkkkcda2
776 0: abcdefghijkkkkcda2
777 1: a
778 2: b
779 3: c
780 4: d
781 5: e
782 6: f
783 7: g
784 8: h
785 9: i
786 10: j
787 11: k
788 12: cd
789
790 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
791 cataract cataract23
792 0: cataract cataract23
793 1: cataract
794 2: aract
795 3: ract
796 4:
797 5: 3
798 catatonic catatonic23
799 0: catatonic catatonic23
800 1: catatonic
801 2: atonic
802 3: tonic
803 4:
804 5: 3
805 caterpillar caterpillar23
806 0: caterpillar caterpillar23
807 1: caterpillar
808 2: erpillar
809 3: <unset>
810 4:
811 5: 3
812
813
814 /^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]/
815 From abcd Mon Sep 01 12:33:02 1997
816 0: From abcd Mon Sep 01 12:33
817 1: abcd
818
819 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
820 From abcd Mon Sep 01 12:33:02 1997
821 0: From abcd Mon Sep 01 12:33
822 1: Sep
823 From abcd Mon Sep 1 12:33:02 1997
824 0: From abcd Mon Sep 1 12:33
825 1: Sep
826 *** Failers
827 No match
828 From abcd Sep 01 12:33:02 1997
829 No match
830
831 /^12.34/s
832 12\n34
833 0: 12\x0a34
834 12\r34
835 0: 12\x0d34
836
837 /\w+(?=\t)/
838 the quick brown\t fox
839 0: brown
840
841 /foo(?!bar)(.*)/
842 foobar is foolish see?
843 0: foolish see?
844 1: lish see?
845
846 /(?:(?!foo)...|^.{0,2})bar(.*)/
847 foobar crowbar etc
848 0: rowbar etc
849 1: etc
850 barrel
851 0: barrel
852 1: rel
853 2barrel
854 0: 2barrel
855 1: rel
856 A barrel
857 0: A barrel
858 1: rel
859
860 /^(\D*)(?=\d)(?!123)/
861 abc456
862 0: abc
863 1: abc
864 *** Failers
865 No match
866 abc123
867 No match
868
869 /^1234(?# test newlines
870 inside)/
871 1234
872 0: 1234
873
874 /^1234 #comment in extended re
875 /x
876 1234
877 0: 1234
878
879 /#rhubarb
880 abcd/x
881 abcd
882 0: abcd
883
884 /^abcd#rhubarb/x
885 abcd
886 0: abcd
887
888 /^(a)\1{2,3}(.)/
889 aaab
890 0: aaab
891 1: a
892 2: b
893 aaaab
894 0: aaaab
895 1: a
896 2: b
897 aaaaab
898 0: aaaaa
899 1: a
900 2: a
901 aaaaaab
902 0: aaaaa
903 1: a
904 2: a
905
906 /(?!^)abc/
907 the abc
908 0: abc
909 *** Failers
910 No match
911 abc
912 No match
913
914 /(?=^)abc/
915 abc
916 0: abc
917 *** Failers
918 No match
919 the abc
920 No match
921
922 /^[ab]{1,3}(ab*|b)/
923 aabbbbb
924 0: aabb
925 1: b
926
927 /^[ab]{1,3}?(ab*|b)/
928 aabbbbb
929 0: aabbbbb
930 1: abbbbb
931
932 /^[ab]{1,3}?(ab*?|b)/
933 aabbbbb
934 0: aa
935 1: a
936
937 /^[ab]{1,3}(ab*?|b)/
938 aabbbbb
939 0: aabb
940 1: b
941
942 / (?: [\040\t] | \(
943 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
944 \) )* # optional leading comment
945 (?: (?:
946 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
947 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
948 |
949 " (?: # opening quote...
950 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
951 | # or
952 \\ [^\x80-\xff] # Escaped something (something != CR)
953 )* " # closing quote
954 ) # initial word
955 (?: (?: [\040\t] | \(
956 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
957 \) )* \. (?: [\040\t] | \(
958 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
959 \) )* (?:
960 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
961 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
962 |
963 " (?: # opening quote...
964 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
965 | # or
966 \\ [^\x80-\xff] # Escaped something (something != CR)
967 )* " # closing quote
968 ) )* # further okay, if led by a period
969 (?: [\040\t] | \(
970 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
971 \) )* @ (?: [\040\t] | \(
972 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
973 \) )* (?:
974 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
975 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
976 | \[ # [
977 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
978 \] # ]
979 ) # initial subdomain
980 (?: #
981 (?: [\040\t] | \(
982 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
983 \) )* \. # if led by a period...
984 (?: [\040\t] | \(
985 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
986 \) )* (?:
987 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
988 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
989 | \[ # [
990 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
991 \] # ]
992 ) # ...further okay
993 )*
994 # address
995 | # or
996 (?:
997 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
998 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
999 |
1000 " (?: # opening quote...
1001 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1002 | # or
1003 \\ [^\x80-\xff] # Escaped something (something != CR)
1004 )* " # closing quote
1005 ) # one word, optionally followed by....
1006 (?:
1007 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1008 \(
1009 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1010 \) | # comments, or...
1011
1012 " (?: # opening quote...
1013 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1014 | # or
1015 \\ [^\x80-\xff] # Escaped something (something != CR)
1016 )* " # closing quote
1017 # quoted strings
1018 )*
1019 < (?: [\040\t] | \(
1020 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1021 \) )* # leading <
1022 (?: @ (?: [\040\t] | \(
1023 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1024 \) )* (?:
1025 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1026 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1027 | \[ # [
1028 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1029 \] # ]
1030 ) # initial subdomain
1031 (?: #
1032 (?: [\040\t] | \(
1033 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1034 \) )* \. # if led by a period...
1035 (?: [\040\t] | \(
1036 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1037 \) )* (?:
1038 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1039 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1040 | \[ # [
1041 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1042 \] # ]
1043 ) # ...further okay
1044 )*
1045
1046 (?: (?: [\040\t] | \(
1047 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1048 \) )* , (?: [\040\t] | \(
1049 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1050 \) )* @ (?: [\040\t] | \(
1051 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1052 \) )* (?:
1053 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1054 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1055 | \[ # [
1056 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1057 \] # ]
1058 ) # initial subdomain
1059 (?: #
1060 (?: [\040\t] | \(
1061 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1062 \) )* \. # if led by a period...
1063 (?: [\040\t] | \(
1064 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1065 \) )* (?:
1066 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1067 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1068 | \[ # [
1069 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1070 \] # ]
1071 ) # ...further okay
1072 )*
1073 )* # further okay, if led by comma
1074 : # closing colon
1075 (?: [\040\t] | \(
1076 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1077 \) )* )? # optional route
1078 (?:
1079 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1080 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1081 |
1082 " (?: # opening quote...
1083 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1084 | # or
1085 \\ [^\x80-\xff] # Escaped something (something != CR)
1086 )* " # closing quote
1087 ) # initial word
1088 (?: (?: [\040\t] | \(
1089 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1090 \) )* \. (?: [\040\t] | \(
1091 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1092 \) )* (?:
1093 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1094 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1095 |
1096 " (?: # opening quote...
1097 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1098 | # or
1099 \\ [^\x80-\xff] # Escaped something (something != CR)
1100 )* " # closing quote
1101 ) )* # further okay, if led by a period
1102 (?: [\040\t] | \(
1103 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1104 \) )* @ (?: [\040\t] | \(
1105 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1106 \) )* (?:
1107 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1108 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1109 | \[ # [
1110 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1111 \] # ]
1112 ) # initial subdomain
1113 (?: #
1114 (?: [\040\t] | \(
1115 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1116 \) )* \. # if led by a period...
1117 (?: [\040\t] | \(
1118 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1119 \) )* (?:
1120 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1121 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1122 | \[ # [
1123 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1124 \] # ]
1125 ) # ...further okay
1126 )*
1127 # address spec
1128 (?: [\040\t] | \(
1129 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1130 \) )* > # trailing >
1131 # name and address
1132 ) (?: [\040\t] | \(
1133 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1134 \) )* # optional trailing comment
1135 /x
1136 Alan Other <user\@dom.ain>
1137 0: Alan Other <user@dom.ain>
1138 <user\@dom.ain>
1139 0: user@dom.ain
1140 user\@dom.ain
1141 0: user@dom.ain
1142 \"A. Other\" <user.1234\@dom.ain> (a comment)
1143 0: "A. Other" <user.1234@dom.ain> (a comment)
1144 A. Other <user.1234\@dom.ain> (a comment)
1145 0: Other <user.1234@dom.ain> (a comment)
1146 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1147 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1148 A missing angle <user\@some.where
1149 0: user@some.where
1150 *** Failers
1151 No match
1152 The quick brown fox
1153 No match
1154
1155 /[\040\t]* # Nab whitespace.
1156 (?:
1157 \( # (
1158 [^\\\x80-\xff\n\015()] * # normal*
1159 (?: # (
1160 (?: \\ [^\x80-\xff] |
1161 \( # (
1162 [^\\\x80-\xff\n\015()] * # normal*
1163 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1164 \) # )
1165 ) # special
1166 [^\\\x80-\xff\n\015()] * # normal*
1167 )* # )*
1168 \) # )
1169 [\040\t]* )* # If comment found, allow more spaces.
1170 # optional leading comment
1171 (?:
1172 (?:
1173 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1174 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1175 # Atom
1176 | # or
1177 " # "
1178 [^\\\x80-\xff\n\015"] * # normal
1179 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1180 " # "
1181 # Quoted string
1182 )
1183 [\040\t]* # Nab whitespace.
1184 (?:
1185 \( # (
1186 [^\\\x80-\xff\n\015()] * # normal*
1187 (?: # (
1188 (?: \\ [^\x80-\xff] |
1189 \( # (
1190 [^\\\x80-\xff\n\015()] * # normal*
1191 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1192 \) # )
1193 ) # special
1194 [^\\\x80-\xff\n\015()] * # normal*
1195 )* # )*
1196 \) # )
1197 [\040\t]* )* # If comment found, allow more spaces.
1198 (?:
1199 \.
1200 [\040\t]* # Nab whitespace.
1201 (?:
1202 \( # (
1203 [^\\\x80-\xff\n\015()] * # normal*
1204 (?: # (
1205 (?: \\ [^\x80-\xff] |
1206 \( # (
1207 [^\\\x80-\xff\n\015()] * # normal*
1208 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1209 \) # )
1210 ) # special
1211 [^\\\x80-\xff\n\015()] * # normal*
1212 )* # )*
1213 \) # )
1214 [\040\t]* )* # If comment found, allow more spaces.
1215 (?:
1216 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1217 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1218 # Atom
1219 | # or
1220 " # "
1221 [^\\\x80-\xff\n\015"] * # normal
1222 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1223 " # "
1224 # Quoted string
1225 )
1226 [\040\t]* # Nab whitespace.
1227 (?:
1228 \( # (
1229 [^\\\x80-\xff\n\015()] * # normal*
1230 (?: # (
1231 (?: \\ [^\x80-\xff] |
1232 \( # (
1233 [^\\\x80-\xff\n\015()] * # normal*
1234 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1235 \) # )
1236 ) # special
1237 [^\\\x80-\xff\n\015()] * # normal*
1238 )* # )*
1239 \) # )
1240 [\040\t]* )* # If comment found, allow more spaces.
1241 # additional words
1242 )*
1243 @
1244 [\040\t]* # Nab whitespace.
1245 (?:
1246 \( # (
1247 [^\\\x80-\xff\n\015()] * # normal*
1248 (?: # (
1249 (?: \\ [^\x80-\xff] |
1250 \( # (
1251 [^\\\x80-\xff\n\015()] * # normal*
1252 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1253 \) # )
1254 ) # special
1255 [^\\\x80-\xff\n\015()] * # normal*
1256 )* # )*
1257 \) # )
1258 [\040\t]* )* # If comment found, allow more spaces.
1259 (?:
1260 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1261 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1262 |
1263 \[ # [
1264 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1265 \] # ]
1266 )
1267 [\040\t]* # Nab whitespace.
1268 (?:
1269 \( # (
1270 [^\\\x80-\xff\n\015()] * # normal*
1271 (?: # (
1272 (?: \\ [^\x80-\xff] |
1273 \( # (
1274 [^\\\x80-\xff\n\015()] * # normal*
1275 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1276 \) # )
1277 ) # special
1278 [^\\\x80-\xff\n\015()] * # normal*
1279 )* # )*
1280 \) # )
1281 [\040\t]* )* # If comment found, allow more spaces.
1282 # optional trailing comments
1283 (?:
1284 \.
1285 [\040\t]* # Nab whitespace.
1286 (?:
1287 \( # (
1288 [^\\\x80-\xff\n\015()] * # normal*
1289 (?: # (
1290 (?: \\ [^\x80-\xff] |
1291 \( # (
1292 [^\\\x80-\xff\n\015()] * # normal*
1293 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1294 \) # )
1295 ) # special
1296 [^\\\x80-\xff\n\015()] * # normal*
1297 )* # )*
1298 \) # )
1299 [\040\t]* )* # If comment found, allow more spaces.
1300 (?:
1301 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1302 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1303 |
1304 \[ # [
1305 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1306 \] # ]
1307 )
1308 [\040\t]* # Nab whitespace.
1309 (?:
1310 \( # (
1311 [^\\\x80-\xff\n\015()] * # normal*
1312 (?: # (
1313 (?: \\ [^\x80-\xff] |
1314 \( # (
1315 [^\\\x80-\xff\n\015()] * # normal*
1316 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1317 \) # )
1318 ) # special
1319 [^\\\x80-\xff\n\015()] * # normal*
1320 )* # )*
1321 \) # )
1322 [\040\t]* )* # If comment found, allow more spaces.
1323 # optional trailing comments
1324 )*
1325 # address
1326 | # or
1327 (?:
1328 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1329 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1330 # Atom
1331 | # or
1332 " # "
1333 [^\\\x80-\xff\n\015"] * # normal
1334 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1335 " # "
1336 # Quoted string
1337 )
1338 # leading word
1339 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1340 (?:
1341 (?:
1342 \( # (
1343 [^\\\x80-\xff\n\015()] * # normal*
1344 (?: # (
1345 (?: \\ [^\x80-\xff] |
1346 \( # (
1347 [^\\\x80-\xff\n\015()] * # normal*
1348 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1349 \) # )
1350 ) # special
1351 [^\\\x80-\xff\n\015()] * # normal*
1352 )* # )*
1353 \) # )
1354 |
1355 " # "
1356 [^\\\x80-\xff\n\015"] * # normal
1357 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1358 " # "
1359 ) # "special" comment or quoted string
1360 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1361 )*
1362 <
1363 [\040\t]* # Nab whitespace.
1364 (?:
1365 \( # (
1366 [^\\\x80-\xff\n\015()] * # normal*
1367 (?: # (
1368 (?: \\ [^\x80-\xff] |
1369 \( # (
1370 [^\\\x80-\xff\n\015()] * # normal*
1371 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1372 \) # )
1373 ) # special
1374 [^\\\x80-\xff\n\015()] * # normal*
1375 )* # )*
1376 \) # )
1377 [\040\t]* )* # If comment found, allow more spaces.
1378 # <
1379 (?:
1380 @
1381 [\040\t]* # Nab whitespace.
1382 (?:
1383 \( # (
1384 [^\\\x80-\xff\n\015()] * # normal*
1385 (?: # (
1386 (?: \\ [^\x80-\xff] |
1387 \( # (
1388 [^\\\x80-\xff\n\015()] * # normal*
1389 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1390 \) # )
1391 ) # special
1392 [^\\\x80-\xff\n\015()] * # normal*
1393 )* # )*
1394 \) # )
1395 [\040\t]* )* # If comment found, allow more spaces.
1396 (?:
1397 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1398 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1399 |
1400 \[ # [
1401 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1402 \] # ]
1403 )
1404 [\040\t]* # Nab whitespace.
1405 (?:
1406 \( # (
1407 [^\\\x80-\xff\n\015()] * # normal*
1408 (?: # (
1409 (?: \\ [^\x80-\xff] |
1410 \( # (
1411 [^\\\x80-\xff\n\015()] * # normal*
1412 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1413 \) # )
1414 ) # special
1415 [^\\\x80-\xff\n\015()] * # normal*
1416 )* # )*
1417 \) # )
1418 [\040\t]* )* # If comment found, allow more spaces.
1419 # optional trailing comments
1420 (?:
1421 \.
1422 [\040\t]* # Nab whitespace.
1423 (?:
1424 \( # (
1425 [^\\\x80-\xff\n\015()] * # normal*
1426 (?: # (
1427 (?: \\ [^\x80-\xff] |
1428 \( # (
1429 [^\\\x80-\xff\n\015()] * # normal*
1430 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1431 \) # )
1432 ) # special
1433 [^\\\x80-\xff\n\015()] * # normal*
1434 )* # )*
1435 \) # )
1436 [\040\t]* )* # If comment found, allow more spaces.
1437 (?:
1438 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1439 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1440 |
1441 \[ # [
1442 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1443 \] # ]
1444 )
1445 [\040\t]* # Nab whitespace.
1446 (?:
1447 \( # (
1448 [^\\\x80-\xff\n\015()] * # normal*
1449 (?: # (
1450 (?: \\ [^\x80-\xff] |
1451 \( # (
1452 [^\\\x80-\xff\n\015()] * # normal*
1453 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1454 \) # )
1455 ) # special
1456 [^\\\x80-\xff\n\015()] * # normal*
1457 )* # )*
1458 \) # )
1459 [\040\t]* )* # If comment found, allow more spaces.
1460 # optional trailing comments
1461 )*
1462 (?: ,
1463 [\040\t]* # Nab whitespace.
1464 (?:
1465 \( # (
1466 [^\\\x80-\xff\n\015()] * # normal*
1467 (?: # (
1468 (?: \\ [^\x80-\xff] |
1469 \( # (
1470 [^\\\x80-\xff\n\015()] * # normal*
1471 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1472 \) # )
1473 ) # special
1474 [^\\\x80-\xff\n\015()] * # normal*
1475 )* # )*
1476 \) # )
1477 [\040\t]* )* # If comment found, allow more spaces.
1478 @
1479 [\040\t]* # Nab whitespace.
1480 (?:
1481 \( # (
1482 [^\\\x80-\xff\n\015()] * # normal*
1483 (?: # (
1484 (?: \\ [^\x80-\xff] |
1485 \( # (
1486 [^\\\x80-\xff\n\015()] * # normal*
1487 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1488 \) # )
1489 ) # special
1490 [^\\\x80-\xff\n\015()] * # normal*
1491 )* # )*
1492 \) # )
1493 [\040\t]* )* # If comment found, allow more spaces.
1494 (?:
1495 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1496 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1497 |
1498 \[ # [
1499 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1500 \] # ]
1501 )
1502 [\040\t]* # Nab whitespace.
1503 (?:
1504 \( # (
1505 [^\\\x80-\xff\n\015()] * # normal*
1506 (?: # (
1507 (?: \\ [^\x80-\xff] |
1508 \( # (
1509 [^\\\x80-\xff\n\015()] * # normal*
1510 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1511 \) # )
1512 ) # special
1513 [^\\\x80-\xff\n\015()] * # normal*
1514 )* # )*
1515 \) # )
1516 [\040\t]* )* # If comment found, allow more spaces.
1517 # optional trailing comments
1518 (?:
1519 \.
1520 [\040\t]* # Nab whitespace.
1521 (?:
1522 \( # (
1523 [^\\\x80-\xff\n\015()] * # normal*
1524 (?: # (
1525 (?: \\ [^\x80-\xff] |
1526 \( # (
1527 [^\\\x80-\xff\n\015()] * # normal*
1528 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1529 \) # )
1530 ) # special
1531 [^\\\x80-\xff\n\015()] * # normal*
1532 )* # )*
1533 \) # )
1534 [\040\t]* )* # If comment found, allow more spaces.
1535 (?:
1536 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1537 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1538 |
1539 \[ # [
1540 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1541 \] # ]
1542 )
1543 [\040\t]* # Nab whitespace.
1544 (?:
1545 \( # (
1546 [^\\\x80-\xff\n\015()] * # normal*
1547 (?: # (
1548 (?: \\ [^\x80-\xff] |
1549 \( # (
1550 [^\\\x80-\xff\n\015()] * # normal*
1551 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1552 \) # )
1553 ) # special
1554 [^\\\x80-\xff\n\015()] * # normal*
1555 )* # )*
1556 \) # )
1557 [\040\t]* )* # If comment found, allow more spaces.
1558 # optional trailing comments
1559 )*
1560 )* # additional domains
1561 :
1562 [\040\t]* # Nab whitespace.
1563 (?:
1564 \( # (
1565 [^\\\x80-\xff\n\015()] * # normal*
1566 (?: # (
1567 (?: \\ [^\x80-\xff] |
1568 \( # (
1569 [^\\\x80-\xff\n\015()] * # normal*
1570 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1571 \) # )
1572 ) # special
1573 [^\\\x80-\xff\n\015()] * # normal*
1574 )* # )*
1575 \) # )
1576 [\040\t]* )* # If comment found, allow more spaces.
1577 # optional trailing comments
1578 )? # optional route
1579 (?:
1580 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1581 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1582 # Atom
1583 | # or
1584 " # "
1585 [^\\\x80-\xff\n\015"] * # normal
1586 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1587 " # "
1588 # Quoted string
1589 )
1590 [\040\t]* # Nab whitespace.
1591 (?:
1592 \( # (
1593 [^\\\x80-\xff\n\015()] * # normal*
1594 (?: # (
1595 (?: \\ [^\x80-\xff] |
1596 \( # (
1597 [^\\\x80-\xff\n\015()] * # normal*
1598 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1599 \) # )
1600 ) # special
1601 [^\\\x80-\xff\n\015()] * # normal*
1602 )* # )*
1603 \) # )
1604 [\040\t]* )* # If comment found, allow more spaces.
1605 (?:
1606 \.
1607 [\040\t]* # Nab whitespace.
1608 (?:
1609 \( # (
1610 [^\\\x80-\xff\n\015()] * # normal*
1611 (?: # (
1612 (?: \\ [^\x80-\xff] |
1613 \( # (
1614 [^\\\x80-\xff\n\015()] * # normal*
1615 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1616 \) # )
1617 ) # special
1618 [^\\\x80-\xff\n\015()] * # normal*
1619 )* # )*
1620 \) # )
1621 [\040\t]* )* # If comment found, allow more spaces.
1622 (?:
1623 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1624 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1625 # Atom
1626 | # or
1627 " # "
1628 [^\\\x80-\xff\n\015"] * # normal
1629 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1630 " # "
1631 # Quoted string
1632 )
1633 [\040\t]* # Nab whitespace.
1634 (?:
1635 \( # (
1636 [^\\\x80-\xff\n\015()] * # normal*
1637 (?: # (
1638 (?: \\ [^\x80-\xff] |
1639 \( # (
1640 [^\\\x80-\xff\n\015()] * # normal*
1641 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1642 \) # )
1643 ) # special
1644 [^\\\x80-\xff\n\015()] * # normal*
1645 )* # )*
1646 \) # )
1647 [\040\t]* )* # If comment found, allow more spaces.
1648 # additional words
1649 )*
1650 @
1651 [\040\t]* # Nab whitespace.
1652 (?:
1653 \( # (
1654 [^\\\x80-\xff\n\015()] * # normal*
1655 (?: # (
1656 (?: \\ [^\x80-\xff] |
1657 \( # (
1658 [^\\\x80-\xff\n\015()] * # normal*
1659 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1660 \) # )
1661 ) # special
1662 [^\\\x80-\xff\n\015()] * # normal*
1663 )* # )*
1664 \) # )
1665 [\040\t]* )* # If comment found, allow more spaces.
1666 (?:
1667 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1668 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1669 |
1670 \[ # [
1671 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1672 \] # ]
1673 )
1674 [\040\t]* # Nab whitespace.
1675 (?:
1676 \( # (
1677 [^\\\x80-\xff\n\015()] * # normal*
1678 (?: # (
1679 (?: \\ [^\x80-\xff] |
1680 \( # (
1681 [^\\\x80-\xff\n\015()] * # normal*
1682 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1683 \) # )
1684 ) # special
1685 [^\\\x80-\xff\n\015()] * # normal*
1686 )* # )*
1687 \) # )
1688 [\040\t]* )* # If comment found, allow more spaces.
1689 # optional trailing comments
1690 (?:
1691 \.
1692 [\040\t]* # Nab whitespace.
1693 (?:
1694 \( # (
1695 [^\\\x80-\xff\n\015()] * # normal*
1696 (?: # (
1697 (?: \\ [^\x80-\xff] |
1698 \( # (
1699 [^\\\x80-\xff\n\015()] * # normal*
1700 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1701 \) # )
1702 ) # special
1703 [^\\\x80-\xff\n\015()] * # normal*
1704 )* # )*
1705 \) # )
1706 [\040\t]* )* # If comment found, allow more spaces.
1707 (?:
1708 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1709 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1710 |
1711 \[ # [
1712 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1713 \] # ]
1714 )
1715 [\040\t]* # Nab whitespace.
1716 (?:
1717 \( # (
1718 [^\\\x80-\xff\n\015()] * # normal*
1719 (?: # (
1720 (?: \\ [^\x80-\xff] |
1721 \( # (
1722 [^\\\x80-\xff\n\015()] * # normal*
1723 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1724 \) # )
1725 ) # special
1726 [^\\\x80-\xff\n\015()] * # normal*
1727 )* # )*
1728 \) # )
1729 [\040\t]* )* # If comment found, allow more spaces.
1730 # optional trailing comments
1731 )*
1732 # address spec
1733 > # >
1734 # name and address
1735 )
1736 /x
1737 Alan Other <user\@dom.ain>
1738 0: Alan Other <user@dom.ain>
1739 <user\@dom.ain>
1740 0: user@dom.ain
1741 user\@dom.ain
1742 0: user@dom.ain
1743 \"A. Other\" <user.1234\@dom.ain> (a comment)
1744 0: "A. Other" <user.1234@dom.ain>
1745 A. Other <user.1234\@dom.ain> (a comment)
1746 0: Other <user.1234@dom.ain>
1747 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1748 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1749 A missing angle <user\@some.where
1750 0: user@some.where
1751 *** Failers
1752 No match
1753 The quick brown fox
1754 No match
1755
1756 /abc\0def\00pqr\000xyz\0000AB/
1757 abc\0def\00pqr\000xyz\0000AB
1758 0: abc\x00def\x00pqr\x00xyz\x000AB
1759 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1760 0: abc\x00def\x00pqr\x00xyz\x000AB
1761
1762 /abc\x0def\x00pqr\x000xyz\x0000AB/
1763 abc\x0def\x00pqr\x000xyz\x0000AB
1764 0: abc\x0def\x00pqr\x000xyz\x0000AB
1765 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1766 0: abc\x0def\x00pqr\x000xyz\x0000AB
1767
1768 /^[\000-\037]/
1769 \0A
1770 0: \x00
1771 \01B
1772 0: \x01
1773 \037C
1774 0: \x1f
1775
1776 /\0*/
1777 \0\0\0\0
1778 0: \x00\x00\x00\x00
1779
1780 /A\x0{2,3}Z/
1781 The A\x0\x0Z
1782 0: A\x00\x00Z
1783 An A\0\x0\0Z
1784 0: A\x00\x00\x00Z
1785 *** Failers
1786 No match
1787 A\0Z
1788 No match
1789 A\0\x0\0\x0Z
1790 No match
1791
1792 /^(cow|)\1(bell)/
1793 cowcowbell
1794 0: cowcowbell
1795 1: cow
1796 2: bell
1797 bell
1798 0: bell
1799 1:
1800 2: bell
1801 *** Failers
1802 No match
1803 cowbell
1804 No match
1805
1806 /^\s/
1807 \040abc
1808 0:
1809 \x0cabc
1810 0: \x0c
1811 \nabc
1812 0: \x0a
1813 \rabc
1814 0: \x0d
1815 \tabc
1816 0: \x09
1817 *** Failers
1818 No match
1819 abc
1820 No match
1821
1822 /^a b
1823 c/x
1824 abc
1825 0: abc
1826
1827 /^(a|)\1*b/
1828 ab
1829 0: ab
1830 1: a
1831 aaaab
1832 0: aaaab
1833 1: a
1834 b
1835 0: b
1836 1:
1837 *** Failers
1838 No match
1839 acb
1840 No match
1841
1842 /^(a|)\1+b/
1843 aab
1844 0: aab
1845 1: a
1846 aaaab
1847 0: aaaab
1848 1: a
1849 b
1850 0: b
1851 1:
1852 *** Failers
1853 No match
1854 ab
1855 No match
1856
1857 /^(a|)\1?b/
1858 ab
1859 0: ab
1860 1: a
1861 aab
1862 0: aab
1863 1: a
1864 b
1865 0: b
1866 1:
1867 *** Failers
1868 No match
1869 acb
1870 No match
1871
1872 /^(a|)\1{2}b/
1873 aaab
1874 0: aaab
1875 1: a
1876 b
1877 0: b
1878 1:
1879 *** Failers
1880 No match
1881 ab
1882 No match
1883 aab
1884 No match
1885 aaaab
1886 No match
1887
1888 /^(a|)\1{2,3}b/
1889 aaab
1890 0: aaab
1891 1: a
1892 aaaab
1893 0: aaaab
1894 1: a
1895 b
1896 0: b
1897 1:
1898 *** Failers
1899 No match
1900 ab
1901 No match
1902 aab
1903 No match
1904 aaaaab
1905 No match
1906
1907 /ab{1,3}bc/
1908 abbbbc
1909 0: abbbbc
1910 abbbc
1911 0: abbbc
1912 abbc
1913 0: abbc
1914 *** Failers
1915 No match
1916 abc
1917 No match
1918 abbbbbc
1919 No match
1920
1921 /([^.]*)\.([^:]*):[T ]+(.*)/
1922 track1.title:TBlah blah blah
1923 0: track1.title:TBlah blah blah
1924 1: track1
1925 2: title
1926 3: Blah blah blah
1927
1928 /([^.]*)\.([^:]*):[T ]+(.*)/i
1929 track1.title:TBlah blah blah
1930 0: track1.title:TBlah blah blah
1931 1: track1
1932 2: title
1933 3: Blah blah blah
1934
1935 /([^.]*)\.([^:]*):[t ]+(.*)/i
1936 track1.title:TBlah blah blah
1937 0: track1.title:TBlah blah blah
1938 1: track1
1939 2: title
1940 3: Blah blah blah
1941
1942 /^[W-c]+$/
1943 WXY_^abc
1944 0: WXY_^abc
1945 ***Failers
1946 No match
1947 wxy
1948 No match
1949
1950 /^[W-c]+$/i
1951 WXY_^abc
1952 0: WXY_^abc
1953 wxy_^ABC
1954 0: wxy_^ABC
1955
1956 /^[\x3f-\x5F]+$/i
1957 WXY_^abc
1958 0: WXY_^abc
1959 wxy_^ABC
1960 0: wxy_^ABC
1961
1962 /^abc$/m
1963 abc
1964 0: abc
1965 qqq\nabc
1966 0: abc
1967 abc\nzzz
1968 0: abc
1969 qqq\nabc\nzzz
1970 0: abc
1971
1972 /^abc$/
1973 abc
1974 0: abc
1975 *** Failers
1976 No match
1977 qqq\nabc
1978 No match
1979 abc\nzzz
1980 No match
1981 qqq\nabc\nzzz
1982 No match
1983
1984 /\Aabc\Z/m
1985 abc
1986 0: abc
1987 *** Failers
1988 No match
1989 qqq\nabc
1990 No match
1991 abc\nzzz
1992 No match
1993 qqq\nabc\nzzz
1994 No match
1995
1996 /\A(.)*\Z/s
1997 abc\ndef
1998 0: abc\x0adef
1999 1: f
2000
2001 /\A(.)*\Z/m
2002 *** Failers
2003 0: *** Failers
2004 1: s
2005 abc\ndef
2006 No match
2007
2008 /(?:b)|(?::+)/
2009 b::c
2010 0: b
2011 c::b
2012 0: ::
2013
2014 /[-az]+/
2015 az-
2016 0: az-
2017 *** Failers
2018 0: a
2019 b
2020 No match
2021
2022 /[az-]+/
2023 za-
2024 0: za-
2025 *** Failers
2026 0: a
2027 b
2028 No match
2029
2030 /[a\-z]+/
2031 a-z
2032 0: a-z
2033 *** Failers
2034 0: a
2035 b
2036 No match
2037
2038 /[a-z]+/
2039 abcdxyz
2040 0: abcdxyz
2041
2042 /[\d-]+/
2043 12-34
2044 0: 12-34
2045 *** Failers
2046 No match
2047 aaa
2048 No match
2049
2050 /[\d-z]+/
2051 12-34z
2052 0: 12-34z
2053 *** Failers
2054 No match
2055 aaa
2056 No match
2057
2058 /\x5c/
2059 \\
2060 0: \
2061
2062 /\x20Z/
2063 the Zoo
2064 0: Z
2065 *** Failers
2066 No match
2067 Zulu
2068 No match
2069
2070 /(abc)\1/i
2071 abcabc
2072 0: abcabc
2073 1: abc
2074 ABCabc
2075 0: ABCabc
2076 1: ABC
2077 abcABC
2078 0: abcABC
2079 1: abc
2080
2081 /(main(OPT)?)+/
2082 mainmain
2083 0: mainmain
2084 1: main
2085 mainOPTmain
2086 0: mainOPTmain
2087 1: main
2088 2: OPT
2089
2090 /ab{3cd/
2091 ab{3cd
2092 0: ab{3cd
2093
2094 /ab{3,cd/
2095 ab{3,cd
2096 0: ab{3,cd
2097
2098 /ab{3,4a}cd/
2099 ab{3,4a}cd
2100 0: ab{3,4a}cd
2101
2102 /{4,5a}bc/
2103 {4,5a}bc
2104 0: {4,5a}bc
2105
2106 /^a.b/
2107 a\rb
2108 0: a\x0db
2109 *** Failers
2110 No match
2111 a\nb
2112 No match
2113
2114 /abc$/
2115 abc
2116 0: abc
2117 abc\n
2118 0: abc
2119 *** Failers
2120 No match
2121 abc\ndef
2122 No match
2123
2124 /(abc)\123/
2125 abc\x53
2126 0: abcS
2127 1: abc
2128
2129 /(abc)\223/
2130 abc\x93
2131 0: abc\x93
2132 1: abc
2133
2134 /(abc)\323/
2135 abc\xd3
2136 0: abc\xd3
2137 1: abc
2138
2139 /(abc)\500/
2140 abc\x40
2141 0: abc@
2142 1: abc
2143 abc\100
2144 0: abc@
2145 1: abc
2146
2147 /(abc)\5000/
2148 abc\x400
2149 0: abc@0
2150 1: abc
2151 abc\x40\x30
2152 0: abc@0
2153 1: abc
2154 abc\1000
2155 0: abc@0
2156 1: abc
2157 abc\100\x30
2158 0: abc@0
2159 1: abc
2160 abc\100\060
2161 0: abc@0
2162 1: abc
2163 abc\100\60
2164 0: abc@0
2165 1: abc
2166
2167 /abc\81/
2168 abc\081
2169 0: abc\x0081
2170 abc\0\x38\x31
2171 0: abc\x0081
2172
2173 /abc\91/
2174 abc\091
2175 0: abc\x0091
2176 abc\0\x39\x31
2177 0: abc\x0091
2178
2179 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2180 abcdefghijkllS
2181 0: abcdefghijkllS
2182 1: a
2183 2: b
2184 3: c
2185 4: d
2186 5: e
2187 6: f
2188 7: g
2189 8: h
2190 9: i
2191 10: j
2192 11: k
2193 12: l
2194
2195 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2196 abcdefghijk\12S
2197 0: abcdefghijk\x0aS
2198 1: a
2199 2: b
2200 3: c
2201 4: d
2202 5: e
2203 6: f
2204 7: g
2205 8: h
2206 9: i
2207 10: j
2208 11: k
2209
2210 /ab\gdef/
2211 abgdef
2212 0: abgdef
2213
2214 /a{0}bc/
2215 bc
2216 0: bc
2217
2218 /(a|(bc)){0,0}?xyz/
2219 xyz
2220 0: xyz
2221
2222 /abc[\10]de/
2223 abc\010de
2224 0: abc\x08de
2225
2226 /abc[\1]de/
2227 abc\1de
2228 0: abc\x01de
2229
2230 /(abc)[\1]de/
2231 abc\1de
2232 0: abc\x01de
2233 1: abc
2234
2235 /a.b(?s)/
2236 a\nb
2237 0: a\x0ab
2238
2239 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2240 baNOTccccd
2241 0: baNOTcccc
2242 1: b
2243 2: a
2244 3: NOT
2245 4: cccc
2246 baNOTcccd
2247 0: baNOTccc
2248 1: b
2249 2: a
2250 3: NOT
2251 4: ccc
2252 baNOTccd
2253 0: baNOTcc
2254 1: b
2255 2: a
2256 3: NO
2257 4: Tcc
2258 bacccd
2259 0: baccc
2260 1: b
2261 2: a
2262 3:
2263 4: ccc
2264 *** Failers
2265 0: *** Failers
2266 1: *
2267 2: *
2268 3: * Fail
2269 4: ers
2270 anything
2271 No match
2272 b\bc
2273 No match
2274 baccd
2275 No match
2276
2277 /[^a]/
2278 Abc
2279 0: A
2280
2281 /[^a]/i
2282 Abc
2283 0: b
2284
2285 /[^a]+/
2286 AAAaAbc
2287 0: AAA
2288
2289 /[^a]+/i
2290 AAAaAbc
2291 0: bc
2292
2293 /[^a]+/
2294 bbb\nccc
2295 0: bbb\x0accc
2296
2297 /[^k]$/
2298 abc
2299 0: c
2300 *** Failers
2301 0: s
2302 abk
2303 No match
2304
2305 /[^k]{2,3}$/
2306 abc
2307 0: abc
2308 kbc
2309 0: bc
2310 kabc
2311 0: abc
2312 *** Failers
2313 0: ers
2314 abk
2315 No match
2316 akb
2317 No match
2318 akk
2319 No match
2320
2321 /^\d{8,}\@.+[^k]$/
2322 12345678\@a.b.c.d
2323 0: 12345678@a.b.c.d
2324 123456789\@x.y.z
2325 0: 123456789@x.y.z
2326 *** Failers
2327 No match
2328 12345678\@x.y.uk
2329 No match
2330 1234567\@a.b.c.d
2331 No match
2332
2333 /(a)\1{8,}/
2334 aaaaaaaaa
2335 0: aaaaaaaaa
2336 1: a
2337 aaaaaaaaaa
2338 0: aaaaaaaaaa
2339 1: a
2340 *** Failers
2341 No match
2342 aaaaaaa
2343 No match
2344
2345 /[^a]/
2346 aaaabcd
2347 0: b
2348 aaAabcd
2349 0: A
2350
2351 /[^a]/i
2352 aaaabcd
2353 0: b
2354 aaAabcd
2355 0: b
2356
2357 /[^az]/
2358 aaaabcd
2359 0: b
2360 aaAabcd
2361 0: A
2362
2363 /[^az]/i
2364 aaaabcd
2365 0: b
2366 aaAabcd
2367 0: b
2368
2369 /\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/
2370 \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
2371 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
2372
2373 / End of test input /
2374

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12