OSDN Git Service

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