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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 26 - (show annotations) (download)
Sat Feb 24 21:38:47 2007 UTC (7 years, 9 months ago) by nigel
File size: 59449 byte(s)
Tag code/trunk as code/tags/pcre-2.01.

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

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12