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

Contents of /code/trunk/testdata/testoutput7

Parent Directory Parent Directory | Revision Log Revision Log


Revision 77 - (hide annotations) (download)
Sat Feb 24 21:40:45 2007 UTC (7 years, 9 months ago) by nigel
File size: 103487 byte(s)
Load pcre-6.0 into code/trunk.

1 nigel 77 PCRE version 6.0 07-Jun-2005
2    
3     /abc/
4     abc
5     0: abc
6    
7     /ab*c/
8     abc
9     0: abc
10     abbbbc
11     0: abbbbc
12     ac
13     0: ac
14    
15     /ab+c/
16     abc
17     0: abc
18     abbbbbbc
19     0: abbbbbbc
20     *** Failers
21     No match
22     ac
23     No match
24     ab
25     No match
26    
27     /a*/
28     a
29     0: a
30     1:
31     aaaaaaaaaaaaaaaaa
32     0: aaaaaaaaaaaaaaaaa
33     1: aaaaaaaaaaaaaaaa
34     2: aaaaaaaaaaaaaaa
35     3: aaaaaaaaaaaaaa
36     4: aaaaaaaaaaaaa
37     5: aaaaaaaaaaaa
38     6: aaaaaaaaaaa
39     7: aaaaaaaaaa
40     8: aaaaaaaaa
41     9: aaaaaaaa
42     10: aaaaaaa
43     11: aaaaaa
44     12: aaaaa
45     13: aaaa
46     14: aaa
47     15: aa
48     16: a
49     17:
50     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
51     Matched, but too many subsidiary matches
52     0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
53     1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
54     2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
55     3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
56     4: aaaaaaaaaaaaaaaaaaaaaaaaaa
57     5: aaaaaaaaaaaaaaaaaaaaaaaaa
58     6: aaaaaaaaaaaaaaaaaaaaaaaa
59     7: aaaaaaaaaaaaaaaaaaaaaaa
60     8: aaaaaaaaaaaaaaaaaaaaaa
61     9: aaaaaaaaaaaaaaaaaaaaa
62     10: aaaaaaaaaaaaaaaaaaaa
63     11: aaaaaaaaaaaaaaaaaaa
64     12: aaaaaaaaaaaaaaaaaa
65     13: aaaaaaaaaaaaaaaaa
66     14: aaaaaaaaaaaaaaaa
67     15: aaaaaaaaaaaaaaa
68     16: aaaaaaaaaaaaaa
69     17: aaaaaaaaaaaaa
70     18: aaaaaaaaaaaa
71     19: aaaaaaaaaaa
72     20: aaaaaaaaaa
73     21: aaaaaaaaa
74     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
75     0:
76    
77     /(a|abcd|african)/
78     a
79     0: a
80     abcd
81     0: abcd
82     1: a
83     african
84     0: african
85     1: a
86    
87     /^abc/
88     abcdef
89     0: abc
90     *** Failers
91     No match
92     xyzabc
93     No match
94     xyz\nabc
95     No match
96    
97     /^abc/m
98     abcdef
99     0: abc
100     xyz\nabc
101     0: abc
102     *** Failers
103     No match
104     xyzabc
105     No match
106    
107     /\Aabc/
108     abcdef
109     0: abc
110     *** Failers
111     No match
112     xyzabc
113     No match
114     xyz\nabc
115     No match
116    
117     /\Aabc/m
118     abcdef
119     0: abc
120     *** Failers
121     No match
122     xyzabc
123     No match
124     xyz\nabc
125     No match
126    
127     /\Gabc/
128     abcdef
129     0: abc
130     xyzabc\>3
131     0: abc
132     *** Failers
133     No match
134     xyzabc
135     No match
136     xyzabc\>2
137     No match
138    
139     /x\dy\Dz/
140     x9yzz
141     0: x9yzz
142     x0y+z
143     0: x0y+z
144     *** Failers
145     No match
146     xyz
147     No match
148     xxy0z
149     No match
150    
151     /x\sy\Sz/
152     x yzz
153     0: x yzz
154     x y+z
155     0: x y+z
156     *** Failers
157     No match
158     xyz
159     No match
160     xxyyz
161     No match
162    
163     /x\wy\Wz/
164     xxy+z
165     0: xxy+z
166     *** Failers
167     No match
168     xxy0z
169     No match
170     x+y+z
171     No match
172    
173     /x.y/
174     x+y
175     0: x+y
176     x-y
177     0: x-y
178     *** Failers
179     No match
180     x\ny
181     No match
182    
183     /x.y/s
184     x+y
185     0: x+y
186     x-y
187     0: x-y
188     x\ny
189     0: x\x0ay
190    
191     /(a.b(?s)c.d|x.y)p.q/
192     a+bc+dp+q
193     0: a+bc+dp+q
194     a+bc\ndp+q
195     0: a+bc\x0adp+q
196     x\nyp+q
197     0: x\x0ayp+q
198     *** Failers
199     No match
200     a\nbc\ndp+q
201     No match
202     a+bc\ndp\nq
203     No match
204     x\nyp\nq
205     No match
206    
207     /a\d\z/
208     ba0
209     0: a0
210     *** Failers
211     No match
212     ba0\n
213     No match
214     ba0\ncd
215     No match
216    
217     /a\d\z/m
218     ba0
219     0: a0
220     *** Failers
221     No match
222     ba0\n
223     No match
224     ba0\ncd
225     No match
226    
227     /a\d\Z/
228     ba0
229     0: a0
230     ba0\n
231     0: a0
232     *** Failers
233     No match
234     ba0\ncd
235     No match
236    
237     /a\d\Z/m
238     ba0
239     0: a0
240     ba0\n
241     0: a0
242     *** Failers
243     No match
244     ba0\ncd
245     No match
246    
247     /a\d$/
248     ba0
249     0: a0
250     ba0\n
251     0: a0
252     *** Failers
253     No match
254     ba0\ncd
255     No match
256    
257     /a\d$/m
258     ba0
259     0: a0
260     ba0\n
261     0: a0
262     ba0\ncd
263     0: a0
264     *** Failers
265     No match
266    
267     /abc/i
268     abc
269     0: abc
270     aBc
271     0: aBc
272     ABC
273     0: ABC
274    
275     /[^a]/
276     abcd
277     0: b
278    
279     /ab?\w/
280     abz
281     0: abz
282     1: ab
283     abbz
284     0: abb
285     1: ab
286     azz
287     0: az
288    
289     /x{0,3}yz/
290     ayzq
291     0: yz
292     axyzq
293     0: xyz
294     axxyz
295     0: xxyz
296     axxxyzq
297     0: xxxyz
298     axxxxyzq
299     0: xxxyz
300     *** Failers
301     No match
302     ax
303     No match
304     axx
305     No match
306    
307     /x{3}yz/
308     axxxyzq
309     0: xxxyz
310     axxxxyzq
311     0: xxxyz
312     *** Failers
313     No match
314     ax
315     No match
316     axx
317     No match
318     ayzq
319     No match
320     axyzq
321     No match
322     axxyz
323     No match
324    
325     /x{2,3}yz/
326     axxyz
327     0: xxyz
328     axxxyzq
329     0: xxxyz
330     axxxxyzq
331     0: xxxyz
332     *** Failers
333     No match
334     ax
335     No match
336     axx
337     No match
338     ayzq
339     No match
340     axyzq
341     No match
342    
343     /[^a]+/
344     bac
345     0: b
346     bcdefax
347     0: bcdef
348     1: bcde
349     2: bcd
350     3: bc
351     4: b
352     *** Failers
353     0: *** F
354     1: ***
355     2: ***
356     3: **
357     4: *
358     aaaaa
359     No match
360    
361     /[^a]*/
362     bac
363     0: b
364     1:
365     bcdefax
366     0: bcdef
367     1: bcde
368     2: bcd
369     3: bc
370     4: b
371     5:
372     *** Failers
373     0: *** F
374     1: ***
375     2: ***
376     3: **
377     4: *
378     5:
379     aaaaa
380     0:
381    
382     /[^a]{3,5}/
383     xyz
384     0: xyz
385     awxyza
386     0: wxyz
387     1: wxy
388     abcdefa
389     0: bcdef
390     1: bcde
391     2: bcd
392     abcdefghijk
393     0: bcdef
394     1: bcde
395     2: bcd
396     *** Failers
397     0: *** F
398     1: ***
399     2: ***
400     axya
401     No match
402     axa
403     No match
404     aaaaa
405     No match
406    
407     /\d*/
408     1234b567
409     0: 1234
410     1: 123
411     2: 12
412     3: 1
413     4:
414     xyz
415     0:
416    
417     /\D*/
418     a1234b567
419     0: a
420     1:
421     xyz
422     0: xyz
423     1: xy
424     2: x
425     3:
426    
427     /\d+/
428     ab1234c56
429     0: 1234
430     1: 123
431     2: 12
432     3: 1
433     *** Failers
434     No match
435     xyz
436     No match
437    
438     /\D+/
439     ab123c56
440     0: ab
441     1: a
442     *** Failers
443     0: *** Failers
444     1: *** Failer
445     2: *** Faile
446     3: *** Fail
447     4: *** Fai
448     5: *** Fa
449     6: *** F
450     7: ***
451     8: ***
452     9: **
453     10: *
454     789
455     No match
456    
457     /\d?A/
458     045ABC
459     0: 5A
460     ABC
461     0: A
462     *** Failers
463     No match
464     XYZ
465     No match
466    
467     /\D?A/
468     ABC
469     0: A
470     BAC
471     0: BA
472     9ABC
473     0: A
474     *** Failers
475     No match
476    
477     /a+/
478     aaaa
479     0: aaaa
480     1: aaa
481     2: aa
482     3: a
483    
484     /^.*xyz/
485     xyz
486     0: xyz
487     ggggggggxyz
488     0: ggggggggxyz
489    
490     /^.+xyz/
491     abcdxyz
492     0: abcdxyz
493     axyz
494     0: axyz
495     *** Failers
496     No match
497     xyz
498     No match
499    
500     /^.?xyz/
501     xyz
502     0: xyz
503     cxyz
504     0: cxyz
505    
506     /^\d{2,3}X/
507     12X
508     0: 12X
509     123X
510     0: 123X
511     *** Failers
512     No match
513     X
514     No match
515     1X
516     No match
517     1234X
518     No match
519    
520     /^[abcd]\d/
521     a45
522     0: a4
523     b93
524     0: b9
525     c99z
526     0: c9
527     d04
528     0: d0
529     *** Failers
530     No match
531     e45
532     No match
533     abcd
534     No match
535     abcd1234
536     No match
537     1234
538     No match
539    
540     /^[abcd]*\d/
541     a45
542     0: a4
543     b93
544     0: b9
545     c99z
546     0: c9
547     d04
548     0: d0
549     abcd1234
550     0: abcd1
551     1234
552     0: 1
553     *** Failers
554     No match
555     e45
556     No match
557     abcd
558     No match
559    
560     /^[abcd]+\d/
561     a45
562     0: a4
563     b93
564     0: b9
565     c99z
566     0: c9
567     d04
568     0: d0
569     abcd1234
570     0: abcd1
571     *** Failers
572     No match
573     1234
574     No match
575     e45
576     No match
577     abcd
578     No match
579    
580     /^a+X/
581     aX
582     0: aX
583     aaX
584     0: aaX
585    
586     /^[abcd]?\d/
587     a45
588     0: a4
589     b93
590     0: b9
591     c99z
592     0: c9
593     d04
594     0: d0
595     1234
596     0: 1
597     *** Failers
598     No match
599     abcd1234
600     No match
601     e45
602     No match
603    
604     /^[abcd]{2,3}\d/
605     ab45
606     0: ab4
607     bcd93
608     0: bcd9
609     *** Failers
610     No match
611     1234
612     No match
613     a36
614     No match
615     abcd1234
616     No match
617     ee45
618     No match
619    
620     /^(abc)*\d/
621     abc45
622     0: abc4
623     abcabcabc45
624     0: abcabcabc4
625     42xyz
626     0: 4
627     *** Failers
628     No match
629    
630     /^(abc)+\d/
631     abc45
632     0: abc4
633     abcabcabc45
634     0: abcabcabc4
635     *** Failers
636     No match
637     42xyz
638     No match
639    
640     /^(abc)?\d/
641     abc45
642     0: abc4
643     42xyz
644     0: 4
645     *** Failers
646     No match
647     abcabcabc45
648     No match
649    
650     /^(abc){2,3}\d/
651     abcabc45
652     0: abcabc4
653     abcabcabc45
654     0: abcabcabc4
655     *** Failers
656     No match
657     abcabcabcabc45
658     No match
659     abc45
660     No match
661     42xyz
662     No match
663    
664     /1(abc|xyz)2(?1)3/
665     1abc2abc3456
666     0: 1abc2abc3
667     1abc2xyz3456
668     0: 1abc2xyz3
669    
670     /^(a*\w|ab)=(a*\w|ab)/
671     ab=ab
672     0: ab=ab
673     1: ab=a
674    
675     /^(a*\w|ab)=(?1)/
676     ab=ab
677     0: ab=ab
678     1: ab=a
679    
680     /^([^()]|\((?1)*\))*$/
681     abc
682     0: abc
683     a(b)c
684     0: a(b)c
685     a(b(c))d
686     0: a(b(c))d
687     *** Failers)
688     No match
689     a(b(c)d
690     No match
691    
692     /^>abc>([^()]|\((?1)*\))*<xyz<$/
693     >abc>123<xyz<
694     0: >abc>123<xyz<
695     >abc>1(2)3<xyz<
696     0: >abc>1(2)3<xyz<
697     >abc>(1(2)3)<xyz<
698     0: >abc>(1(2)3)<xyz<
699    
700     /^(?>a*)\d/
701     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
702     0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
703     *** Failers
704     No match
705     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
706     No match
707    
708     /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
709     <>
710     0: <>
711     <abcd>
712     0: <abcd>
713     <abc <123> hij>
714     0: <abc <123> hij>
715     <abc <def> hij>
716     0: <def>
717     <abc<>def>
718     0: <abc<>def>
719     <abc<>
720     0: <>
721     *** Failers
722     No match
723     <abc
724     No match
725    
726     /^(?(?=abc)\w{3}:|\d\d)$/
727     abc:
728     0: abc:
729     12
730     0: 12
731     *** Failers
732     No match
733     123
734     No match
735     xyz
736     No match
737    
738     /^(?(?!abc)\d\d|\w{3}:)$/
739     abc:
740     0: abc:
741     12
742     0: 12
743     *** Failers
744     No match
745     123
746     No match
747     xyz
748     No match
749    
750     /^(?=abc)\w{5}:$/
751     abcde:
752     0: abcde:
753     *** Failers
754     No match
755     abc..
756     No match
757     123
758     No match
759     vwxyz
760     No match
761    
762     /^(?!abc)\d\d$/
763     12
764     0: 12
765     *** Failers
766     No match
767     abcde:
768     No match
769     abc..
770     No match
771     123
772     No match
773     vwxyz
774     No match
775    
776     /(?<=abc|xy)123/
777     abc12345
778     0: 123
779     wxy123z
780     0: 123
781     *** Failers
782     No match
783     123abc
784     No match
785    
786     /(?<!abc|xy)123/
787     123abc
788     0: 123
789     mno123456
790     0: 123
791     *** Failers
792     No match
793     abc12345
794     No match
795     wxy123z
796     No match
797    
798     /abc(?C1)xyz/
799     abcxyz
800     --->abcxyz
801     1 ^ ^ x
802     0: abcxyz
803     123abcxyz999
804     --->123abcxyz999
805     1 ^ ^ x
806     0: abcxyz
807    
808     /(ab|cd){3,4}/C
809     ababab
810     --->ababab
811     +0 ^ (ab|cd){3,4}
812     +1 ^ a
813     +4 ^ c
814     +2 ^^ b
815     +3 ^ ^ |
816     +1 ^ ^ a
817     +4 ^ ^ c
818     +2 ^ ^ b
819     +3 ^ ^ |
820     +1 ^ ^ a
821     +4 ^ ^ c
822     +2 ^ ^ b
823     +3 ^ ^ |
824     +12 ^ ^
825     +1 ^ ^ a
826     +4 ^ ^ c
827     0: ababab
828     abcdabcd
829     --->abcdabcd
830     +0 ^ (ab|cd){3,4}
831     +1 ^ a
832     +4 ^ c
833     +2 ^^ b
834     +3 ^ ^ |
835     +1 ^ ^ a
836     +4 ^ ^ c
837     +5 ^ ^ d
838     +6 ^ ^ )
839     +1 ^ ^ a
840     +4 ^ ^ c
841     +2 ^ ^ b
842     +3 ^ ^ |
843     +12 ^ ^
844     +1 ^ ^ a
845     +4 ^ ^ c
846     +5 ^ ^ d
847     +6 ^ ^ )
848     +12 ^ ^
849     0: abcdabcd
850     1: abcdab
851     abcdcdcdcdcd
852     --->abcdcdcdcdcd
853     +0 ^ (ab|cd){3,4}
854     +1 ^ a
855     +4 ^ c
856     +2 ^^ b
857     +3 ^ ^ |
858     +1 ^ ^ a
859     +4 ^ ^ c
860     +5 ^ ^ d
861     +6 ^ ^ )
862     +1 ^ ^ a
863     +4 ^ ^ c
864     +5 ^ ^ d
865     +6 ^ ^ )
866     +12 ^ ^
867     +1 ^ ^ a
868     +4 ^ ^ c
869     +5 ^ ^ d
870     +6 ^ ^ )
871     +12 ^ ^
872     0: abcdcdcd
873     1: abcdcd
874    
875     /^abc/
876     abcdef
877     0: abc
878     *** Failers
879     No match
880     abcdef\B
881     No match
882    
883     /^(a*|xyz)/
884     bcd
885     0:
886     aaabcd
887     0: aaa
888     1: aa
889     2: a
890     3:
891     xyz
892     0: xyz
893     1:
894     xyz\N
895     0: xyz
896     *** Failers
897     0:
898     bcd\N
899     No match
900    
901     /xyz$/
902     xyz
903     0: xyz
904     xyz\n
905     0: xyz
906     *** Failers
907     No match
908     xyz\Z
909     No match
910     xyz\n\Z
911     No match
912    
913     /xyz$/m
914     xyz
915     0: xyz
916     xyz\n
917     0: xyz
918     abcxyz\npqr
919     0: xyz
920     abcxyz\npqr\Z
921     0: xyz
922     xyz\n\Z
923     0: xyz
924     *** Failers
925     No match
926     xyz\Z
927     No match
928    
929     /\Gabc/
930     abcdef
931     0: abc
932     defabcxyz\>3
933     0: abc
934     *** Failers
935     No match
936     defabcxyz
937     No match
938    
939     /^abcdef/
940     ab\P
941     Partial match: ab
942     abcde\P
943     Partial match: abcde
944     abcdef\P
945     0: abcdef
946     *** Failers
947     No match
948     abx\P
949     No match
950    
951     /^a{2,4}\d+z/
952     a\P
953     Partial match: a
954     aa\P
955     Partial match: aa
956     aa2\P
957     Partial match: aa2
958     aaa\P
959     Partial match: aaa
960     aaa23\P
961     Partial match: aaa23
962     aaaa12345\P
963     Partial match: aaaa12345
964     aa0z\P
965     0: aa0z
966     aaaa4444444444444z\P
967     0: aaaa4444444444444z
968     *** Failers
969     No match
970     az\P
971     No match
972     aaaaa\P
973     No match
974     a56\P
975     No match
976    
977     /^abcdef/
978     abc\P
979     Partial match: abc
980     def\R
981     0: def
982    
983     /(?<=foo)bar/
984     xyzfo\P
985     No match
986     foob\R\P\>2
987     Partial match: b
988     foobar...\R\P\>4
989     0: ar
990     xyzfo\P
991     No match
992     foobar\R\>2
993     0: bar
994     *** Failers
995     No match
996     xyzfo\P
997     No match
998     obar\R
999     No match
1000    
1001     /(ab*(cd|ef))+X/
1002     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
1003     No match
1004     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
1005     Partial match: abbbbbbcdaefabbbbbbbefa
1006     cdabbbbbbbb\P\R\B\Z
1007     Partial match: cdabbbbbbbb
1008     efabbbbbbbbbbbbbbbb\P\R\B\Z
1009     Partial match: efabbbbbbbbbbbbbbbb
1010     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
1011     0: bbbbbbbbbbbbcdX
1012    
1013     /(a|b)/SF>testsavedregex
1014     Compiled regex written to testsavedregex
1015     Study data written to testsavedregex
1016     <testsavedregex
1017     Compiled regex (byte-inverted) loaded from testsavedregex
1018     Study data loaded from testsavedregex
1019     abc
1020     0: a
1021     ** Failers
1022     0: a
1023     def
1024     No match
1025    
1026     /the quick brown fox/
1027     the quick brown fox
1028     0: the quick brown fox
1029     The quick brown FOX
1030     No match
1031     What do you know about the quick brown fox?
1032     0: the quick brown fox
1033     What do you know about THE QUICK BROWN FOX?
1034     No match
1035    
1036     /The quick brown fox/i
1037     the quick brown fox
1038     0: the quick brown fox
1039     The quick brown FOX
1040     0: The quick brown FOX
1041     What do you know about the quick brown fox?
1042     0: the quick brown fox
1043     What do you know about THE QUICK BROWN FOX?
1044     0: THE QUICK BROWN FOX
1045    
1046     /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
1047     abcd\t\n\r\f\a\e9;\$\\?caxyz
1048     0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
1049    
1050     /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
1051     abxyzpqrrrabbxyyyypqAzz
1052     0: abxyzpqrrrabbxyyyypqAzz
1053     abxyzpqrrrabbxyyyypqAzz
1054     0: abxyzpqrrrabbxyyyypqAzz
1055     aabxyzpqrrrabbxyyyypqAzz
1056     0: aabxyzpqrrrabbxyyyypqAzz
1057     aaabxyzpqrrrabbxyyyypqAzz
1058     0: aaabxyzpqrrrabbxyyyypqAzz
1059     aaaabxyzpqrrrabbxyyyypqAzz
1060     0: aaaabxyzpqrrrabbxyyyypqAzz
1061     abcxyzpqrrrabbxyyyypqAzz
1062     0: abcxyzpqrrrabbxyyyypqAzz
1063     aabcxyzpqrrrabbxyyyypqAzz
1064     0: aabcxyzpqrrrabbxyyyypqAzz
1065     aaabcxyzpqrrrabbxyyyypAzz
1066     0: aaabcxyzpqrrrabbxyyyypAzz
1067     aaabcxyzpqrrrabbxyyyypqAzz
1068     0: aaabcxyzpqrrrabbxyyyypqAzz
1069     aaabcxyzpqrrrabbxyyyypqqAzz
1070     0: aaabcxyzpqrrrabbxyyyypqqAzz
1071     aaabcxyzpqrrrabbxyyyypqqqAzz
1072     0: aaabcxyzpqrrrabbxyyyypqqqAzz
1073     aaabcxyzpqrrrabbxyyyypqqqqAzz
1074     0: aaabcxyzpqrrrabbxyyyypqqqqAzz
1075     aaabcxyzpqrrrabbxyyyypqqqqqAzz
1076     0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
1077     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1078     0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1079     aaaabcxyzpqrrrabbxyyyypqAzz
1080     0: aaaabcxyzpqrrrabbxyyyypqAzz
1081     abxyzzpqrrrabbxyyyypqAzz
1082     0: abxyzzpqrrrabbxyyyypqAzz
1083     aabxyzzzpqrrrabbxyyyypqAzz
1084     0: aabxyzzzpqrrrabbxyyyypqAzz
1085     aaabxyzzzzpqrrrabbxyyyypqAzz
1086     0: aaabxyzzzzpqrrrabbxyyyypqAzz
1087     aaaabxyzzzzpqrrrabbxyyyypqAzz
1088     0: aaaabxyzzzzpqrrrabbxyyyypqAzz
1089     abcxyzzpqrrrabbxyyyypqAzz
1090     0: abcxyzzpqrrrabbxyyyypqAzz
1091     aabcxyzzzpqrrrabbxyyyypqAzz
1092     0: aabcxyzzzpqrrrabbxyyyypqAzz
1093     aaabcxyzzzzpqrrrabbxyyyypqAzz
1094     0: aaabcxyzzzzpqrrrabbxyyyypqAzz
1095     aaaabcxyzzzzpqrrrabbxyyyypqAzz
1096     0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
1097     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1098     0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1099     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1100     0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1101     aaabcxyzpqrrrabbxyyyypABzz
1102     0: aaabcxyzpqrrrabbxyyyypABzz
1103     aaabcxyzpqrrrabbxyyyypABBzz
1104     0: aaabcxyzpqrrrabbxyyyypABBzz
1105     >>>aaabxyzpqrrrabbxyyyypqAzz
1106     0: aaabxyzpqrrrabbxyyyypqAzz
1107     >aaaabxyzpqrrrabbxyyyypqAzz
1108     0: aaaabxyzpqrrrabbxyyyypqAzz
1109     >>>>abcxyzpqrrrabbxyyyypqAzz
1110     0: abcxyzpqrrrabbxyyyypqAzz
1111     *** Failers
1112     No match
1113     abxyzpqrrabbxyyyypqAzz
1114     No match
1115     abxyzpqrrrrabbxyyyypqAzz
1116     No match
1117     abxyzpqrrrabxyyyypqAzz
1118     No match
1119     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
1120     No match
1121     aaaabcxyzzzzpqrrrabbbxyyypqAzz
1122     No match
1123     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
1124     No match
1125    
1126     /^(abc){1,2}zz/
1127     abczz
1128     0: abczz
1129     abcabczz
1130     0: abcabczz
1131     *** Failers
1132     No match
1133     zz
1134     No match
1135     abcabcabczz
1136     No match
1137     >>abczz
1138     No match
1139    
1140     /^(b+?|a){1,2}?c/
1141     bc
1142     0: bc
1143     bbc
1144     0: bbc
1145     bbbc
1146     0: bbbc
1147     bac
1148     0: bac
1149     bbac
1150     0: bbac
1151     aac
1152     0: aac
1153     abbbbbbbbbbbc
1154     0: abbbbbbbbbbbc
1155     bbbbbbbbbbbac
1156     0: bbbbbbbbbbbac
1157     *** Failers
1158     No match
1159     aaac
1160     No match
1161     abbbbbbbbbbbac
1162     No match
1163    
1164     /^(b+|a){1,2}c/
1165     bc
1166     0: bc
1167     bbc
1168     0: bbc
1169     bbbc
1170     0: bbbc
1171     bac
1172     0: bac
1173     bbac
1174     0: bbac
1175     aac
1176     0: aac
1177     abbbbbbbbbbbc
1178     0: abbbbbbbbbbbc
1179     bbbbbbbbbbbac
1180     0: bbbbbbbbbbbac
1181     *** Failers
1182     No match
1183     aaac
1184     No match
1185     abbbbbbbbbbbac
1186     No match
1187    
1188     /^(b+|a){1,2}?bc/
1189     bbc
1190     0: bbc
1191    
1192     /^(b*|ba){1,2}?bc/
1193     babc
1194     0: babc
1195     bbabc
1196     0: bbabc
1197     bababc
1198     0: bababc
1199     *** Failers
1200     No match
1201     bababbc
1202     No match
1203     babababc
1204     No match
1205    
1206     /^(ba|b*){1,2}?bc/
1207     babc
1208     0: babc
1209     bbabc
1210     0: bbabc
1211     bababc
1212     0: bababc
1213     *** Failers
1214     No match
1215     bababbc
1216     No match
1217     babababc
1218     No match
1219    
1220     /^\ca\cA\c[\c{\c:/
1221     \x01\x01\e;z
1222     0: \x01\x01\x1b;z
1223    
1224     /^[ab\]cde]/
1225     athing
1226     0: a
1227     bthing
1228     0: b
1229     ]thing
1230     0: ]
1231     cthing
1232     0: c
1233     dthing
1234     0: d
1235     ething
1236     0: e
1237     *** Failers
1238     No match
1239     fthing
1240     No match
1241     [thing
1242     No match
1243     \\thing
1244     No match
1245    
1246     /^[]cde]/
1247     ]thing
1248     0: ]
1249     cthing
1250     0: c
1251     dthing
1252     0: d
1253     ething
1254     0: e
1255     *** Failers
1256     No match
1257     athing
1258     No match
1259     fthing
1260     No match
1261    
1262     /^[^ab\]cde]/
1263     fthing
1264     0: f
1265     [thing
1266     0: [
1267     \\thing
1268     0: \
1269     *** Failers
1270     0: *
1271     athing
1272     No match
1273     bthing
1274     No match
1275     ]thing
1276     No match
1277     cthing
1278     No match
1279     dthing
1280     No match
1281     ething
1282     No match
1283    
1284     /^[^]cde]/
1285     athing
1286     0: a
1287     fthing
1288     0: f
1289     *** Failers
1290     0: *
1291     ]thing
1292     No match
1293     cthing
1294     No match
1295     dthing
1296     No match
1297     ething
1298     No match
1299    
1300     /^\/
1301    
1302     0: \x81
1303    
1304     /^/
1305    
1306     0: \xff
1307    
1308     /^[0-9]+$/
1309     0
1310     0: 0
1311     1
1312     0: 1
1313     2
1314     0: 2
1315     3
1316     0: 3
1317     4
1318     0: 4
1319     5
1320     0: 5
1321     6
1322     0: 6
1323     7
1324     0: 7
1325     8
1326     0: 8
1327     9
1328     0: 9
1329     10
1330     0: 10
1331     100
1332     0: 100
1333     *** Failers
1334     No match
1335     abc
1336     No match
1337    
1338     /^.*nter/
1339     enter
1340     0: enter
1341     inter
1342     0: inter
1343     uponter
1344     0: uponter
1345    
1346     /^xxx[0-9]+$/
1347     xxx0
1348     0: xxx0
1349     xxx1234
1350     0: xxx1234
1351     *** Failers
1352     No match
1353     xxx
1354     No match
1355    
1356     /^.+[0-9][0-9][0-9]$/
1357     x123
1358     0: x123
1359     xx123
1360     0: xx123
1361     123456
1362     0: 123456
1363     *** Failers
1364     No match
1365     123
1366     No match
1367     x1234
1368     0: x1234
1369    
1370     /^.+?[0-9][0-9][0-9]$/
1371     x123
1372     0: x123
1373     xx123
1374     0: xx123
1375     123456
1376     0: 123456
1377     *** Failers
1378     No match
1379     123
1380     No match
1381     x1234
1382     0: x1234
1383    
1384     /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
1385     abc!pqr=apquxz.ixr.zzz.ac.uk
1386     0: abc!pqr=apquxz.ixr.zzz.ac.uk
1387     *** Failers
1388     No match
1389     !pqr=apquxz.ixr.zzz.ac.uk
1390     No match
1391     abc!=apquxz.ixr.zzz.ac.uk
1392     No match
1393     abc!pqr=apquxz:ixr.zzz.ac.uk
1394     No match
1395     abc!pqr=apquxz.ixr.zzz.ac.ukk
1396     No match
1397    
1398     /:/
1399     Well, we need a colon: somewhere
1400     0: :
1401     *** Fail if we don't
1402     No match
1403    
1404     /([\da-f:]+)$/i
1405     0abc
1406     0: 0abc
1407     abc
1408     0: abc
1409     fed
1410     0: fed
1411     E
1412     0: E
1413     ::
1414     0: ::
1415     5f03:12C0::932e
1416     0: 5f03:12C0::932e
1417     fed def
1418     0: def
1419     Any old stuff
1420     0: ff
1421     *** Failers
1422     No match
1423     0zzz
1424     No match
1425     gzzz
1426     No match
1427     fed\x20
1428     No match
1429     Any old rubbish
1430     No match
1431    
1432     /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
1433     .1.2.3
1434     0: .1.2.3
1435     A.12.123.0
1436     0: A.12.123.0
1437     *** Failers
1438     No match
1439     .1.2.3333
1440     No match
1441     1.2.3
1442     No match
1443     1234.2.3
1444     No match
1445    
1446     /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1447     1 IN SOA non-sp1 non-sp2(
1448     0: 1 IN SOA non-sp1 non-sp2(
1449     1 IN SOA non-sp1 non-sp2 (
1450     0: 1 IN SOA non-sp1 non-sp2 (
1451     *** Failers
1452     No match
1453     1IN SOA non-sp1 non-sp2(
1454     No match
1455    
1456     /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
1457     a.
1458     0: a.
1459     Z.
1460     0: Z.
1461     2.
1462     0: 2.
1463     ab-c.pq-r.
1464     0: ab-c.pq-r.
1465     sxk.zzz.ac.uk.
1466     0: sxk.zzz.ac.uk.
1467     x-.y-.
1468     0: x-.y-.
1469     *** Failers
1470     No match
1471     -abc.peq.
1472     No match
1473    
1474     /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
1475     *.a
1476     0: *.a
1477     *.b0-a
1478     0: *.b0-a
1479     *.c3-b.c
1480     0: *.c3-b.c
1481     *.c-a.b-c
1482     0: *.c-a.b-c
1483     *** Failers
1484     No match
1485     *.0
1486     No match
1487     *.a-
1488     No match
1489     *.a-b.c-
1490     No match
1491     *.c-a.0-c
1492     No match
1493    
1494     /^(?=ab(de))(abd)(e)/
1495     abde
1496     0: abde
1497    
1498     /^(?!(ab)de|x)(abd)(f)/
1499     abdf
1500     0: abdf
1501    
1502     /^(?=(ab(cd)))(ab)/
1503     abcd
1504     0: ab
1505    
1506     /^[\da-f](\.[\da-f])*$/i
1507     a.b.c.d
1508     0: a.b.c.d
1509     A.B.C.D
1510     0: A.B.C.D
1511     a.b.c.1.2.3.C
1512     0: a.b.c.1.2.3.C
1513    
1514     /^\".*\"\s*(;.*)?$/
1515     \"1234\"
1516     0: "1234"
1517     \"abcd\" ;
1518     0: "abcd" ;
1519     \"\" ; rhubarb
1520     0: "" ; rhubarb
1521     *** Failers
1522     No match
1523     \"1234\" : things
1524     No match
1525    
1526     /^$/
1527     \
1528     0:
1529     *** Failers
1530     No match
1531    
1532     / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
1533     ab c
1534     0: ab c
1535     *** Failers
1536     No match
1537     abc
1538     No match
1539     ab cde
1540     No match
1541    
1542     /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
1543     ab c
1544     0: ab c
1545     *** Failers
1546     No match
1547     abc
1548     No match
1549     ab cde
1550     No match
1551    
1552     /^ a\ b[c ]d $/x
1553     a bcd
1554     0: a bcd
1555     a b d
1556     0: a b d
1557     *** Failers
1558     No match
1559     abcd
1560     No match
1561     ab d
1562     No match
1563    
1564     /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
1565     abcdefhijklm
1566     0: abcdefhijklm
1567    
1568     /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
1569     abcdefhijklm
1570     0: abcdefhijklm
1571    
1572     /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
1573     a+ Z0+\x08\n\x1d\x12
1574     0: a+ Z0+\x08\x0a\x1d\x12
1575    
1576     /^[.^$|()*+?{,}]+/
1577     .^\$(*+)|{?,?}
1578     0: .^$(*+)|{?,?}
1579     1: .^$(*+)|{?,?
1580     2: .^$(*+)|{?,
1581     3: .^$(*+)|{?
1582     4: .^$(*+)|{
1583     5: .^$(*+)|
1584     6: .^$(*+)
1585     7: .^$(*+
1586     8: .^$(*
1587     9: .^$(
1588     10: .^$
1589     11: .^
1590     12: .
1591    
1592     /^a*\w/
1593     z
1594     0: z
1595     az
1596     0: az
1597     1: a
1598     aaaz
1599     0: aaaz
1600     1: aaa
1601     2: aa
1602     3: a
1603     a
1604     0: a
1605     aa
1606     0: aa
1607     1: a
1608     aaaa
1609     0: aaaa
1610     1: aaa
1611     2: aa
1612     3: a
1613     a+
1614     0: a
1615     aa+
1616     0: aa
1617     1: a
1618    
1619     /^a*?\w/
1620     z
1621     0: z
1622     az
1623     0: az
1624     1: a
1625     aaaz
1626     0: aaaz
1627     1: aaa
1628     2: aa
1629     3: a
1630     a
1631     0: a
1632     aa
1633     0: aa
1634     1: a
1635     aaaa
1636     0: aaaa
1637     1: aaa
1638     2: aa
1639     3: a
1640     a+
1641     0: a
1642     aa+
1643     0: aa
1644     1: a
1645    
1646     /^a+\w/
1647     az
1648     0: az
1649     aaaz
1650     0: aaaz
1651     1: aaa
1652     2: aa
1653     aa
1654     0: aa
1655     aaaa
1656     0: aaaa
1657     1: aaa
1658     2: aa
1659     aa+
1660     0: aa
1661    
1662     /^a+?\w/
1663     az
1664     0: az
1665     aaaz
1666     0: aaaz
1667     1: aaa
1668     2: aa
1669     aa
1670     0: aa
1671     aaaa
1672     0: aaaa
1673     1: aaa
1674     2: aa
1675     aa+
1676     0: aa
1677    
1678     /^\d{8}\w{2,}/
1679     1234567890
1680     0: 1234567890
1681     12345678ab
1682     0: 12345678ab
1683     12345678__
1684     0: 12345678__
1685     *** Failers
1686     No match
1687     1234567
1688     No match
1689    
1690     /^[aeiou\d]{4,5}$/
1691     uoie
1692     0: uoie
1693     1234
1694     0: 1234
1695     12345
1696     0: 12345
1697     aaaaa
1698     0: aaaaa
1699     *** Failers
1700     No match
1701     123456
1702     No match
1703    
1704     /^[aeiou\d]{4,5}?/
1705     uoie
1706     0: uoie
1707     1234
1708     0: 1234
1709     12345
1710     0: 12345
1711     1: 1234
1712     aaaaa
1713     0: aaaaa
1714     1: aaaa
1715     123456
1716     0: 12345
1717     1: 1234
1718    
1719     /^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]/
1720     From abcd Mon Sep 01 12:33:02 1997
1721     0: From abcd Mon Sep 01 12:33
1722    
1723     /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
1724     From abcd Mon Sep 01 12:33:02 1997
1725     0: From abcd Mon Sep 01 12:33
1726     From abcd Mon Sep 1 12:33:02 1997
1727     0: From abcd Mon Sep 1 12:33
1728     *** Failers
1729     No match
1730     From abcd Sep 01 12:33:02 1997
1731     No match
1732    
1733     /^12.34/s
1734     12\n34
1735     0: 12\x0a34
1736     12\r34
1737     0: 12\x0d34
1738    
1739     /\w+(?=\t)/
1740     the quick brown\t fox
1741     0: brown
1742    
1743     /foo(?!bar)(.*)/
1744     foobar is foolish see?
1745     0: foolish see?
1746     1: foolish see
1747     2: foolish se
1748     3: foolish s
1749     4: foolish
1750     5: foolish
1751     6: foolis
1752     7: fooli
1753     8: fool
1754     9: foo
1755    
1756     /(?:(?!foo)...|^.{0,2})bar(.*)/
1757     foobar crowbar etc
1758     0: rowbar etc
1759     1: rowbar et
1760     2: rowbar e
1761     3: rowbar
1762     4: rowbar
1763     barrel
1764     0: barrel
1765     1: barre
1766     2: barr
1767     3: bar
1768     2barrel
1769     0: 2barrel
1770     1: 2barre
1771     2: 2barr
1772     3: 2bar
1773     A barrel
1774     0: A barrel
1775     1: A barre
1776     2: A barr
1777     3: A bar
1778    
1779     /^(\D*)(?=\d)(?!123)/
1780     abc456
1781     0: abc
1782     *** Failers
1783     No match
1784     abc123
1785     No match
1786    
1787     /^1234(?# test newlines
1788     inside)/
1789     1234
1790     0: 1234
1791    
1792     /^1234 #comment in extended re
1793     /x
1794     1234
1795     0: 1234
1796    
1797     /#rhubarb
1798     abcd/x
1799     abcd
1800     0: abcd
1801    
1802     /^abcd#rhubarb/x
1803     abcd
1804     0: abcd
1805    
1806     /(?!^)abc/
1807     the abc
1808     0: abc
1809     *** Failers
1810     No match
1811     abc
1812     No match
1813    
1814     /(?=^)abc/
1815     abc
1816     0: abc
1817     *** Failers
1818     No match
1819     the abc
1820     No match
1821    
1822     /^[ab]{1,3}(ab*|b)/
1823     aabbbbb
1824     0: aabbbbb
1825     1: aabbbb
1826     2: aabbb
1827     3: aabb
1828     4: aab
1829     5: aa
1830    
1831     /^[ab]{1,3}?(ab*|b)/
1832     aabbbbb
1833     0: aabbbbb
1834     1: aabbbb
1835     2: aabbb
1836     3: aabb
1837     4: aab
1838     5: aa
1839    
1840     /^[ab]{1,3}?(ab*?|b)/
1841     aabbbbb
1842     0: aabbbbb
1843     1: aabbbb
1844     2: aabbb
1845     3: aabb
1846     4: aab
1847     5: aa
1848    
1849     /^[ab]{1,3}(ab*?|b)/
1850     aabbbbb
1851     0: aabbbbb
1852     1: aabbbb
1853     2: aabbb
1854     3: aabb
1855     4: aab
1856     5: aa
1857    
1858     / (?: [\040\t] | \(
1859     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1860     \) )* # optional leading comment
1861     (?: (?:
1862     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1863     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1864     |
1865     " (?: # opening quote...
1866     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1867     | # or
1868     \\ [^\x80-\xff] # Escaped something (something != CR)
1869     )* " # closing quote
1870     ) # initial word
1871     (?: (?: [\040\t] | \(
1872     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1873     \) )* \. (?: [\040\t] | \(
1874     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1875     \) )* (?:
1876     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1877     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1878     |
1879     " (?: # opening quote...
1880     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1881     | # or
1882     \\ [^\x80-\xff] # Escaped something (something != CR)
1883     )* " # closing quote
1884     ) )* # further okay, if led by a period
1885     (?: [\040\t] | \(
1886     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1887     \) )* @ (?: [\040\t] | \(
1888     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1889     \) )* (?:
1890     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1891     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1892     | \[ # [
1893     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1894     \] # ]
1895     ) # initial subdomain
1896     (?: #
1897     (?: [\040\t] | \(
1898     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1899     \) )* \. # if led by a period...
1900     (?: [\040\t] | \(
1901     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1902     \) )* (?:
1903     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1904     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1905     | \[ # [
1906     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1907     \] # ]
1908     ) # ...further okay
1909     )*
1910     # address
1911     | # or
1912     (?:
1913     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1914     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1915     |
1916     " (?: # opening quote...
1917     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1918     | # or
1919     \\ [^\x80-\xff] # Escaped something (something != CR)
1920     )* " # closing quote
1921     ) # one word, optionally followed by....
1922     (?:
1923     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1924     \(
1925     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1926     \) | # comments, or...
1927    
1928     " (?: # opening quote...
1929     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1930     | # or
1931     \\ [^\x80-\xff] # Escaped something (something != CR)
1932     )* " # closing quote
1933     # quoted strings
1934     )*
1935     < (?: [\040\t] | \(
1936     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1937     \) )* # leading <
1938     (?: @ (?: [\040\t] | \(
1939     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1940     \) )* (?:
1941     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1942     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1943     | \[ # [
1944     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1945     \] # ]
1946     ) # initial subdomain
1947     (?: #
1948     (?: [\040\t] | \(
1949     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1950     \) )* \. # if led by a period...
1951     (?: [\040\t] | \(
1952     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1953     \) )* (?:
1954     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1955     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1956     | \[ # [
1957     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1958     \] # ]
1959     ) # ...further okay
1960     )*
1961    
1962     (?: (?: [\040\t] | \(
1963     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1964     \) )* , (?: [\040\t] | \(
1965     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1966     \) )* @ (?: [\040\t] | \(
1967     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1968     \) )* (?:
1969     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1970     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1971     | \[ # [
1972     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1973     \] # ]
1974     ) # initial subdomain
1975     (?: #
1976     (?: [\040\t] | \(
1977     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1978     \) )* \. # if led by a period...
1979     (?: [\040\t] | \(
1980     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1981     \) )* (?:
1982     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1983     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1984     | \[ # [
1985     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1986     \] # ]
1987     ) # ...further okay
1988     )*
1989     )* # further okay, if led by comma
1990     : # closing colon
1991     (?: [\040\t] | \(
1992     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1993     \) )* )? # optional route
1994     (?:
1995     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1996     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1997     |
1998     " (?: # opening quote...
1999     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
2000     | # or
2001     \\ [^\x80-\xff] # Escaped something (something != CR)
2002     )* " # closing quote
2003     ) # initial word
2004     (?: (?: [\040\t] | \(
2005     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2006     \) )* \. (?: [\040\t] | \(
2007     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2008     \) )* (?:
2009     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2010     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2011     |
2012     " (?: # opening quote...
2013     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
2014     | # or
2015     \\ [^\x80-\xff] # Escaped something (something != CR)
2016     )* " # closing quote
2017     ) )* # further okay, if led by a period
2018     (?: [\040\t] | \(
2019     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2020     \) )* @ (?: [\040\t] | \(
2021     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2022     \) )* (?:
2023     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2024     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2025     | \[ # [
2026     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2027     \] # ]
2028     ) # initial subdomain
2029     (?: #
2030     (?: [\040\t] | \(
2031     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2032     \) )* \. # if led by a period...
2033     (?: [\040\t] | \(
2034     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2035     \) )* (?:
2036     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2037     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2038     | \[ # [
2039     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2040     \] # ]
2041     ) # ...further okay
2042     )*
2043     # address spec
2044     (?: [\040\t] | \(
2045     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2046     \) )* > # trailing >
2047     # name and address
2048     ) (?: [\040\t] | \(
2049     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2050     \) )* # optional trailing comment
2051     /x
2052     Alan Other <user\@dom.ain>
2053     0: Alan Other <user@dom.ain>
2054     <user\@dom.ain>
2055     0: user@dom.ain
2056     1: user@dom
2057     user\@dom.ain
2058     0: user@dom.ain
2059     1: user@dom
2060     \"A. Other\" <user.1234\@dom.ain> (a comment)
2061     0: "A. Other" <user.1234@dom.ain> (a comment)
2062     1: "A. Other" <user.1234@dom.ain>
2063     2: "A. Other" <user.1234@dom.ain>
2064     A. Other <user.1234\@dom.ain> (a comment)
2065     0: Other <user.1234@dom.ain> (a comment)
2066     1: Other <user.1234@dom.ain>
2067     2: Other <user.1234@dom.ain>
2068     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2069     0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2070     1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2071     A missing angle <user\@some.where
2072     0: user@some.where
2073     1: user@some
2074     *** Failers
2075     No match
2076     The quick brown fox
2077     No match
2078    
2079     /[\040\t]* # Nab whitespace.
2080     (?:
2081     \( # (
2082     [^\\\x80-\xff\n\015()] * # normal*
2083     (?: # (
2084     (?: \\ [^\x80-\xff] |
2085     \( # (
2086     [^\\\x80-\xff\n\015()] * # normal*
2087     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2088     \) # )
2089     ) # special
2090     [^\\\x80-\xff\n\015()] * # normal*
2091     )* # )*
2092     \) # )
2093     [\040\t]* )* # If comment found, allow more spaces.
2094     # optional leading comment
2095     (?:
2096     (?:
2097     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2098     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2099     # Atom
2100     | # or
2101     " # "
2102     [^\\\x80-\xff\n\015"] * # normal
2103     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2104     " # "
2105     # Quoted string
2106     )
2107     [\040\t]* # Nab whitespace.
2108     (?:
2109     \( # (
2110     [^\\\x80-\xff\n\015()] * # normal*
2111     (?: # (
2112     (?: \\ [^\x80-\xff] |
2113     \( # (
2114     [^\\\x80-\xff\n\015()] * # normal*
2115     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2116     \) # )
2117     ) # special
2118     [^\\\x80-\xff\n\015()] * # normal*
2119     )* # )*
2120     \) # )
2121     [\040\t]* )* # If comment found, allow more spaces.
2122     (?:
2123     \.
2124     [\040\t]* # Nab whitespace.
2125     (?:
2126     \( # (
2127     [^\\\x80-\xff\n\015()] * # normal*
2128     (?: # (
2129     (?: \\ [^\x80-\xff] |
2130     \( # (
2131     [^\\\x80-\xff\n\015()] * # normal*
2132     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2133     \) # )
2134     ) # special
2135     [^\\\x80-\xff\n\015()] * # normal*
2136     )* # )*
2137     \) # )
2138     [\040\t]* )* # If comment found, allow more spaces.
2139     (?:
2140     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2141     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2142     # Atom
2143     | # or
2144     " # "
2145     [^\\\x80-\xff\n\015"] * # normal
2146     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2147     " # "
2148     # Quoted string
2149     )
2150     [\040\t]* # Nab whitespace.
2151     (?:
2152     \( # (
2153     [^\\\x80-\xff\n\015()] * # normal*
2154     (?: # (
2155     (?: \\ [^\x80-\xff] |
2156     \( # (
2157     [^\\\x80-\xff\n\015()] * # normal*
2158     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2159     \) # )
2160     ) # special
2161     [^\\\x80-\xff\n\015()] * # normal*
2162     )* # )*
2163     \) # )
2164     [\040\t]* )* # If comment found, allow more spaces.
2165     # additional words
2166     )*
2167     @
2168     [\040\t]* # Nab whitespace.
2169     (?:
2170     \( # (
2171     [^\\\x80-\xff\n\015()] * # normal*
2172     (?: # (
2173     (?: \\ [^\x80-\xff] |
2174     \( # (
2175     [^\\\x80-\xff\n\015()] * # normal*
2176     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2177     \) # )
2178     ) # special
2179     [^\\\x80-\xff\n\015()] * # normal*
2180     )* # )*
2181     \) # )
2182     [\040\t]* )* # If comment found, allow more spaces.
2183     (?:
2184     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2185     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2186     |
2187     \[ # [
2188     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2189     \] # ]
2190     )
2191     [\040\t]* # Nab whitespace.
2192     (?:
2193     \( # (
2194     [^\\\x80-\xff\n\015()] * # normal*
2195     (?: # (
2196     (?: \\ [^\x80-\xff] |
2197     \( # (
2198     [^\\\x80-\xff\n\015()] * # normal*
2199     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2200     \) # )
2201     ) # special
2202     [^\\\x80-\xff\n\015()] * # normal*
2203     )* # )*
2204     \) # )
2205     [\040\t]* )* # If comment found, allow more spaces.
2206     # optional trailing comments
2207     (?:
2208     \.
2209     [\040\t]* # Nab whitespace.
2210     (?:
2211     \( # (
2212     [^\\\x80-\xff\n\015()] * # normal*
2213     (?: # (
2214     (?: \\ [^\x80-\xff] |
2215     \( # (
2216     [^\\\x80-\xff\n\015()] * # normal*
2217     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2218     \) # )
2219     ) # special
2220     [^\\\x80-\xff\n\015()] * # normal*
2221     )* # )*
2222     \) # )
2223     [\040\t]* )* # If comment found, allow more spaces.
2224     (?:
2225     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2226     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2227     |
2228     \[ # [
2229     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2230     \] # ]
2231     )
2232     [\040\t]* # Nab whitespace.
2233     (?:
2234     \( # (
2235     [^\\\x80-\xff\n\015()] * # normal*
2236     (?: # (
2237     (?: \\ [^\x80-\xff] |
2238     \( # (
2239     [^\\\x80-\xff\n\015()] * # normal*
2240     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2241     \) # )
2242     ) # special
2243     [^\\\x80-\xff\n\015()] * # normal*
2244     )* # )*
2245     \) # )
2246     [\040\t]* )* # If comment found, allow more spaces.
2247     # optional trailing comments
2248     )*
2249     # address
2250     | # or
2251     (?:
2252     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2253     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2254     # Atom
2255     | # or
2256     " # "
2257     [^\\\x80-\xff\n\015"] * # normal
2258     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2259     " # "
2260     # Quoted string
2261     )
2262     # leading word
2263     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
2264     (?:
2265     (?:
2266     \( # (
2267     [^\\\x80-\xff\n\015()] * # normal*
2268     (?: # (
2269     (?: \\ [^\x80-\xff] |
2270     \( # (
2271     [^\\\x80-\xff\n\015()] * # normal*
2272     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2273     \) # )
2274     ) # special
2275     [^\\\x80-\xff\n\015()] * # normal*
2276     )* # )*
2277     \) # )
2278     |
2279     " # "
2280     [^\\\x80-\xff\n\015"] * # normal
2281     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2282     " # "
2283     ) # "special" comment or quoted string
2284     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
2285     )*
2286     <
2287     [\040\t]* # Nab whitespace.
2288     (?:
2289     \( # (
2290     [^\\\x80-\xff\n\015()] * # normal*
2291     (?: # (
2292     (?: \\ [^\x80-\xff] |
2293     \( # (
2294     [^\\\x80-\xff\n\015()] * # normal*
2295     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2296     \) # )
2297     ) # special
2298     [^\\\x80-\xff\n\015()] * # normal*
2299     )* # )*
2300     \) # )
2301     [\040\t]* )* # If comment found, allow more spaces.
2302     # <
2303     (?:
2304     @
2305     [\040\t]* # Nab whitespace.
2306     (?:
2307     \( # (
2308     [^\\\x80-\xff\n\015()] * # normal*
2309     (?: # (
2310     (?: \\ [^\x80-\xff] |
2311     \( # (
2312     [^\\\x80-\xff\n\015()] * # normal*
2313     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2314     \) # )
2315     ) # special
2316     [^\\\x80-\xff\n\015()] * # normal*
2317     )* # )*
2318     \) # )
2319     [\040\t]* )* # If comment found, allow more spaces.
2320     (?:
2321     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2322     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2323     |
2324     \[ # [
2325     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2326     \] # ]
2327     )
2328     [\040\t]* # Nab whitespace.
2329     (?:
2330     \( # (
2331     [^\\\x80-\xff\n\015()] * # normal*
2332     (?: # (
2333     (?: \\ [^\x80-\xff] |
2334     \( # (
2335     [^\\\x80-\xff\n\015()] * # normal*
2336     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2337     \) # )
2338     ) # special
2339     [^\\\x80-\xff\n\015()] * # normal*
2340     )* # )*
2341     \) # )
2342     [\040\t]* )* # If comment found, allow more spaces.
2343     # optional trailing comments
2344     (?:
2345     \.
2346     [\040\t]* # Nab whitespace.
2347     (?:
2348     \( # (
2349     [^\\\x80-\xff\n\015()] * # normal*
2350     (?: # (
2351     (?: \\ [^\x80-\xff] |
2352     \( # (
2353     [^\\\x80-\xff\n\015()] * # normal*
2354     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2355     \) # )
2356     ) # special
2357     [^\\\x80-\xff\n\015()] * # normal*
2358     )* # )*
2359     \) # )
2360     [\040\t]* )* # If comment found, allow more spaces.
2361     (?:
2362     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2363     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2364     |
2365     \[ # [
2366     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2367     \] # ]
2368     )
2369     [\040\t]* # Nab whitespace.
2370     (?:
2371     \( # (
2372     [^\\\x80-\xff\n\015()] * # normal*
2373     (?: # (
2374     (?: \\ [^\x80-\xff] |
2375     \( # (
2376     [^\\\x80-\xff\n\015()] * # normal*
2377     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2378     \) # )
2379     ) # special
2380     [^\\\x80-\xff\n\015()] * # normal*
2381     )* # )*
2382     \) # )
2383     [\040\t]* )* # If comment found, allow more spaces.
2384     # optional trailing comments
2385     )*
2386     (?: ,
2387     [\040\t]* # Nab whitespace.
2388     (?:
2389     \( # (
2390     [^\\\x80-\xff\n\015()] * # normal*
2391     (?: # (
2392     (?: \\ [^\x80-\xff] |
2393     \( # (
2394     [^\\\x80-\xff\n\015()] * # normal*
2395     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2396     \) # )
2397     ) # special
2398     [^\\\x80-\xff\n\015()] * # normal*
2399     )* # )*
2400     \) # )
2401     [\040\t]* )* # If comment found, allow more spaces.
2402     @
2403     [\040\t]* # Nab whitespace.
2404     (?:
2405     \( # (
2406     [^\\\x80-\xff\n\015()] * # normal*
2407     (?: # (
2408     (?: \\ [^\x80-\xff] |
2409     \( # (
2410     [^\\\x80-\xff\n\015()] * # normal*
2411     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2412     \) # )
2413     ) # special
2414     [^\\\x80-\xff\n\015()] * # normal*
2415     )* # )*
2416     \) # )
2417     [\040\t]* )* # If comment found, allow more spaces.
2418     (?:
2419     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2420     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2421     |
2422     \[ # [
2423     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2424     \] # ]
2425     )
2426     [\040\t]* # Nab whitespace.
2427     (?:
2428     \( # (
2429     [^\\\x80-\xff\n\015()] * # normal*
2430     (?: # (
2431     (?: \\ [^\x80-\xff] |
2432     \( # (
2433     [^\\\x80-\xff\n\015()] * # normal*
2434     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2435     \) # )
2436     ) # special
2437     [^\\\x80-\xff\n\015()] * # normal*
2438     )* # )*
2439     \) # )
2440     [\040\t]* )* # If comment found, allow more spaces.
2441     # optional trailing comments
2442     (?:
2443     \.
2444     [\040\t]* # Nab whitespace.
2445     (?:
2446     \( # (
2447     [^\\\x80-\xff\n\015()] * # normal*
2448     (?: # (
2449     (?: \\ [^\x80-\xff] |
2450     \( # (
2451     [^\\\x80-\xff\n\015()] * # normal*
2452     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2453     \) # )
2454     ) # special
2455     [^\\\x80-\xff\n\015()] * # normal*
2456     )* # )*
2457     \) # )
2458     [\040\t]* )* # If comment found, allow more spaces.
2459     (?:
2460     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2461     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2462     |
2463     \[ # [
2464     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2465     \] # ]
2466     )
2467     [\040\t]* # Nab whitespace.
2468     (?:
2469     \( # (
2470     [^\\\x80-\xff\n\015()] * # normal*
2471     (?: # (
2472     (?: \\ [^\x80-\xff] |
2473     \( # (
2474     [^\\\x80-\xff\n\015()] * # normal*
2475     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2476     \) # )
2477     ) # special
2478     [^\\\x80-\xff\n\015()] * # normal*
2479     )* # )*
2480     \) # )
2481     [\040\t]* )* # If comment found, allow more spaces.
2482     # optional trailing comments
2483     )*
2484     )* # additional domains
2485     :
2486     [\040\t]* # Nab whitespace.
2487     (?:
2488     \( # (
2489     [^\\\x80-\xff\n\015()] * # normal*
2490     (?: # (
2491     (?: \\ [^\x80-\xff] |
2492     \( # (
2493     [^\\\x80-\xff\n\015()] * # normal*
2494     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2495     \) # )
2496     ) # special
2497     [^\\\x80-\xff\n\015()] * # normal*
2498     )* # )*
2499     \) # )
2500     [\040\t]* )* # If comment found, allow more spaces.
2501     # optional trailing comments
2502     )? # optional route
2503     (?:
2504     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2505     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2506     # Atom
2507     | # or
2508     " # "
2509     [^\\\x80-\xff\n\015"] * # normal
2510     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2511     " # "
2512     # Quoted string
2513     )
2514     [\040\t]* # Nab whitespace.
2515     (?:
2516     \( # (
2517     [^\\\x80-\xff\n\015()] * # normal*
2518     (?: # (
2519     (?: \\ [^\x80-\xff] |
2520     \( # (
2521     [^\\\x80-\xff\n\015()] * # normal*
2522     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2523     \) # )
2524     ) # special
2525     [^\\\x80-\xff\n\015()] * # normal*
2526     )* # )*
2527     \) # )
2528     [\040\t]* )* # If comment found, allow more spaces.
2529     (?:
2530     \.
2531     [\040\t]* # Nab whitespace.
2532     (?:
2533     \( # (
2534     [^\\\x80-\xff\n\015()] * # normal*
2535     (?: # (
2536     (?: \\ [^\x80-\xff] |
2537     \( # (
2538     [^\\\x80-\xff\n\015()] * # normal*
2539     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2540     \) # )
2541     ) # special
2542     [^\\\x80-\xff\n\015()] * # normal*
2543     )* # )*
2544     \) # )
2545     [\040\t]* )* # If comment found, allow more spaces.
2546     (?:
2547     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2548     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2549     # Atom
2550     | # or
2551     " # "
2552     [^\\\x80-\xff\n\015"] * # normal
2553     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
2554     " # "
2555     # Quoted string
2556     )
2557     [\040\t]* # Nab whitespace.
2558     (?:
2559     \( # (
2560     [^\\\x80-\xff\n\015()] * # normal*
2561     (?: # (
2562     (?: \\ [^\x80-\xff] |
2563     \( # (
2564     [^\\\x80-\xff\n\015()] * # normal*
2565     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2566     \) # )
2567     ) # special
2568     [^\\\x80-\xff\n\015()] * # normal*
2569     )* # )*
2570     \) # )
2571     [\040\t]* )* # If comment found, allow more spaces.
2572     # additional words
2573     )*
2574     @
2575     [\040\t]* # Nab whitespace.
2576     (?:
2577     \( # (
2578     [^\\\x80-\xff\n\015()] * # normal*
2579     (?: # (
2580     (?: \\ [^\x80-\xff] |
2581     \( # (
2582     [^\\\x80-\xff\n\015()] * # normal*
2583     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2584     \) # )
2585     ) # special
2586     [^\\\x80-\xff\n\015()] * # normal*
2587     )* # )*
2588     \) # )
2589     [\040\t]* )* # If comment found, allow more spaces.
2590     (?:
2591     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2592     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2593     |
2594     \[ # [
2595     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2596     \] # ]
2597     )
2598     [\040\t]* # Nab whitespace.
2599     (?:
2600     \( # (
2601     [^\\\x80-\xff\n\015()] * # normal*
2602     (?: # (
2603     (?: \\ [^\x80-\xff] |
2604     \( # (
2605     [^\\\x80-\xff\n\015()] * # normal*
2606     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2607     \) # )
2608     ) # special
2609     [^\\\x80-\xff\n\015()] * # normal*
2610     )* # )*
2611     \) # )
2612     [\040\t]* )* # If comment found, allow more spaces.
2613     # optional trailing comments
2614     (?:
2615     \.
2616     [\040\t]* # Nab whitespace.
2617     (?:
2618     \( # (
2619     [^\\\x80-\xff\n\015()] * # normal*
2620     (?: # (
2621     (?: \\ [^\x80-\xff] |
2622     \( # (
2623     [^\\\x80-\xff\n\015()] * # normal*
2624     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2625     \) # )
2626     ) # special
2627     [^\\\x80-\xff\n\015()] * # normal*
2628     )* # )*
2629     \) # )
2630     [\040\t]* )* # If comment found, allow more spaces.
2631     (?:
2632     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2633     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2634     |
2635     \[ # [
2636     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
2637     \] # ]
2638     )
2639     [\040\t]* # Nab whitespace.
2640     (?:
2641     \( # (
2642     [^\\\x80-\xff\n\015()] * # normal*
2643     (?: # (
2644     (?: \\ [^\x80-\xff] |
2645     \( # (
2646     [^\\\x80-\xff\n\015()] * # normal*
2647     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
2648     \) # )
2649     ) # special
2650     [^\\\x80-\xff\n\015()] * # normal*
2651     )* # )*
2652     \) # )
2653     [\040\t]* )* # If comment found, allow more spaces.
2654     # optional trailing comments
2655     )*
2656     # address spec
2657     > # >
2658     # name and address
2659     )
2660     /x
2661     Alan Other <user\@dom.ain>
2662     0: Alan Other <user@dom.ain>
2663     <user\@dom.ain>
2664     0: user@dom.ain
2665     1: user@dom
2666     user\@dom.ain
2667     0: user@dom.ain
2668     1: user@dom
2669     \"A. Other\" <user.1234\@dom.ain> (a comment)
2670     0: "A. Other" <user.1234@dom.ain>
2671     A. Other <user.1234\@dom.ain> (a comment)
2672     0: Other <user.1234@dom.ain>
2673     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2674     0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2675     1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2676     A missing angle <user\@some.where
2677     0: user@some.where
2678     1: user@some
2679     *** Failers
2680     No match
2681     The quick brown fox
2682     No match
2683    
2684     /abc\0def\00pqr\000xyz\0000AB/
2685     abc\0def\00pqr\000xyz\0000AB
2686     0: abc\x00def\x00pqr\x00xyz\x000AB
2687     abc456 abc\0def\00pqr\000xyz\0000ABCDE
2688     0: abc\x00def\x00pqr\x00xyz\x000AB
2689    
2690     /abc\x0def\x00pqr\x000xyz\x0000AB/
2691     abc\x0def\x00pqr\x000xyz\x0000AB
2692     0: abc\x0def\x00pqr\x000xyz\x0000AB
2693     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
2694     0: abc\x0def\x00pqr\x000xyz\x0000AB
2695    
2696     /^[\000-\037]/
2697     \0A
2698     0: \x00
2699     \01B
2700     0: \x01
2701     \037C
2702     0: \x1f
2703    
2704     /\0*/
2705     \0\0\0\0
2706     0: \x00\x00\x00\x00
2707     1: \x00\x00\x00
2708     2: \x00\x00
2709     3: \x00
2710     4:
2711    
2712     /A\x0{2,3}Z/
2713     The A\x0\x0Z
2714     0: A\x00\x00Z
2715     An A\0\x0\0Z
2716     0: A\x00\x00\x00Z
2717     *** Failers
2718     No match
2719     A\0Z
2720     No match
2721     A\0\x0\0\x0Z
2722     No match
2723    
2724     /^\s/
2725     \040abc
2726     0:
2727     \x0cabc
2728     0: \x0c
2729     \nabc
2730     0: \x0a
2731     \rabc
2732     0: \x0d
2733     \tabc
2734     0: \x09
2735     *** Failers
2736     No match
2737     abc
2738     No match
2739    
2740     /^a b
2741    
2742     c/x
2743     abc
2744     0: abc
2745    
2746     /ab{1,3}bc/
2747     abbbbc
2748     0: abbbbc
2749     abbbc
2750     0: abbbc
2751     abbc
2752     0: abbc
2753     *** Failers
2754     No match
2755     abc
2756     No match
2757     abbbbbc
2758     No match
2759    
2760     /([^.]*)\.([^:]*):[T ]+(.*)/
2761     track1.title:TBlah blah blah
2762     0: track1.title:TBlah blah blah
2763     1: track1.title:TBlah blah bla
2764     2: track1.title:TBlah blah bl
2765     3: track1.title:TBlah blah b
2766     4: track1.title:TBlah blah
2767     5: track1.title:TBlah blah
2768     6: track1.title:TBlah bla
2769     7: track1.title:TBlah bl
2770     8: track1.title:TBlah b
2771     9: track1.title:TBlah
2772     10: track1.title:TBlah
2773     11: track1.title:TBla
2774     12: track1.title:TBl
2775     13: track1.title:TB
2776     14: track1.title:T
2777    
2778     /([^.]*)\.([^:]*):[T ]+(.*)/i
2779     track1.title:TBlah blah blah
2780     0: track1.title:TBlah blah blah
2781     1: track1.title:TBlah blah bla
2782     2: track1.title:TBlah blah bl
2783     3: track1.title:TBlah blah b
2784     4: track1.title:TBlah blah
2785     5: track1.title:TBlah blah
2786     6: track1.title:TBlah bla
2787     7: track1.title:TBlah bl
2788     8: track1.title:TBlah b
2789     9: track1.title:TBlah
2790     10: track1.title:TBlah
2791     11: track1.title:TBla
2792     12: track1.title:TBl
2793     13: track1.title:TB
2794     14: track1.title:T
2795    
2796     /([^.]*)\.([^:]*):[t ]+(.*)/i
2797     track1.title:TBlah blah blah
2798     0: track1.title:TBlah blah blah
2799     1: track1.title:TBlah blah bla
2800     2: track1.title:TBlah blah bl
2801     3: track1.title:TBlah blah b
2802     4: track1.title:TBlah blah
2803     5: track1.title:TBlah blah
2804     6: track1.title:TBlah bla
2805     7: track1.title:TBlah bl
2806     8: track1.title:TBlah b
2807     9: track1.title:TBlah
2808     10: track1.title:TBlah
2809     11: track1.title:TBla
2810     12: track1.title:TBl
2811     13: track1.title:TB
2812     14: track1.title:T
2813    
2814     /^[W-c]+$/
2815     WXY_^abc
2816     0: WXY_^abc
2817     *** Failers
2818     No match
2819     wxy
2820     No match
2821    
2822     /^[W-c]+$/i
2823     WXY_^abc
2824     0: WXY_^abc
2825     wxy_^ABC
2826     0: wxy_^ABC
2827    
2828     /^[\x3f-\x5F]+$/i
2829     WXY_^abc
2830     0: WXY_^abc
2831     wxy_^ABC
2832     0: wxy_^ABC
2833    
2834     /^abc$/m
2835     abc
2836     0: abc
2837     qqq\nabc
2838     0: abc
2839     abc\nzzz
2840     0: abc
2841     qqq\nabc\nzzz
2842     0: abc
2843    
2844     /^abc$/
2845     abc
2846     0: abc
2847     *** Failers
2848     No match
2849     qqq\nabc
2850     No match
2851     abc\nzzz
2852     No match
2853     qqq\nabc\nzzz
2854     No match
2855    
2856     /\Aabc\Z/m
2857     abc
2858     0: abc
2859     abc\n
2860     0: abc
2861     *** Failers
2862     No match
2863     qqq\nabc
2864     No match
2865     abc\nzzz
2866     No match
2867     qqq\nabc\nzzz
2868     No match
2869    
2870     /\A(.)*\Z/s
2871     abc\ndef
2872     0: abc\x0adef
2873    
2874     /\A(.)*\Z/m
2875     *** Failers
2876     0: *** Failers
2877     abc\ndef
2878     No match
2879    
2880     /(?:b)|(?::+)/
2881     b::c
2882     0: b
2883     c::b
2884     0: ::
2885     1: :
2886    
2887     /[-az]+/
2888     az-
2889     0: az-
2890     1: az
2891     2: a
2892     *** Failers
2893     0: a
2894     b
2895     No match
2896    
2897     /[az-]+/
2898     za-
2899     0: za-
2900     1: za
2901     2: z
2902     *** Failers
2903     0: a
2904     b
2905     No match
2906    
2907     /[a\-z]+/
2908     a-z
2909     0: a-z
2910     1: a-
2911     2: a
2912     *** Failers
2913     0: a
2914     b
2915     No match
2916    
2917     /[a-z]+/
2918     abcdxyz
2919     0: abcdxyz
2920     1: abcdxy
2921     2: abcdx
2922     3: abcd
2923     4: abc
2924     5: ab
2925     6: a
2926    
2927     /[\d-]+/
2928     12-34
2929     0: 12-34
2930     1: 12-3
2931     2: 12-
2932     3: 12
2933     4: 1
2934     *** Failers
2935     No match
2936     aaa
2937     No match
2938    
2939     /[\d-z]+/
2940     12-34z
2941     0: 12-34z
2942     1: 12-34
2943     2: 12-3
2944     3: 12-
2945     4: 12
2946     5: 1
2947     *** Failers
2948     No match
2949     aaa
2950     No match
2951    
2952     /\x5c/
2953     \\
2954     0: \
2955    
2956     /\x20Z/
2957     the Zoo
2958     0: Z
2959     *** Failers
2960     No match
2961     Zulu
2962     No match
2963    
2964     /ab{3cd/
2965     ab{3cd
2966     0: ab{3cd
2967    
2968     /ab{3,cd/
2969     ab{3,cd
2970     0: ab{3,cd
2971    
2972     /ab{3,4a}cd/
2973     ab{3,4a}cd
2974     0: ab{3,4a}cd
2975    
2976     /{4,5a}bc/
2977     {4,5a}bc
2978     0: {4,5a}bc
2979    
2980     /^a.b/
2981     a\rb
2982     0: a\x0db
2983     *** Failers
2984     No match
2985     a\nb
2986     No match
2987    
2988     /abc$/
2989     abc
2990     0: abc
2991     abc\n
2992     0: abc
2993     *** Failers
2994     No match
2995     abc\ndef
2996     No match
2997    
2998     /(abc)\123/
2999     abc\x53
3000     0: abcS
3001    
3002     /(abc)\223/
3003     abc\x93
3004     0: abc\x93
3005    
3006     /(abc)\323/
3007     abc\xd3
3008     0: abc\xd3
3009    
3010     /(abc)\500/
3011     abc\x40
3012     0: abc@
3013     abc\100
3014     0: abc@
3015    
3016     /(abc)\5000/
3017     abc\x400
3018     0: abc@0
3019     abc\x40\x30
3020     0: abc@0
3021     abc\1000
3022     0: abc@0
3023     abc\100\x30
3024     0: abc@0
3025     abc\100\060
3026     0: abc@0
3027     abc\100\60
3028     0: abc@0
3029    
3030     /abc\81/
3031     abc\081
3032     0: abc\x0081
3033     abc\0\x38\x31
3034     0: abc\x0081
3035    
3036     /abc\91/
3037     abc\091
3038     0: abc\x0091
3039     abc\0\x39\x31
3040     0: abc\x0091
3041    
3042     /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
3043     abcdefghijk\12S
3044     0: abcdefghijk\x0aS
3045    
3046     /ab\gdef/
3047     abgdef
3048     0: abgdef
3049    
3050     /a{0}bc/
3051     bc
3052     0: bc
3053    
3054     /(a|(bc)){0,0}?xyz/
3055     xyz
3056     0: xyz
3057    
3058     /abc[\10]de/
3059     abc\010de
3060     0: abc\x08de
3061    
3062     /abc[\1]de/
3063     abc\1de
3064     0: abc\x01de
3065    
3066     /(abc)[\1]de/
3067     abc\1de
3068     0: abc\x01de
3069    
3070     /(?s)a.b/
3071     a\nb
3072     0: a\x0ab
3073    
3074     /^([^a])([^\b])([^c]*)([^d]{3,4})/
3075     baNOTccccd
3076     0: baNOTcccc
3077     1: baNOTccc
3078     2: baNOTcc
3079     3: baNOTc
3080     4: baNOT
3081     baNOTcccd
3082     0: baNOTccc
3083     1: baNOTcc
3084     2: baNOTc
3085     3: baNOT
3086     baNOTccd
3087     0: baNOTcc
3088     1: baNOTc
3089     2: baNOT
3090     bacccd
3091     0: baccc
3092     *** Failers
3093     0: *** Failers
3094     1: *** Failer
3095     2: *** Faile
3096     3: *** Fail
3097     4: *** Fai
3098     5: *** Fa
3099     6: *** F
3100     anything
3101     No match
3102     b\bc
3103     No match
3104     baccd
3105     No match
3106    
3107     /[^a]/
3108     Abc
3109     0: A
3110    
3111     /[^a]/i
3112     Abc
3113     0: b
3114    
3115     /[^a]+/
3116     AAAaAbc
3117     0: AAA
3118     1: AA
3119     2: A
3120    
3121     /[^a]+/i
3122     AAAaAbc
3123     0: bc
3124     1: b
3125    
3126     /[^a]+/
3127     bbb\nccc
3128     0: bbb\x0accc
3129     1: bbb\x0acc
3130     2: bbb\x0ac
3131     3: bbb\x0a
3132     4: bbb
3133     5: bb
3134     6: b
3135    
3136     /[^k]$/
3137     abc
3138     0: c
3139     *** Failers
3140     0: s
3141     abk
3142     No match
3143    
3144     /[^k]{2,3}$/
3145     abc
3146     0: abc
3147     kbc
3148     0: bc
3149     kabc
3150     0: abc
3151     *** Failers
3152     0: ers
3153     abk
3154     No match
3155     akb
3156     No match
3157     akk
3158     No match
3159    
3160     /^\d{8,}\@.+[^k]$/
3161     12345678\@a.b.c.d
3162     0: 12345678@a.b.c.d
3163     123456789\@x.y.z
3164     0: 123456789@x.y.z
3165     *** Failers
3166     No match
3167     12345678\@x.y.uk
3168     No match
3169     1234567\@a.b.c.d
3170     No match
3171    
3172     /[^a]/
3173     aaaabcd
3174     0: b
3175     aaAabcd
3176     0: A
3177    
3178     /[^a]/i
3179     aaaabcd
3180     0: b
3181     aaAabcd
3182     0: b
3183    
3184     /[^az]/
3185     aaaabcd
3186     0: b
3187     aaAabcd
3188     0: A
3189    
3190     /[^az]/i
3191     aaaabcd
3192     0: b
3193     aaAabcd
3194     0: b
3195    
3196     /\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/
3197     \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
3198     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
3199    
3200     /P[^*]TAIRE[^*]{1,6}?LL/
3201     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
3202     0: PSTAIREISLL
3203    
3204     /P[^*]TAIRE[^*]{1,}?LL/
3205     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
3206     0: PSTAIREISLL
3207    
3208     /(\.\d\d[1-9]?)\d+/
3209     1.230003938
3210     0: .230003938
3211     1: .23000393
3212     2: .2300039
3213     3: .230003
3214     4: .23000
3215     5: .2300
3216     6: .230
3217     1.875000282
3218     0: .875000282
3219     1: .87500028
3220     2: .8750002
3221     3: .875000
3222     4: .87500
3223     5: .8750
3224     6: .875
3225     1.235
3226     0: .235
3227    
3228     /(\.\d\d((?=0)|\d(?=\d)))/
3229     1.230003938
3230     0: .230
3231     1: .23
3232     1.875000282
3233     0: .875
3234     *** Failers
3235     No match
3236     1.235
3237     No match
3238    
3239     /a(?)b/
3240     ab
3241     0: ab
3242    
3243     /\b(foo)\s+(\w+)/i
3244     Food is on the foo table
3245     0: foo table
3246     1: foo tabl
3247     2: foo tab
3248     3: foo ta
3249     4: foo t
3250    
3251     /foo(.*)bar/
3252     The food is under the bar in the barn.
3253     0: food is under the bar in the bar
3254     1: food is under the bar
3255    
3256     /foo(.*?)bar/
3257     The food is under the bar in the barn.
3258     0: food is under the bar in the bar
3259     1: food is under the bar
3260    
3261     /(.*)(\d*)/
3262     I have 2 numbers: 53147
3263     Matched, but too many subsidiary matches
3264     0: I have 2 numbers: 53147
3265     1: I have 2 numbers: 5314
3266     2: I have 2 numbers: 531
3267     3: I have 2 numbers: 53
3268     4: I have 2 numbers: 5
3269     5: I have 2 numbers:
3270     6: I have 2 numbers:
3271     7: I have 2 numbers
3272     8: I have 2 number
3273     9: I have 2 numbe
3274     10: I have 2 numb
3275     11: I have 2 num
3276     12: I have 2 nu
3277     13: I have 2 n
3278     14: I have 2
3279     15: I have 2
3280     16: I have
3281     17: I have
3282     18: I hav
3283     19: I ha
3284     20: I h
3285     21: I
3286    
3287     /(.*)(\d+)/
3288     I have 2 numbers: 53147
3289     0: I have 2 numbers: 53147
3290     1: I have 2 numbers: 5314
3291     2: I have 2 numbers: 531
3292     3: I have 2 numbers: 53
3293     4: I have 2 numbers: 5
3294     5: I have 2
3295    
3296     /(.*?)(\d*)/
3297     I have 2 numbers: 53147
3298     Matched, but too many subsidiary matches
3299     0: I have 2 numbers: 53147
3300     1: I have 2 numbers: 5314
3301     2: I have 2 numbers: 531
3302     3: I have 2 numbers: 53
3303     4: I have 2 numbers: 5
3304     5: I have 2 numbers:
3305     6: I have 2 numbers:
3306     7: I have 2 numbers
3307     8: I have 2 number
3308     9: I have 2 numbe
3309     10: I have 2 numb
3310     11: I have 2 num
3311     12: I have 2 nu
3312     13: I have 2 n
3313     14: I have 2
3314     15: I have 2
3315     16: I have
3316     17: I have
3317     18: I hav
3318     19: I ha
3319     20: I h
3320     21: I
3321    
3322     /(.*?)(\d+)/
3323     I have 2 numbers: 53147
3324     0: I have 2 numbers: 53147
3325     1: I have 2 numbers: 5314
3326     2: I have 2 numbers: 531
3327     3: I have 2 numbers: 53
3328     4: I have 2 numbers: 5
3329     5: I have 2
3330    
3331     /(.*)(\d+)$/
3332     I have 2 numbers: 53147
3333     0: I have 2 numbers: 53147
3334    
3335     /(.*?)(\d+)$/
3336     I have 2 numbers: 53147
3337     0: I have 2 numbers: 53147
3338    
3339     /(.*)\b(\d+)$/
3340     I have 2 numbers: 53147
3341     0: I have 2 numbers: 53147
3342    
3343     /(.*\D)(\d+)$/
3344     I have 2 numbers: 53147
3345     0: I have 2 numbers: 53147
3346    
3347     /^\D*(?!123)/
3348     ABC123
3349     0: AB
3350     1: A
3351     2:
3352    
3353     /^(\D*)(?=\d)(?!123)/
3354     ABC445
3355     0: ABC
3356     *** Failers
3357     No match
3358     ABC123
3359     No match
3360    
3361     /^[W-]46]/
3362     W46]789
3363     0: W46]
3364     -46]789
3365     0: -46]
3366     *** Failers
3367     No match
3368     Wall
3369     No match
3370     Zebra
3371     No match
3372     42
3373     No match
3374     [abcd]
3375     No match
3376     ]abcd[
3377     No match
3378    
3379     /^[W-\]46]/
3380     W46]789
3381     0: W
3382     Wall
3383     0: W
3384     Zebra
3385     0: Z
3386     Xylophone
3387     0: X
3388     42
3389     0: 4
3390     [abcd]
3391     0: [
3392     ]abcd[
3393     0: ]
3394     \\backslash
3395     0: \
3396     *** Failers
3397     No match
3398     -46]789
3399     No match
3400     well
3401     No match
3402    
3403     /\d\d\/\d\d\/\d\d\d\d/
3404     01/01/2000
3405     0: 01/01/2000
3406    
3407     /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
3408     word cat dog elephant mussel cow horse canary baboon snake shark otherword
3409     0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
3410     word cat dog elephant mussel cow horse canary baboon snake shark
3411     No match
3412    
3413     /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
3414     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
3415     No match
3416    
3417     /^(a){0,0}/
3418     bcd
3419     0:
3420     abc
3421     0:
3422     aab
3423     0:
3424    
3425     /^(a){0,1}/
3426     bcd
3427     0:
3428     abc
3429     0: a
3430     1:
3431     aab
3432     0: a
3433     1:
3434    
3435     /^(a){0,2}/
3436     bcd
3437     0:
3438     abc
3439     0: a
3440     1:
3441     aab
3442     0: aa
3443     1: a
3444     2:
3445    
3446     /^(a){0,3}/
3447     bcd
3448     0:
3449     abc
3450     0: a
3451     1:
3452     aab
3453     0: aa
3454     1: a
3455     2:
3456     aaa
3457     0: aaa
3458     1: aa
3459     2: a
3460     3:
3461    
3462     /^(a){0,}/
3463     bcd
3464     0:
3465     abc
3466     0: a
3467     1:
3468     aab
3469     0: aa
3470     1: a
3471     2:
3472     aaa
3473     0: aaa
3474     1: aa
3475     2: a
3476     3:
3477     aaaaaaaa
3478     0: aaaaaaaa
3479     1: aaaaaaa
3480     2: aaaaaa
3481     3: aaaaa
3482     4: aaaa
3483     5: aaa
3484     6: aa
3485     7: a
3486     8:
3487    
3488     /^(a){1,1}/
3489     bcd
3490     No match
3491     abc
3492     0: a
3493     aab
3494     0: a
3495    
3496     /^(a){1,2}/
3497     bcd
3498     No match
3499     abc
3500     0: a
3501     aab
3502     0: aa
3503     1: a
3504    
3505     /^(a){1,3}/
3506     bcd
3507     No match
3508     abc
3509     0: a
3510     aab
3511     0: aa
3512     1: a
3513     aaa
3514     0: aaa
3515     1: aa
3516     2: a
3517    
3518     /^(a){1,}/
3519     bcd
3520     No match
3521     abc
3522     0: a
3523     aab
3524     0: aa
3525     1: a
3526     aaa
3527     0: aaa
3528     1: aa
3529     2: a
3530     aaaaaaaa
3531     0: aaaaaaaa
3532     1: aaaaaaa
3533     2: aaaaaa
3534     3: aaaaa
3535     4: aaaa
3536     5: aaa
3537     6: aa
3538     7: a
3539    
3540     /.*\.gif/
3541     borfle\nbib.gif\nno
3542     0: bib.gif
3543    
3544     /.{0,}\.gif/
3545     borfle\nbib.gif\nno
3546     0: bib.gif
3547    
3548     /.*\.gif/m
3549     borfle\nbib.gif\nno
3550     0: bib.gif
3551    
3552     /.*\.gif/s
3553     borfle\nbib.gif\nno
3554     0: borfle\x0abib.gif
3555    
3556     /.*\.gif/ms
3557     borfle\nbib.gif\nno
3558     0: borfle\x0abib.gif
3559    
3560     /.*$/
3561     borfle\nbib.gif\nno
3562     0: no
3563    
3564     /.*$/m
3565     borfle\nbib.gif\nno
3566     0: borfle
3567    
3568     /.*$/s
3569     borfle\nbib.gif\nno
3570     0: borfle\x0abib.gif\x0ano
3571    
3572     /.*$/ms
3573     borfle\nbib.gif\nno
3574     0: borfle\x0abib.gif\x0ano
3575     1: borfle\x0abib.gif
3576     2: borfle
3577    
3578     /.*$/
3579     borfle\nbib.gif\nno\n
3580     0: no
3581    
3582     /.*$/m
3583     borfle\nbib.gif\nno\n
3584     0: borfle
3585    
3586     /.*$/s
3587     borfle\nbib.gif\nno\n
3588     0: borfle\x0abib.gif\x0ano\x0a
3589     1: borfle\x0abib.gif\x0ano
3590    
3591     /.*$/ms
3592     borfle\nbib.gif\nno\n
3593     0: borfle\x0abib.gif\x0ano\x0a
3594     1: borfle\x0abib.gif\x0ano
3595     2: borfle\x0abib.gif
3596     3: borfle
3597    
3598     /(.*X|^B)/
3599     abcde\n1234Xyz
3600     0: 1234X
3601     BarFoo
3602     0: B
3603     *** Failers
3604     No match
3605     abcde\nBar
3606     No match
3607    
3608     /(.*X|^B)/m
3609     abcde\n1234Xyz
3610     0: 1234X
3611     BarFoo
3612     0: B
3613     abcde\nBar
3614     0: B
3615    
3616     /(.*X|^B)/s
3617     abcde\n1234Xyz
3618     0: abcde\x0a1234X
3619     BarFoo
3620     0: B
3621     *** Failers
3622     No match
3623     abcde\nBar
3624     No match
3625    
3626     /(.*X|^B)/ms
3627     abcde\n1234Xyz
3628     0: abcde\x0a1234X
3629     BarFoo
3630     0: B
3631     abcde\nBar
3632     0: B
3633    
3634     /(?s)(.*X|^B)/
3635     abcde\n1234Xyz
3636     0: abcde\x0a1234X
3637     BarFoo
3638     0: B
3639     *** Failers
3640     No match
3641     abcde\nBar
3642     No match
3643    
3644     /(?s:.*X|^B)/
3645     abcde\n1234Xyz
3646     0: abcde\x0a1234X
3647     BarFoo
3648     0: B
3649     *** Failers
3650     No match
3651     abcde\nBar
3652     No match
3653    
3654     /^.*B/
3655     **** Failers
3656     No match
3657     abc\nB
3658     No match
3659    
3660     /(?s)^.*B/
3661     abc\nB
3662     0: abc\x0aB
3663    
3664     /(?m)^.*B/
3665     abc\nB
3666     0: B
3667    
3668     /(?ms)^.*B/
3669     abc\nB
3670     0: abc\x0aB
3671    
3672     /(?ms)^B/
3673     abc\nB
3674     0: B
3675    
3676     /(?s)B$/
3677     B\n
3678     0: B
3679    
3680     /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
3681     123456654321
3682     0: 123456654321
3683    
3684     /^\d\d\d\d\d\d\d\d\d\d\d\d/
3685     123456654321
3686     0: 123456654321
3687    
3688     /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
3689     123456654321
3690     0: 123456654321
3691    
3692     /^[abc]{12}/
3693     abcabcabcabc
3694     0: abcabcabcabc
3695    
3696     /^[a-c]{12}/
3697     abcabcabcabc
3698     0: abcabcabcabc
3699    
3700     /^(a|b|c){12}/
3701     abcabcabcabc
3702     0: abcabcabcabc
3703    
3704     /^[abcdefghijklmnopqrstuvwxy0123456789]/
3705     n
3706     0: n
3707     *** Failers
3708     No match
3709     z
3710     No match
3711    
3712     /abcde{0,0}/
3713     abcd
3714     0: abcd
3715     *** Failers
3716     No match
3717     abce
3718     No match
3719    
3720     /ab[cd]{0,0}e/
3721     abe
3722     0: abe
3723     *** Failers
3724     No match
3725     abcde
3726     No match
3727    
3728     /ab(c){0,0}d/
3729     abd
3730     0: abd
3731     *** Failers
3732     No match
3733     abcd
3734     No match
3735    
3736     /a(b*)/
3737     a
3738     0: a
3739     ab
3740     0: ab
3741     1: a
3742     abbbb
3743     0: abbbb
3744     1: abbb
3745     2: abb
3746     3: ab
3747     4: a
3748     *** Failers
3749     0: a
3750     bbbbb
3751     No match
3752    
3753     /ab\d{0}e/
3754     abe
3755     0: abe
3756     *** Failers
3757     No match
3758     ab1e
3759     No match
3760    
3761     /"([^\\"]+|\\.)*"/
3762     the \"quick\" brown fox
3763     0: "quick"
3764     \"the \\\"quick\\\" brown fox\"
3765     0: "the \"quick\" brown fox"
3766    
3767     /.*?/g+
3768     abc
3769     0: abc
3770     0+
3771     1: ab
3772     2: a
3773     3:
3774     0:
3775     0+
3776    
3777     /\b/g+
3778     abc
3779     0:
3780     0+ abc
3781     0:
3782     0+
3783    
3784     /\b/+g
3785     abc
3786     0:
3787     0+ abc
3788     0:
3789     0+
3790    
3791     //g
3792     abc
3793     0:
3794     0:
3795     0:
3796     0:
3797    
3798     /<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
3799     <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>
3800     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>
3801    
3802     /a[^a]b/
3803     acb
3804     0: acb
3805     a\nb
3806     0: a\x0ab
3807    
3808     /a.b/
3809     acb
3810     0: acb
3811     *** Failers
3812     No match
3813     a\nb
3814     No match
3815    
3816     /a[^a]b/s
3817     acb
3818     0: acb
3819     a\nb
3820     0: a\x0ab
3821    
3822     /a.b/s
3823     acb
3824     0: acb
3825     a\nb
3826     0: a\x0ab
3827    
3828     /^(b+?|a){1,2}?c/
3829     bac
3830     0: bac
3831     bbac
3832     0: bbac
3833     bbbac
3834     0: bbbac
3835     bbbbac
3836     0: bbbbac
3837     bbbbbac
3838     0: bbbbbac
3839    
3840     /^(b+|a){1,2}?c/
3841     bac
3842     0: bac
3843     bbac
3844     0: bbac
3845     bbbac
3846     0: bbbac
3847     bbbbac
3848     0: bbbbac
3849     bbbbbac
3850     0: bbbbbac
3851    
3852     /(?!\A)x/m
3853     x\nb\n
3854     No match
3855     a\bx\n
3856     0: x
3857    
3858     /\x0{ab}/
3859     \0{ab}
3860     0: \x00{ab}
3861    
3862     /(A|B)*?CD/
3863     CD
3864     0: CD
3865    
3866     /(A|B)*CD/
3867     CD
3868     0: CD
3869    
3870     /(?<!bar)foo/
3871     foo
3872     0: foo
3873     catfood
3874     0: foo
3875     arfootle
3876     0: foo
3877     rfoosh
3878     0: foo
3879     *** Failers
3880     No match
3881     barfoo
3882     No match
3883     towbarfoo
3884     No match
3885    
3886     /\w{3}(?<!bar)foo/
3887     catfood
3888     0: catfoo
3889     *** Failers
3890     No match
3891     foo
3892     No match
3893     barfoo
3894     No match
3895     towbarfoo
3896     No match
3897    
3898     /(?<=(foo)a)bar/
3899     fooabar
3900     0: bar
3901     *** Failers
3902     No match
3903     bar
3904     No match
3905     foobbar
3906     No match
3907    
3908     /\Aabc\z/m
3909     abc
3910     0: abc
3911     *** Failers
3912     No match
3913     abc\n
3914     No match
3915     qqq\nabc
3916     No match
3917     abc\nzzz
3918     No match
3919     qqq\nabc\nzzz
3920     No match
3921    
3922     "(?>.*/)foo"
3923     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
3924     No match
3925    
3926     "(?>.*/)foo"
3927     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3928     0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3929    
3930     /(?>(\.\d\d[1-9]?))\d+/
3931     1.230003938
3932     0: .230003938
3933     1: .23000393
3934     2: .2300039
3935     3: .230003
3936     4: .23000
3937     5: .2300
3938     6: .230
3939     1.875000282
3940     0: .875000282
3941     1: .87500028
3942     2: .8750002
3943     3: .875000
3944     4: .87500
3945     5: .8750
3946     *** Failers
3947     No match
3948     1.235
3949     No match
3950    
3951     /^((?>\w+)|(?>\s+))*$/
3952     now is the time for all good men to come to the aid of the party
3953     0: now is the time for all good men to come to the aid of the party
3954     *** Failers
3955     No match
3956     this is not a line with only words and spaces!
3957     No match
3958    
3959     /(\d+)(\w)/
3960     12345a
3961     0: 12345a
3962     1: 12345
3963     2: 1234
3964     3: 123
3965     4: 12
3966     12345+
3967     0: 12345
3968     1: 1234
3969     2: 123
3970     3: 12
3971    
3972     /((?>\d+))(\w)/
3973     12345a
3974     0: 12345a
3975     *** Failers
3976     No match
3977     12345+
3978     No match
3979    
3980     /(?>a+)b/
3981     aaab
3982     0: aaab
3983    
3984     /((?>a+)b)/
3985     aaab
3986     0: aaab
3987    
3988     /(?>(a+))b/
3989     aaab
3990     0: aaab
3991    
3992     /(?>b)+/
3993     aaabbbccc
3994     0: bbb
3995     1: bb
3996     2: b
3997    
3998     /(?>a+|b+|c+)*c/
3999     aaabbbbccccd
4000     0: aaabbbbcccc
4001     1: aaabbbbc
4002    
4003     /(a+|b+|c+)*c/
4004     aaabbbbccccd
4005     0: aaabbbbcccc
4006     1: aaabbbbccc
4007     2: aaabbbbcc
4008     3: aaabbbbc
4009    
4010     /((?>[^()]+)|\([^()]*\))+/
4011     ((abc(ade)ufh()()x
4012     0: abc(ade)ufh()()x
4013     1: abc(ade)ufh()()
4014     2: abc(ade)ufh()
4015     3: abc(ade)ufh
4016     4: abc(ade)
4017     5: abc
4018    
4019     /\(((?>[^()]+)|\([^()]+\))+\)/
4020     (abc)
4021     0: (abc)
4022     (abc(def)xyz)
4023     0: (abc(def)xyz)
4024     *** Failers
4025     No match
4026     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4027     No match
4028    
4029     /a(?-i)b/i
4030     ab
4031     0: ab
4032     Ab
4033     0: Ab
4034     *** Failers
4035     No match
4036     aB
4037     No match
4038     AB
4039     No match
4040    
4041     /(a (?x)b c)d e/
4042     a bcd e
4043     0: a bcd e
4044     *** Failers
4045     No match
4046     a b cd e
4047     No match
4048     abcd e
4049     No match
4050     a bcde
4051     No match
4052    
4053     /(a b(?x)c d (?-x)e f)/
4054     a bcde f
4055     0: a bcde f
4056     *** Failers
4057     No match
4058     abcdef
4059     No match
4060    
4061     /(a(?i)b)c/
4062     abc
4063     0: abc
4064     aBc
4065     0: aBc
4066     *** Failers
4067     No match
4068     abC
4069     No match
4070     aBC
4071     No match
4072     Abc
4073     No match
4074     ABc
4075     No match
4076     ABC
4077     No match
4078     AbC
4079     No match
4080    
4081     /a(?i:b)c/
4082     abc
4083     0: abc
4084     aBc
4085     0: aBc
4086     *** Failers
4087     No match
4088     ABC
4089     No match
4090     abC
4091     No match
4092     aBC
4093     No match
4094    
4095     /a(?i:b)*c/
4096     aBc
4097     0: aBc
4098     aBBc
4099     0: aBBc
4100     *** Failers
4101     No match
4102     aBC
4103     No match
4104     aBBC
4105     No match
4106    
4107     /a(?=b(?i)c)\w\wd/
4108     abcd
4109     0: abcd
4110     abCd
4111     0: abCd
4112     *** Failers
4113     No match
4114     aBCd
4115     No match
4116     abcD
4117     No match
4118    
4119     /(?s-i:more.*than).*million/i
4120     more than million
4121     0: more than million
4122     more than MILLION
4123     0: more than MILLION
4124     more \n than Million
4125     0: more \x0a than Million
4126     *** Failers
4127     No match
4128     MORE THAN MILLION
4129     No match
4130     more \n than \n million
4131     No match
4132    
4133     /(?:(?s-i)more.*than).*million/i
4134     more than million
4135     0: more than million
4136     more than MILLION
4137     0: more than MILLION
4138     more \n than Million
4139     0: more \x0a than Million
4140     *** Failers
4141     No match
4142     MORE THAN MILLION
4143     No match
4144     more \n than \n million
4145     No match
4146    
4147     /(?>a(?i)b+)+c/
4148     abc
4149     0: abc
4150     aBbc
4151     0: aBbc
4152     aBBc
4153     0: aBBc
4154     *** Failers
4155     No match
4156     Abc
4157     No match
4158     abAb
4159     No match
4160     abbC
4161     No match
4162    
4163     /(?=a(?i)b)\w\wc/
4164     abc
4165     0: abc
4166     aBc
4167     0: aBc
4168     *** Failers
4169     No match
4170     Ab
4171     No match
4172     abC
4173     No match
4174     aBC
4175     No match
4176    
4177     /(?<=a(?i)b)(\w\w)c/
4178     abxxc
4179     0: xxc
4180     aBxxc
4181     0: xxc
4182     *** Failers
4183     No match
4184     Abxxc
4185     No match
4186     ABxxc
4187     No match
4188     abxxC
4189     No match
4190    
4191     /^(?(?=abc)\w{3}:|\d\d)$/
4192     abc:
4193     0: abc:
4194     12
4195     0: 12
4196     *** Failers
4197     No match
4198     123
4199     No match
4200     xyz
4201     No match
4202    
4203     /^(?(?!abc)\d\d|\w{3}:)$/
4204     abc:
4205     0: abc:
4206     12
4207     0: 12
4208     *** Failers
4209     No match
4210     123
4211     No match
4212     xyz
4213     No match
4214    
4215     /(?(?<=foo)bar|cat)/
4216     foobar
4217     0: bar
4218     cat
4219     0: cat
4220     fcat
4221     0: cat
4222     focat
4223     0: cat
4224     *** Failers
4225     No match
4226     foocat
4227     No match
4228    
4229     /(?(?<!foo)cat|bar)/
4230     foobar
4231     0: bar
4232     cat
4233     0: cat
4234     fcat
4235     0: cat
4236     focat
4237     0: cat
4238     *** Failers
4239     No match
4240     foocat
4241     No match
4242    
4243     /(?>a*)*/
4244     a
4245     0: a
4246     1:
4247     aa
4248     0: aa
4249     1:
4250     aaaa
4251     0: aaaa
4252     1:
4253    
4254     /(abc|)+/
4255     abc
4256     0: abc
4257     1:
4258     abcabc
4259     0: abcabc
4260     1: abc
4261     2:
4262     abcabcabc
4263     0: abcabcabc
4264     1: abcabc
4265     2: abc
4266     3:
4267     xyz
4268     0:
4269    
4270     /([a]*)*/
4271     a
4272     0: a
4273     1:
4274     aaaaa
4275     0: aaaaa
4276     1: aaaa
4277     2: aaa
4278     3: aa
4279     4: a
4280     5:
4281    
4282     /([ab]*)*/
4283     a
4284     0: a
4285     1:
4286     b
4287     0: b
4288     1:
4289     ababab
4290     0: ababab
4291     1: ababa
4292     2: abab
4293     3: aba
4294     4: ab
4295     5: a
4296     6:
4297     aaaabcde
4298     0: aaaab
4299     1: aaaa
4300     2: aaa
4301     3: aa
4302     4: a
4303     5:
4304     bbbb
4305     0: bbbb
4306     1: bbb
4307     2: bb
4308     3: b
4309     4:
4310    
4311     /([^a]*)*/
4312     b
4313     0: b
4314     1:
4315     bbbb
4316     0: bbbb
4317     1: bbb
4318     2: bb
4319     3: b
4320     4:
4321     aaa
4322     0:
4323    
4324     /([^ab]*)*/
4325     cccc
4326     0: cccc
4327     1: ccc
4328     2: cc
4329     3: c
4330     4:
4331     abab
4332     0:
4333    
4334     /([a]*?)*/
4335     a
4336     0: a
4337     1:
4338     aaaa
4339     0: aaaa
4340     1: aaa
4341     2: aa
4342     3: a
4343     4:
4344    
4345     /([ab]*?)*/
4346     a
4347     0: a
4348     1:
4349     b
4350     0: b
4351     1:
4352     abab
4353     0: abab
4354     1: aba
4355     2: ab
4356     3: a
4357     4:
4358     baba
4359     0: baba
4360     1: bab
4361     2: ba
4362     3: b
4363     4:
4364    
4365     /([^a]*?)*/
4366     b
4367     0: b
4368     1:
4369     bbbb
4370     0: bbbb
4371     1: bbb
4372     2: bb
4373     3: b
4374     4:
4375     aaa
4376     0:
4377    
4378     /([^ab]*?)*/
4379     c
4380     0: c
4381     1:
4382     cccc
4383     0: cccc
4384     1: ccc
4385     2: cc
4386     3: c
4387     4:
4388     baba
4389     0:
4390    
4391     /(?>a*)*/
4392     a
4393     0: a
4394     1:
4395     aaabcde
4396     0: aaa
4397     1:
4398    
4399     /((?>a*))*/
4400     aaaaa
4401     0: aaaaa
4402     1:
4403     aabbaa
4404     0: aa
4405     1:
4406    
4407     /((?>a*?))*/
4408     aaaaa
4409     0: aaaaa
4410     1:
4411     aabbaa
4412     0: aa
4413     1:
4414    
4415     /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
4416     12-sep-98
4417     0: 12-sep-98
4418     12-09-98
4419     0: 12-09-98
4420     *** Failers
4421     No match
4422     sep-12-98
4423     No match
4424    
4425     /(?i:saturday|sunday)/
4426     saturday
4427     0: saturday
4428     sunday
4429     0: sunday
4430     Saturday
4431     0: Saturday
4432     Sunday
4433     0: Sunday
4434     SATURDAY
4435     0: SATURDAY
4436     SUNDAY
4437     0: SUNDAY
4438     SunDay
4439     0: SunDay
4440    
4441     /(a(?i)bc|BB)x/
4442     abcx
4443     0: abcx
4444     aBCx
4445     0: aBCx
4446     bbx
4447     0: bbx
4448     BBx
4449     0: BBx
4450     *** Failers
4451     No match
4452     abcX
4453     No match
4454     aBCX
4455     No match
4456     bbX
4457     No match
4458     BBX
4459     No match
4460    
4461     /^([ab](?i)[cd]|[ef])/
4462     ac
4463     0: ac
4464     aC
4465     0: aC
4466     bD
4467     0: bD
4468     elephant
4469     0: e
4470     Europe
4471     0: E
4472     frog
4473     0: f
4474     France
4475     0: F
4476     *** Failers
4477     No match
4478     Africa
4479     No match
4480    
4481     /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
4482     ab
4483     0: ab
4484     aBd
4485     0: aBd
4486     xy
4487     0: xy
4488     xY