/[pcre]/code/trunk/testdata/testoutput1
ViewVC logotype

Contents of /code/trunk/testdata/testoutput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 53 - (hide annotations) (download)
Sat Feb 24 21:39:42 2007 UTC (7 years, 5 months ago) by nigel
File size: 65642 byte(s)
Load pcre-3.5 into code/trunk.

1 nigel 53 PCRE version 3.5 15-Aug-2001
2 nigel 41
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    
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     abc\n
1988     0: abc
1989     *** Failers
1990     No match
1991     qqq\nabc
1992     No match
1993     abc\nzzz
1994     No match
1995     qqq\nabc\nzzz
1996     No match
1997    
1998     /\A(.)*\Z/s
1999     abc\ndef
2000     0: abc\x0adef
2001     1: f
2002    
2003     /\A(.)*\Z/m
2004     *** Failers
2005     0: *** Failers
2006     1: s
2007     abc\ndef
2008     No match
2009    
2010     /(?:b)|(?::+)/
2011     b::c
2012     0: b
2013     c::b
2014     0: ::
2015    
2016     /[-az]+/
2017     az-
2018     0: az-
2019     *** Failers
2020     0: a
2021     b
2022     No match
2023    
2024     /[az-]+/
2025     za-
2026     0: za-
2027     *** Failers
2028     0: a
2029     b
2030     No match
2031    
2032     /[a\-z]+/
2033     a-z
2034     0: a-z
2035     *** Failers
2036     0: a
2037     b
2038     No match
2039    
2040     /[a-z]+/
2041     abcdxyz
2042     0: abcdxyz
2043    
2044     /[\d-]+/
2045     12-34
2046     0: 12-34
2047     *** Failers
2048     No match
2049     aaa
2050     No match
2051    
2052     /[\d-z]+/
2053     12-34z
2054     0: 12-34z
2055     *** Failers
2056     No match
2057     aaa
2058     No match
2059    
2060     /\x5c/
2061     \\
2062     0: \
2063    
2064     /\x20Z/
2065     the Zoo
2066     0: Z
2067     *** Failers
2068     No match
2069     Zulu
2070     No match
2071    
2072     /(abc)\1/i
2073     abcabc
2074     0: abcabc
2075     1: abc
2076     ABCabc
2077     0: ABCabc
2078     1: ABC
2079     abcABC
2080     0: abcABC
2081     1: abc
2082    
2083     /ab{3cd/
2084     ab{3cd
2085     0: ab{3cd
2086    
2087     /ab{3,cd/
2088     ab{3,cd
2089     0: ab{3,cd
2090    
2091     /ab{3,4a}cd/
2092     ab{3,4a}cd
2093     0: ab{3,4a}cd
2094    
2095     /{4,5a}bc/
2096     {4,5a}bc
2097     0: {4,5a}bc
2098    
2099     /^a.b/
2100     a\rb
2101     0: a\x0db
2102     *** Failers
2103     No match
2104     a\nb
2105     No match
2106    
2107     /abc$/
2108     abc
2109     0: abc
2110     abc\n
2111     0: abc
2112     *** Failers
2113     No match
2114     abc\ndef
2115     No match
2116    
2117     /(abc)\123/
2118     abc\x53
2119     0: abcS
2120     1: abc
2121    
2122     /(abc)\223/
2123     abc\x93
2124     0: abc\x93
2125     1: abc
2126    
2127     /(abc)\323/
2128     abc\xd3
2129     0: abc\xd3
2130     1: abc
2131    
2132     /(abc)\500/
2133     abc\x40
2134     0: abc@
2135     1: abc
2136     abc\100
2137     0: abc@
2138     1: abc
2139    
2140     /(abc)\5000/
2141     abc\x400
2142     0: abc@0
2143     1: abc
2144     abc\x40\x30
2145     0: abc@0
2146     1: abc
2147     abc\1000
2148     0: abc@0
2149     1: abc
2150     abc\100\x30
2151     0: abc@0
2152     1: abc
2153     abc\100\060
2154     0: abc@0
2155     1: abc
2156     abc\100\60
2157     0: abc@0
2158     1: abc
2159    
2160     /abc\81/
2161     abc\081
2162     0: abc\x0081
2163     abc\0\x38\x31
2164     0: abc\x0081
2165    
2166     /abc\91/
2167     abc\091
2168     0: abc\x0091
2169     abc\0\x39\x31
2170     0: abc\x0091
2171    
2172     /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2173     abcdefghijkllS
2174     0: abcdefghijkllS
2175     1: a
2176     2: b
2177     3: c
2178     4: d
2179     5: e
2180     6: f
2181     7: g
2182     8: h
2183     9: i
2184     10: j
2185     11: k
2186     12: l
2187    
2188     /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2189     abcdefghijk\12S
2190     0: abcdefghijk\x0aS
2191     1: a
2192     2: b
2193     3: c
2194     4: d
2195     5: e
2196     6: f
2197     7: g
2198     8: h
2199     9: i
2200     10: j
2201     11: k
2202    
2203     /ab\gdef/
2204     abgdef
2205     0: abgdef
2206    
2207     /a{0}bc/
2208     bc
2209     0: bc
2210    
2211     /(a|(bc)){0,0}?xyz/
2212     xyz
2213     0: xyz
2214    
2215     /abc[\10]de/
2216     abc\010de
2217     0: abc\x08de
2218    
2219     /abc[\1]de/
2220     abc\1de
2221     0: abc\x01de
2222    
2223     /(abc)[\1]de/
2224     abc\1de
2225     0: abc\x01de
2226     1: abc
2227    
2228     /a.b(?s)/
2229     a\nb
2230     0: a\x0ab
2231    
2232     /^([^a])([^\b])([^c]*)([^d]{3,4})/
2233     baNOTccccd
2234     0: baNOTcccc
2235     1: b
2236     2: a
2237     3: NOT
2238     4: cccc
2239     baNOTcccd
2240     0: baNOTccc
2241     1: b
2242     2: a
2243     3: NOT
2244     4: ccc
2245     baNOTccd
2246     0: baNOTcc
2247     1: b
2248     2: a
2249     3: NO
2250     4: Tcc
2251     bacccd
2252     0: baccc
2253     1: b
2254     2: a
2255     3:
2256     4: ccc
2257     *** Failers
2258     0: *** Failers
2259     1: *
2260     2: *
2261     3: * Fail
2262     4: ers
2263     anything
2264     No match
2265     b\bc
2266     No match
2267     baccd
2268     No match
2269    
2270     /[^a]/
2271     Abc
2272     0: A
2273    
2274     /[^a]/i
2275     Abc
2276     0: b
2277    
2278     /[^a]+/
2279     AAAaAbc
2280     0: AAA
2281    
2282     /[^a]+/i
2283     AAAaAbc
2284     0: bc
2285    
2286     /[^a]+/
2287     bbb\nccc
2288     0: bbb\x0accc
2289    
2290     /[^k]$/
2291     abc
2292     0: c
2293     *** Failers
2294     0: s
2295     abk
2296     No match
2297    
2298     /[^k]{2,3}$/
2299     abc
2300     0: abc
2301     kbc
2302     0: bc
2303     kabc
2304     0: abc
2305     *** Failers
2306     0: ers
2307     abk
2308     No match
2309     akb
2310     No match
2311     akk
2312     No match
2313    
2314     /^\d{8,}\@.+[^k]$/
2315     12345678\@a.b.c.d
2316     0: 12345678@a.b.c.d
2317     123456789\@x.y.z
2318     0: 123456789@x.y.z
2319     *** Failers
2320     No match
2321     12345678\@x.y.uk
2322     No match
2323     1234567\@a.b.c.d
2324     No match
2325    
2326     /(a)\1{8,}/
2327     aaaaaaaaa
2328     0: aaaaaaaaa
2329     1: a
2330     aaaaaaaaaa
2331     0: aaaaaaaaaa
2332     1: a
2333     *** Failers
2334     No match
2335     aaaaaaa
2336     No match
2337    
2338     /[^a]/
2339     aaaabcd
2340     0: b
2341     aaAabcd
2342     0: A
2343    
2344     /[^a]/i
2345     aaaabcd
2346     0: b
2347     aaAabcd
2348     0: b
2349    
2350     /[^az]/
2351     aaaabcd
2352     0: b
2353     aaAabcd
2354     0: A
2355    
2356     /[^az]/i
2357     aaaabcd
2358     0: b
2359     aaAabcd
2360     0: b
2361    
2362     /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
2363     \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
2364     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
2365    
2366     /P[^*]TAIRE[^*]{1,6}?LL/
2367     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2368     0: PSTAIREISLL
2369    
2370     /P[^*]TAIRE[^*]{1,}?LL/
2371     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2372     0: PSTAIREISLL
2373    
2374     /(\.\d\d[1-9]?)\d+/
2375     1.230003938
2376     0: .230003938
2377     1: .23
2378     1.875000282
2379     0: .875000282
2380     1: .875
2381     1.235
2382     0: .235
2383     1: .23
2384    
2385     /(\.\d\d((?=0)|\d(?=\d)))/
2386     1.230003938
2387     0: .23
2388     1: .23
2389     2:
2390     1.875000282
2391     0: .875
2392     1: .875
2393     2: 5
2394     *** Failers
2395     No match
2396     1.235
2397     No match
2398    
2399     /a(?)b/
2400     ab
2401     0: ab
2402    
2403     /\b(foo)\s+(\w+)/i
2404     Food is on the foo table
2405     0: foo table
2406     1: foo
2407     2: table
2408    
2409     /foo(.*)bar/
2410     The food is under the bar in the barn.
2411     0: food is under the bar in the bar
2412     1: d is under the bar in the
2413    
2414     /foo(.*?)bar/
2415     The food is under the bar in the barn.
2416     0: food is under the bar
2417     1: d is under the
2418    
2419     /(.*)(\d*)/
2420     I have 2 numbers: 53147
2421     0: I have 2 numbers: 53147
2422     1: I have 2 numbers: 53147
2423     2:
2424    
2425     /(.*)(\d+)/
2426     I have 2 numbers: 53147
2427     0: I have 2 numbers: 53147
2428     1: I have 2 numbers: 5314
2429     2: 7
2430    
2431     /(.*?)(\d*)/
2432     I have 2 numbers: 53147
2433     0:
2434     1:
2435     2:
2436    
2437     /(.*?)(\d+)/
2438     I have 2 numbers: 53147
2439     0: I have 2
2440     1: I have
2441     2: 2
2442    
2443     /(.*)(\d+)$/
2444     I have 2 numbers: 53147
2445     0: I have 2 numbers: 53147
2446     1: I have 2 numbers: 5314
2447     2: 7
2448    
2449     /(.*?)(\d+)$/
2450     I have 2 numbers: 53147
2451     0: I have 2 numbers: 53147
2452     1: I have 2 numbers:
2453     2: 53147
2454    
2455     /(.*)\b(\d+)$/
2456     I have 2 numbers: 53147
2457     0: I have 2 numbers: 53147
2458     1: I have 2 numbers:
2459     2: 53147
2460    
2461     /(.*\D)(\d+)$/
2462     I have 2 numbers: 53147
2463     0: I have 2 numbers: 53147
2464     1: I have 2 numbers:
2465     2: 53147
2466    
2467     /^\D*(?!123)/
2468     ABC123
2469     0: AB
2470    
2471     /^(\D*)(?=\d)(?!123)/
2472     ABC445
2473     0: ABC
2474     1: ABC
2475     *** Failers
2476     No match
2477     ABC123
2478     No match
2479    
2480     /^[W-]46]/
2481     W46]789
2482     0: W46]
2483     -46]789
2484     0: -46]
2485     *** Failers
2486     No match
2487     Wall
2488     No match
2489     Zebra
2490     No match
2491     42
2492     No match
2493     [abcd]
2494     No match
2495     ]abcd[
2496     No match
2497    
2498     /^[W-\]46]/
2499     W46]789
2500     0: W
2501     Wall
2502     0: W
2503     Zebra
2504     0: Z
2505     Xylophone
2506     0: X
2507     42
2508     0: 4
2509     [abcd]
2510     0: [
2511     ]abcd[
2512     0: ]
2513     \\backslash
2514     0: \
2515     *** Failers
2516     No match
2517     -46]789
2518     No match
2519     well
2520     No match
2521    
2522     /\d\d\/\d\d\/\d\d\d\d/
2523     01/01/2000
2524     0: 01/01/2000
2525    
2526     /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2527     word cat dog elephant mussel cow horse canary baboon snake shark otherword
2528     0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2529     word cat dog elephant mussel cow horse canary baboon snake shark
2530     No match
2531    
2532     /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2533     word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
2534     No match
2535    
2536     /^(a){0,0}/
2537     bcd
2538     0:
2539     abc
2540     0:
2541     aab
2542     0:
2543    
2544     /^(a){0,1}/
2545     bcd
2546     0:
2547     abc
2548     0: a
2549     1: a
2550     aab
2551     0: a
2552     1: a
2553    
2554     /^(a){0,2}/
2555     bcd
2556     0:
2557     abc
2558     0: a
2559     1: a
2560     aab
2561     0: aa
2562     1: a
2563    
2564     /^(a){0,3}/
2565     bcd
2566     0:
2567     abc
2568     0: a
2569     1: a
2570     aab
2571     0: aa
2572     1: a
2573     aaa
2574     0: aaa
2575     1: a
2576    
2577     /^(a){0,}/
2578     bcd
2579     0:
2580     abc
2581     0: a
2582     1: a
2583     aab
2584     0: aa
2585     1: a
2586     aaa
2587     0: aaa
2588     1: a
2589     aaaaaaaa
2590     0: aaaaaaaa
2591     1: a
2592    
2593     /^(a){1,1}/
2594     bcd
2595     No match
2596     abc
2597     0: a
2598     1: a
2599     aab
2600     0: a
2601     1: a
2602    
2603     /^(a){1,2}/
2604     bcd
2605     No match
2606     abc
2607     0: a
2608     1: a
2609     aab
2610     0: aa
2611     1: a
2612    
2613     /^(a){1,3}/
2614     bcd
2615     No match
2616     abc
2617     0: a
2618     1: a
2619     aab
2620     0: aa
2621     1: a
2622     aaa
2623     0: aaa
2624     1: a
2625    
2626     /^(a){1,}/
2627     bcd
2628     No match
2629     abc
2630     0: a
2631     1: a
2632     aab
2633     0: aa
2634     1: a
2635     aaa
2636     0: aaa
2637     1: a
2638     aaaaaaaa
2639     0: aaaaaaaa
2640     1: a
2641    
2642     /.*\.gif/
2643     borfle\nbib.gif\nno
2644     0: bib.gif
2645    
2646     /.{0,}\.gif/
2647     borfle\nbib.gif\nno
2648     0: bib.gif
2649    
2650     /.*\.gif/m
2651     borfle\nbib.gif\nno
2652     0: bib.gif
2653    
2654     /.*\.gif/s
2655     borfle\nbib.gif\nno
2656     0: borfle\x0abib.gif
2657    
2658     /.*\.gif/ms
2659     borfle\nbib.gif\nno
2660     0: borfle\x0abib.gif
2661    
2662     /.*$/
2663     borfle\nbib.gif\nno
2664     0: no
2665    
2666     /.*$/m
2667     borfle\nbib.gif\nno
2668     0: borfle
2669    
2670     /.*$/s
2671     borfle\nbib.gif\nno
2672     0: borfle\x0abib.gif\x0ano
2673    
2674     /.*$/ms
2675     borfle\nbib.gif\nno
2676     0: borfle\x0abib.gif\x0ano
2677    
2678     /.*$/
2679     borfle\nbib.gif\nno\n
2680     0: no
2681    
2682     /.*$/m
2683     borfle\nbib.gif\nno\n
2684     0: borfle
2685    
2686     /.*$/s
2687     borfle\nbib.gif\nno\n
2688     0: borfle\x0abib.gif\x0ano\x0a
2689    
2690     /.*$/ms
2691     borfle\nbib.gif\nno\n
2692     0: borfle\x0abib.gif\x0ano\x0a
2693    
2694     /(.*X|^B)/
2695     abcde\n1234Xyz
2696     0: 1234X
2697     1: 1234X
2698     BarFoo
2699     0: B
2700     1: B
2701     *** Failers
2702     No match
2703     abcde\nBar
2704     No match
2705    
2706     /(.*X|^B)/m
2707     abcde\n1234Xyz
2708     0: 1234X
2709     1: 1234X
2710     BarFoo
2711     0: B
2712     1: B
2713     abcde\nBar
2714     0: B
2715     1: B
2716    
2717     /(.*X|^B)/s
2718     abcde\n1234Xyz
2719     0: abcde\x0a1234X
2720     1: abcde\x0a1234X
2721     BarFoo
2722     0: B
2723     1: B
2724     *** Failers
2725     No match
2726     abcde\nBar
2727     No match
2728    
2729     /(.*X|^B)/ms
2730     abcde\n1234Xyz
2731     0: abcde\x0a1234X
2732     1: abcde\x0a1234X
2733     BarFoo
2734     0: B
2735     1: B
2736     abcde\nBar
2737     0: B
2738     1: B
2739    
2740     /(?s)(.*X|^B)/
2741     abcde\n1234Xyz
2742     0: abcde\x0a1234X
2743     1: abcde\x0a1234X
2744     BarFoo
2745     0: B
2746     1: B
2747     *** Failers
2748     No match
2749     abcde\nBar
2750     No match
2751    
2752     /(?s:.*X|^B)/
2753     abcde\n1234Xyz
2754     0: abcde\x0a1234X
2755     BarFoo
2756     0: B
2757     *** Failers
2758     No match
2759     abcde\nBar
2760     No match
2761    
2762     /^.*B/
2763     **** Failers
2764     No match
2765     abc\nB
2766     No match
2767    
2768     /(?s)^.*B/
2769     abc\nB
2770     0: abc\x0aB
2771    
2772     /(?m)^.*B/
2773     abc\nB
2774     0: B
2775    
2776     /(?ms)^.*B/
2777     abc\nB
2778     0: abc\x0aB
2779    
2780     /(?ms)^B/
2781     abc\nB
2782     0: B
2783    
2784     /(?s)B$/
2785     B\n
2786     0: B
2787    
2788     /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2789     123456654321
2790     0: 123456654321
2791    
2792     /^\d\d\d\d\d\d\d\d\d\d\d\d/
2793     123456654321
2794     0: 123456654321
2795    
2796     /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2797     123456654321
2798     0: 123456654321
2799    
2800     /^[abc]{12}/
2801     abcabcabcabc
2802     0: abcabcabcabc
2803    
2804     /^[a-c]{12}/
2805     abcabcabcabc
2806     0: abcabcabcabc
2807    
2808     /^(a|b|c){12}/
2809     abcabcabcabc
2810     0: abcabcabcabc
2811     1: c
2812    
2813     /^[abcdefghijklmnopqrstuvwxy0123456789]/
2814     n
2815     0: n
2816     *** Failers
2817     No match
2818     z
2819     No match
2820    
2821     /abcde{0,0}/
2822     abcd
2823     0: abcd
2824     *** Failers
2825     No match
2826     abce
2827     No match
2828    
2829     /ab[cd]{0,0}e/
2830     abe
2831     0: abe
2832     *** Failers
2833     No match
2834     abcde
2835     No match
2836    
2837     /ab(c){0,0}d/
2838     abd
2839     0: abd
2840     *** Failers
2841     No match
2842     abcd
2843     No match
2844    
2845     /a(b*)/
2846     a
2847     0: a
2848     1:
2849     ab
2850     0: ab
2851     1: b
2852     abbbb
2853     0: abbbb
2854     1: bbbb
2855     *** Failers
2856     0: a
2857     1:
2858     bbbbb
2859     No match
2860    
2861     /ab\d{0}e/
2862     abe
2863     0: abe
2864     *** Failers
2865     No match
2866     ab1e
2867     No match
2868    
2869     /"([^\\"]+|\\.)*"/
2870     the \"quick\" brown fox
2871     0: "quick"
2872     1: quick
2873     \"the \\\"quick\\\" brown fox\"
2874     0: "the \"quick\" brown fox"
2875     1: brown fox
2876    
2877     /.*?/g+
2878     abc
2879     0:
2880     0+ abc
2881     0: a
2882     0+ bc
2883     0:
2884     0+ bc
2885     0: b
2886     0+ c
2887     0:
2888     0+ c
2889     0: c
2890     0+
2891     0:
2892     0+
2893    
2894     /\b/g+
2895     abc
2896     0:
2897     0+ abc
2898     0:
2899     0+
2900    
2901     /\b/+g
2902     abc
2903     0:
2904     0+ abc
2905     0:
2906     0+
2907    
2908     //g
2909     abc
2910     0:
2911     0:
2912     0:
2913     0:
2914    
2915 nigel 49 /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
2916     <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2917     0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2918     1: BGCOLOR='#DBE9E9'
2919     2: align=left valign=top
2920     3: 43.
2921     4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2922     5:
2923     6:
2924     7: <unset>
2925     8: align=left valign=top
2926     9: Lega lstaff.com
2927     10: align=left valign=top
2928     11: CA - Statewide
2929 nigel 41
2930 nigel 49 /a[^a]b/
2931     acb
2932     0: acb
2933     a\nb
2934     0: a\x0ab
2935    
2936     /a.b/
2937     acb
2938     0: acb
2939     *** Failers
2940     No match
2941     a\nb
2942     No match
2943    
2944     /a[^a]b/s
2945     acb
2946     0: acb
2947     a\nb
2948     0: a\x0ab
2949    
2950     /a.b/s
2951     acb
2952     0: acb
2953     a\nb
2954     0: a\x0ab
2955    
2956 nigel 53 /^(b+?|a){1,2}?c/
2957     bac
2958     0: bac
2959     1: a
2960     bbac
2961     0: bbac
2962     1: a
2963     bbbac
2964     0: bbbac
2965     1: a
2966     bbbbac
2967     0: bbbbac
2968     1: a
2969     bbbbbac
2970     0: bbbbbac
2971     1: a
2972    
2973     /^(b+|a){1,2}?c/
2974     bac
2975     0: bac
2976     1: a
2977     bbac
2978     0: bbac
2979     1: a
2980     bbbac
2981     0: bbbac
2982     1: a
2983     bbbbac
2984     0: bbbbac
2985     1: a
2986     bbbbbac
2987     0: bbbbbac
2988     1: a
2989    
2990     /(?!\A)x/m
2991     x\nb\n
2992     No match
2993     a\bx\n
2994     0: x
2995    
2996     /\x0{ab}/
2997     \0{ab}
2998     0: \x00{ab}
2999    
3000 nigel 49 / End of testinput1 /
3001    

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12