Busybox: Upgrade to 1.21.1 (stable). lsof active.
[tomato.git] / release / src / router / pcre / testdata / testinput8
blobe235445e01ad40f480c64af7b48f311069444fa5
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
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 
101 /a\d\z/
102     ba0
103     *** Failers
104     ba0\n
105     ba0\ncd   
107 /a\d\z/m
108     ba0
109     *** Failers
110     ba0\n
111     ba0\ncd   
113 /a\d\Z/
114     ba0
115     ba0\n
116     *** Failers
117     ba0\ncd   
119 /a\d\Z/m
120     ba0
121     ba0\n
122     *** Failers
123     ba0\ncd   
125 /a\d$/
126     ba0
127     ba0\n
128     *** Failers
129     ba0\ncd   
131 /a\d$/m
132     ba0
133     ba0\n
134     ba0\ncd   
135     *** Failers
137 /abc/i
138     abc
139     aBc
140     ABC
141     
142 /[^a]/
143     abcd
144     
145 /ab?\w/
146     abz
147     abbz
148     azz  
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   
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         
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
232 /a+/
233     aaaa
235 /^.*xyz/
236     xyz
237     ggggggggxyz
238     
239 /^.+xyz/
240     abcdxyz
241     axyz
242     *** Failers
243     xyz
244     
245 /^.?xyz/
246     xyz
247     cxyz       
249 /^\d{2,3}X/
250     12X
251     123X
252     *** Failers
253     X
254     1X
255     1234X     
257 /^[abcd]\d/
258     a45
259     b93
260     c99z
261     d04
262     *** Failers
263     e45
264     abcd      
265     abcd1234
266     1234  
268 /^[abcd]*\d/
269     a45
270     b93
271     c99z
272     d04
273     abcd1234
274     1234  
275     *** Failers
276     e45
277     abcd      
279 /^[abcd]+\d/
280     a45
281     b93
282     c99z
283     d04
284     abcd1234
285     *** Failers
286     1234  
287     e45
288     abcd      
290 /^a+X/
291     aX
292     aaX 
294 /^[abcd]?\d/
295     a45
296     b93
297     c99z
298     d04
299     1234  
300     *** Failers
301     abcd1234
302     e45
304 /^[abcd]{2,3}\d/
305     ab45
306     bcd93
307     *** Failers
308     1234 
309     a36 
310     abcd1234
311     ee45
313 /^(abc)*\d/
314     abc45
315     abcabcabc45
316     42xyz 
317     *** Failers
319 /^(abc)+\d/
320     abc45
321     abcabcabc45
322     *** Failers
323     42xyz 
325 /^(abc)?\d/
326     abc45
327     42xyz 
328     *** Failers
329     abcabcabc45
331 /^(abc){2,3}\d/
332     abcabc45
333     abcabcabc45
334     *** Failers
335     abcabcabcabc45
336     abc45
337     42xyz 
339 /1(abc|xyz)2(?1)3/
340     1abc2abc3456
341     1abc2xyz3456 
343 /^(a*\w|ab)=(a*\w|ab)/
344     ab=ab
346 /^(a*\w|ab)=(?1)/
347     ab=ab
349 /^([^()]|\((?1)*\))*$/
350     abc
351     a(b)c
352     a(b(c))d  
353     *** Failers)
354     a(b(c)d  
356 /^>abc>([^()]|\((?1)*\))*<xyz<$/
357     >abc>123<xyz<
358     >abc>1(2)3<xyz<
359     >abc>(1(2)3)<xyz<
361 /^(?>a*)\d/
362     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
363     *** Failers 
364     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
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
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    
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    
405 /(?<=abc|xy)123/
406     abc12345
407     wxy123z
408     *** Failers
409     123abc
411 /(?<!abc|xy)123/
412     123abc
413     mno123456 
414     *** Failers
415     abc12345
416     wxy123z
418 /abc(?C1)xyz/
419     abcxyz
420     123abcxyz999 
422 /(ab|cd){3,4}/C
423   ababab
424   abcdabcd
425   abcdcdcdcdcd  
427 /^abc/
428     abcdef
429     *** Failers
430     abcdef\B  
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
456 /\Gabc/
457     abcdef
458     defabcxyz\>3 
459     *** Failers 
460     defabcxyz
462 /^abcdef/
463     ab\P
464     abcde\P
465     abcdef\P
466     *** Failers
467     abx\P    
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 
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   
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    
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?
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?
522 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
523     abcd\t\n\r\f\a\e9;\$\\?caxyz
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
564 /^(abc){1,2}zz/
565     abczz
566     abcabczz
567     *** Failers
568     zz
569     abcabcabczz
570     >>abczz
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
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
598 /^(b+|a){1,2}?bc/
599     bbc
601 /^(b*|ba){1,2}?bc/
602     babc
603     bbabc
604     bababc
605     *** Failers
606     bababbc
607     babababc
609 /^(ba|b*){1,2}?bc/
610     babc
611     bbabc
612     bababc
613     *** Failers
614     bababbc
615     babababc
617 /^\ca\cA\c[\c{\c:/
618     \x01\x01\e;z
620 /^[ab\]cde]/
621     athing
622     bthing
623     ]thing
624     cthing
625     dthing
626     ething
627     *** Failers
628     fthing
629     [thing
630     \\thing
632 /^[]cde]/
633     ]thing
634     cthing
635     dthing
636     ething
637     *** Failers
638     athing
639     fthing
641 /^[^ab\]cde]/
642     fthing
643     [thing
644     \\thing
645     *** Failers
646     athing
647     bthing
648     ]thing
649     cthing
650     dthing
651     ething
653 /^[^]cde]/
654     athing
655     fthing
656     *** Failers
657     ]thing
658     cthing
659     dthing
660     ething
662 /^\�/
663     ï¿½
665 /^ÿ/
666     Ã¿
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
684 /^.*nter/
685     enter
686     inter
687     uponter
689 /^xxx[0-9]+$/
690     xxx0
691     xxx1234
692     *** Failers
693     xxx
695 /^.+[0-9][0-9][0-9]$/
696     x123
697     xx123
698     123456
699     *** Failers
700     123
701     x1234
703 /^.+?[0-9][0-9][0-9]$/
704     x123
705     xx123
706     123456
707     *** Failers
708     123
709     x1234
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
720     Well, we need a colon: somewhere
721     *** Fail if we don't
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
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
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(
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.
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
773 /^(?=ab(de))(abd)(e)/
774     abde
776 /^(?!(ab)de|x)(abd)(f)/
777     abdf
779 /^(?=(ab(cd)))(ab)/
780     abcd
782 /^[\da-f](\.[\da-f])*$/i
783     a.b.c.d
784     A.B.C.D
785     a.b.c.1.2.3.C
787 /^\".*\"\s*(;.*)?$/
788     \"1234\"
789     \"abcd\" ;
790     \"\" ; rhubarb
791     *** Failers
792     \"1234\" : things
794 /^$/
795     \
796     *** Failers
798 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
799     ab c
800     *** Failers
801     abc
802     ab cde
804 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
805     ab c
806     *** Failers
807     abc
808     ab cde
810 /^   a\ b[c ]d       $/x
811     a bcd
812     a b d
813     *** Failers
814     abcd
815     ab d
817 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
818     abcdefhijklm
820 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
821     abcdefhijklm
823 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
824     a+ Z0+\x08\n\x1d\x12
826 /^[.^$|()*+?{,}]+/
827     .^\$(*+)|{?,?}
829 /^a*\w/
830     z
831     az
832     aaaz
833     a
834     aa
835     aaaa
836     a+
837     aa+
839 /^a*?\w/
840     z
841     az
842     aaaz
843     a
844     aa
845     aaaa
846     a+
847     aa+
849 /^a+\w/
850     az
851     aaaz
852     aa
853     aaaa
854     aa+
856 /^a+?\w/
857     az
858     aaaz
859     aa
860     aaaa
861     aa+
863 /^\d{8}\w{2,}/
864     1234567890
865     12345678ab
866     12345678__
867     *** Failers
868     1234567
870 /^[aeiou\d]{4,5}$/
871     uoie
872     1234
873     12345
874     aaaaa
875     *** Failers
876     123456
878 /^[aeiou\d]{4,5}?/
879     uoie
880     1234
881     12345
882     aaaaa
883     123456
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
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
894 /^12.34/s
895     12\n34
896     12\r34
898 /\w+(?=\t)/
899     the quick brown\t fox
901 /foo(?!bar)(.*)/
902     foobar is foolish see?
904 /(?:(?!foo)...|^.{0,2})bar(.*)/
905     foobar crowbar etc
906     barrel
907     2barrel
908     A barrel
910 /^(\D*)(?=\d)(?!123)/
911     abc456
912     *** Failers
913     abc123
915 /^1234(?# test newlines
916   inside)/
917     1234
919 /^1234 #comment in extended re
920   /x
921     1234
923 /#rhubarb
924   abcd/x
925     abcd
927 /^abcd#rhubarb/x
928     abcd
930 /(?!^)abc/
931     the abc
932     *** Failers
933     abc
935 /(?=^)abc/
936     abc
937     *** Failers
938     the abc
940 /^[ab]{1,3}(ab*|b)/
941     aabbbbb
943 /^[ab]{1,3}?(ab*|b)/
944     aabbbbb
946 /^[ab]{1,3}?(ab*?|b)/
947     aabbbbb
949 /^[ab]{1,3}(ab*?|b)/
950     aabbbbb
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
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
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
1004 # address
1005 |                     #  or
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
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....
1017 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
1019 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1020 \)       |  # comments, or...
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
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
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
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
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
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
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
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
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
1156 /[\040\t]*                    # Nab whitespace.
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
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
1184 [\040\t]*                    # Nab whitespace.
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.
1201 [\040\t]*                    # Nab whitespace.
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.
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
1227 [\040\t]*                    # Nab whitespace.
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
1245 [\040\t]*                    # Nab whitespace.
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.
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
1264 \[                            # [
1265 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1266 \]                           #           ]
1268 [\040\t]*                    # Nab whitespace.
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
1286 [\040\t]*                    # Nab whitespace.
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.
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
1305 \[                            # [
1306 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1307 \]                           #           ]
1309 [\040\t]*                    # Nab whitespace.
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
1326 # address
1327 |                             #  or
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
1339 # leading word
1340 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
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 \)                             #                )
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"
1364 [\040\t]*                    # Nab whitespace.
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 # <
1382 [\040\t]*                    # Nab whitespace.
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.
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
1401 \[                            # [
1402 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1403 \]                           #           ]
1405 [\040\t]*                    # Nab whitespace.
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
1423 [\040\t]*                    # Nab whitespace.
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.
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
1442 \[                            # [
1443 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1444 \]                           #           ]
1446 [\040\t]*                    # Nab whitespace.
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
1463 (?: ,
1464 [\040\t]*                    # Nab whitespace.
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.
1480 [\040\t]*                    # Nab whitespace.
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.
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
1499 \[                            # [
1500 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1501 \]                           #           ]
1503 [\040\t]*                    # Nab whitespace.
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
1521 [\040\t]*                    # Nab whitespace.
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.
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
1540 \[                            # [
1541 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1542 \]                           #           ]
1544 [\040\t]*                    # Nab whitespace.
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
1561 )*  # additional domains
1563 [\040\t]*                    # Nab whitespace.
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
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
1591 [\040\t]*                    # Nab whitespace.
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.
1608 [\040\t]*                    # Nab whitespace.
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.
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
1634 [\040\t]*                    # Nab whitespace.
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
1652 [\040\t]*                    # Nab whitespace.
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.
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
1671 \[                            # [
1672 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1673 \]                           #           ]
1675 [\040\t]*                    # Nab whitespace.
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
1693 [\040\t]*                    # Nab whitespace.
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.
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
1712 \[                            # [
1713 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1714 \]                           #           ]
1716 [\040\t]*                    # Nab whitespace.
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
1733 #       address spec
1734 >                    #                 >
1735 # name and address
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
1748 /abc\0def\00pqr\000xyz\0000AB/
1749     abc\0def\00pqr\000xyz\0000AB
1750     abc456 abc\0def\00pqr\000xyz\0000ABCDE
1752 /abc\x0def\x00pqr\x000xyz\x0000AB/
1753     abc\x0def\x00pqr\x000xyz\x0000AB
1754     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1756 /^[\000-\037]/
1757     \0A
1758     \01B
1759     \037C
1761 /\0*/
1762     \0\0\0\0
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
1771 /^\s/
1772     \040abc
1773     \x0cabc
1774     \nabc
1775     \rabc
1776     \tabc
1777     *** Failers
1778     abc
1780 /^a     b
1781     \f  c/x
1782     abc
1784 /ab{1,3}bc/
1785     abbbbc
1786     abbbc
1787     abbc
1788     *** Failers
1789     abc
1790     abbbbbc
1792 /([^.]*)\.([^:]*):[T ]+(.*)/
1793     track1.title:TBlah blah blah
1795 /([^.]*)\.([^:]*):[T ]+(.*)/i
1796     track1.title:TBlah blah blah
1798 /([^.]*)\.([^:]*):[t ]+(.*)/i
1799     track1.title:TBlah blah blah
1801 /^[W-c]+$/
1802     WXY_^abc
1803     *** Failers
1804     wxy
1806 /^[W-c]+$/i
1807     WXY_^abc
1808     wxy_^ABC
1810 /^[\x3f-\x5F]+$/i
1811     WXY_^abc
1812     wxy_^ABC
1814 /^abc$/m
1815     abc
1816     qqq\nabc
1817     abc\nzzz
1818     qqq\nabc\nzzz
1820 /^abc$/
1821     abc
1822     *** Failers
1823     qqq\nabc
1824     abc\nzzz
1825     qqq\nabc\nzzz
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
1838 /\A(.)*\Z/m
1839     *** Failers
1840     abc\ndef
1842 /(?:b)|(?::+)/
1843     b::c
1844     c::b
1846 /[-az]+/
1847     az-
1848     *** Failers
1849     b
1851 /[az-]+/
1852     za-
1853     *** Failers
1854     b
1856 /[a\-z]+/
1857     a-z
1858     *** Failers
1859     b
1861 /[a-z]+/
1862     abcdxyz
1864 /[\d-]+/
1865     12-34
1866     *** Failers
1867     aaa
1869 /[\d-z]+/
1870     12-34z
1871     *** Failers
1872     aaa
1874 /\x5c/
1875     \\
1877 /\x20Z/
1878     the Zoo
1879     *** Failers
1880     Zulu
1882 /ab{3cd/
1883     ab{3cd
1885 /ab{3,cd/
1886     ab{3,cd
1888 /ab{3,4a}cd/
1889     ab{3,4a}cd
1891 /{4,5a}bc/
1892     {4,5a}bc
1894 /^a.b/<lf>
1895     a\rb
1896     *** Failers
1897     a\nb
1899 /abc$/
1900     abc
1901     abc\n
1902     *** Failers
1903     abc\ndef
1905 /(abc)\123/
1906     abc\x53
1908 /(abc)\223/
1909     abc\x93
1911 /(abc)\323/
1912     abc\xd3
1914 /(abc)\100/
1915     abc\x40
1916     abc\100
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
1926 /abc\81/
1927     abc\081
1928     abc\0\x38\x31
1930 /abc\91/
1931     abc\091
1932     abc\0\x39\x31
1934 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1935     abcdefghijk\12S
1937 /ab\idef/
1938     abidef
1940 /a{0}bc/
1941     bc
1943 /(a|(bc)){0,0}?xyz/
1944     xyz
1946 /abc[\10]de/
1947     abc\010de
1949 /abc[\1]de/
1950     abc\1de
1952 /(abc)[\1]de/
1953     abc\1de
1955 /(?s)a.b/
1956     a\nb
1958 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1959     baNOTccccd
1960     baNOTcccd
1961     baNOTccd
1962     bacccd
1963     *** Failers
1964     anything
1965     b\bc   
1966     baccd
1968 /[^a]/
1969     Abc
1970   
1971 /[^a]/i
1972     Abc 
1974 /[^a]+/
1975     AAAaAbc
1976   
1977 /[^a]+/i
1978     AAAaAbc 
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 
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       
2004 /[^a]/
2005     aaaabcd
2006     aaAabcd 
2008 /[^a]/i
2009     aaaabcd
2010     aaAabcd 
2012 /[^az]/
2013     aaaabcd
2014     aaAabcd 
2016 /[^az]/i
2017     aaaabcd
2018     aaAabcd 
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
2023 /P[^*]TAIRE[^*]{1,6}?LL/
2024     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2026 /P[^*]TAIRE[^*]{1,}?LL/
2027     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
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 
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.
2052 /(.*)(\d*)/
2053     I have 2 numbers: 53147
2054     
2055 /(.*)(\d+)/
2056     I have 2 numbers: 53147
2058 /(.*?)(\d*)/
2059     I have 2 numbers: 53147
2061 /(.*?)(\d+)/
2062     I have 2 numbers: 53147
2064 /(.*)(\d+)$/
2065     I have 2 numbers: 53147
2067 /(.*?)(\d+)$/
2068     I have 2 numbers: 53147
2070 /(.*)\b(\d+)$/
2071     I have 2 numbers: 53147
2073 /(.*\D)(\d+)$/
2074     I have 2 numbers: 53147
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
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
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
2117 /^(a){0,0}/
2118     bcd
2119     abc
2120     aab     
2122 /^(a){0,1}/
2123     bcd
2124     abc
2125     aab  
2127 /^(a){0,2}/
2128     bcd
2129     abc
2130     aab  
2132 /^(a){0,3}/
2133     bcd
2134     abc
2135     aab
2136     aaa   
2138 /^(a){0,}/
2139     bcd
2140     abc
2141     aab
2142     aaa
2143     aaaaaaaa    
2145 /^(a){1,1}/
2146     bcd
2147     abc
2148     aab  
2150 /^(a){1,2}/
2151     bcd
2152     abc
2153     aab  
2155 /^(a){1,3}/
2156     bcd
2157     abc
2158     aab
2159     aaa   
2161 /^(a){1,}/
2162     bcd
2163     abc
2164     aab
2165     aaa
2166     aaaaaaaa    
2168 /.*\.gif/
2169     borfle\nbib.gif\nno
2171 /.{0,}\.gif/
2172     borfle\nbib.gif\nno
2174 /.*\.gif/m
2175     borfle\nbib.gif\nno
2177 /.*\.gif/s
2178     borfle\nbib.gif\nno
2180 /.*\.gif/ms
2181     borfle\nbib.gif\nno
2182     
2183 /.*$/
2184     borfle\nbib.gif\nno
2186 /.*$/m
2187     borfle\nbib.gif\nno
2189 /.*$/s
2190     borfle\nbib.gif\nno
2192 /.*$/ms
2193     borfle\nbib.gif\nno
2194     
2195 /.*$/
2196     borfle\nbib.gif\nno\n
2198 /.*$/m
2199     borfle\nbib.gif\nno\n
2201 /.*$/s
2202     borfle\nbib.gif\nno\n
2204 /.*$/ms
2205     borfle\nbib.gif\nno\n
2206     
2207 /(.*X|^B)/
2208     abcde\n1234Xyz
2209     BarFoo 
2210     *** Failers
2211     abcde\nBar  
2213 /(.*X|^B)/m
2214     abcde\n1234Xyz
2215     BarFoo 
2216     abcde\nBar  
2218 /(.*X|^B)/s
2219     abcde\n1234Xyz
2220     BarFoo 
2221     *** Failers
2222     abcde\nBar  
2224 /(.*X|^B)/ms
2225     abcde\n1234Xyz
2226     BarFoo 
2227     abcde\nBar  
2229 /(?s)(.*X|^B)/
2230     abcde\n1234Xyz
2231     BarFoo 
2232     *** Failers 
2233     abcde\nBar  
2235 /(?s:.*X|^B)/
2236     abcde\n1234Xyz
2237     BarFoo 
2238     *** Failers 
2239     abcde\nBar  
2241 /^.*B/
2242     **** Failers
2243     abc\nB
2244      
2245 /(?s)^.*B/
2246     abc\nB
2248 /(?m)^.*B/
2249     abc\nB
2250      
2251 /(?ms)^.*B/
2252     abc\nB
2254 /(?ms)^B/
2255     abc\nB
2257 /(?s)B$/
2258     B\n
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 
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 
2278 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2279     n
2280     *** Failers 
2281     z 
2283 /abcde{0,0}/
2284     abcd
2285     *** Failers
2286     abce  
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   
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\" 
2314 /.*?/g+
2315     abc
2316   
2317 /\b/g+
2318     abc 
2320 /\b/+g
2321     abc 
2324     abc
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>
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  
2346 /^(b+?|a){1,2}?c/
2347     bac
2348     bbac
2349     bbbac
2350     bbbbac
2351     bbbbbac 
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} 
2367 /(A|B)*?CD/
2368     CD 
2369     
2370 /(A|B)*CD/
2371     CD 
2373 /(?<!bar)foo/
2374     foo
2375     catfood
2376     arfootle
2377     rfoosh
2378     *** Failers
2379     barfoo
2380     towbarfoo
2382 /\w{3}(?<!bar)foo/
2383     catfood
2384     *** Failers
2385     foo
2386     barfoo
2387     towbarfoo
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
2403 "(?>.*/)foo"
2404     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2406 "(?>.*/)foo"
2407     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2409 /(?>(\.\d\d[1-9]?))\d+/
2410     1.230003938
2411     1.875000282
2412     *** Failers 
2413     1.235 
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+ 
2424 /((?>\d+))(\w)/
2425     12345a
2426     *** Failers
2427     12345+ 
2429 /(?>a+)b/
2430     aaab
2432 /((?>a+)b)/
2433     aaab
2435 /(?>(a+))b/
2436     aaab
2438 /(?>b)+/
2439     aaabbbccc
2441 /(?>a+|b+|c+)*c/
2442     aaabbbbccccd
2443     
2444 /(a+|b+|c+)*c/
2445     aaabbbbccccd
2447 /((?>[^()]+)|\([^()]*\))+/
2448     ((abc(ade)ufh()()x
2449     
2450 /\(((?>[^()]+)|\([^()]+\))+\)/ 
2451     (abc)
2452     (abc(def)xyz)
2453     *** Failers
2454     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
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 
2470 /(a b(?x)c d (?-x)e f)/
2471     a bcde f
2472     *** Failers
2473     abcdef  
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 
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      
2549 /^(?(?=abc)\w{3}:|\d\d)$/
2550     abc:
2551     12
2552     *** Failers
2553     123
2554     xyz    
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  
2571 /(?(?<!foo)cat|bar)/
2572     foobar
2573     cat
2574     fcat
2575     focat   
2576     *** Failers
2577     foocat  
2579 /(?>a*)*/
2580     a
2581     aa
2582     aaaa
2583     
2584 /(abc|)+/
2585     abc
2586     abcabc
2587     abcabcabc
2588     xyz      
2590 /([a]*)*/
2591     a
2592     aaaaa 
2594 /([ab]*)*/
2595     a
2596     b
2597     ababab
2598     aaaabcde
2599     bbbb    
2601 /([^a]*)*/
2602     b
2603     bbbb
2604     aaa   
2606 /([^ab]*)*/
2607     cccc
2608     abab  
2610 /([a]*?)*/
2611     a
2612     aaaa 
2614 /([ab]*?)*/
2615     a
2616     b
2617     abab
2618     baba   
2620 /([^a]*?)*/
2621     b
2622     bbbb
2623     aaa   
2625 /([^ab]*?)*/
2626     c
2627     cccc
2628     baba   
2630 /(?>a*)*/
2631     a
2632     aaabcde 
2634 /((?>a*))*/
2635     aaaaa
2636     aabbaa 
2638 /((?>a*?))*/
2639     aaaaa
2640     aabbaa 
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               
2668 /^([ab](?i)[cd]|[ef])/
2669     ac
2670     aC
2671     bD
2672     elephant
2673     Europe 
2674     frog
2675     France
2676     *** Failers
2677     Africa     
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  
2690 /(?<=foo\n)^bar/m
2691     foo\nbar
2692     *** Failers
2693     bar
2694     baz\nbar   
2696 /(?<=(?<!foo)bar)baz/
2697     barbaz
2698     barbarbaz 
2699     koobarbaz 
2700     *** Failers
2701     baz
2702     foobarbaz 
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./
2707 /abc/
2708     abc
2709     xabcy
2710     ababc
2711     *** Failers
2712     xbc
2713     axc
2714     abx
2716 /ab*c/
2717     abc
2719 /ab*bc/
2720     abc
2721     abbc
2722     abbbbc
2724 /.{1}/
2725     abbbbc
2727 /.{3,4}/
2728     abbbbc
2730 /ab{0,}bc/
2731     abbbbc
2733 /ab+bc/
2734     abbc
2735     *** Failers
2736     abc
2737     abq
2739 /ab+bc/
2740     abbbbc
2742 /ab{1,}bc/
2743     abbbbc
2745 /ab{1,3}bc/
2746     abbbbc
2748 /ab{3,4}bc/
2749     abbbbc
2751 /ab{4,5}bc/
2752     *** Failers
2753     abq
2754     abbbbc
2756 /ab?bc/
2757     abbc
2758     abc
2760 /ab{0,1}bc/
2761     abc
2763 /ab?bc/
2765 /ab?c/
2766     abc
2768 /ab{0,1}c/
2769     abc
2771 /^abc$/
2772     abc
2773     *** Failers
2774     abbbbc
2775     abcc
2777 /^abc/
2778     abcc
2780 /^abc$/
2782 /abc$/
2783     aabc
2784     *** Failers
2785     aabc
2786     aabcd
2789     abc
2792     abc
2794 /a.c/
2795     abc
2796     axc
2798 /a.*c/
2799     axyzc
2801 /a[bc]d/
2802     abd
2803     *** Failers
2804     axyzd
2805     abc
2807 /a[b-d]e/
2808     ace
2810 /a[b-d]/
2811     aac
2813 /a[-b]/
2814     a-
2816 /a[b-]/
2817     a-
2819 /a]/
2820     a]
2822 /a[]]b/
2823     a]b
2825 /a[^bc]d/
2826     aed
2827     *** Failers
2828     abd
2829     abd
2831 /a[^-b]c/
2832     adc
2834 /a[^]b]c/
2835     adc
2836     *** Failers
2837     a-c
2838     a]c
2840 /\ba\b/
2841     a-
2842     -a
2843     -a-
2845 /\by\b/
2846     *** Failers
2847     xy
2848     yz
2849     xyz
2851 /\Ba\B/
2852     *** Failers
2853     a-
2854     -a
2855     -a-
2857 /\By\b/
2858     xy
2860 /\by\B/
2861     yz
2863 /\By\B/
2864     xyz
2866 /\w/
2867     a
2869 /\W/
2870     -
2871     *** Failers
2872     -
2873     a
2875 /a\sb/
2876     a b
2878 /a\Sb/
2879     a-b
2880     *** Failers
2881     a-b
2882     a b
2884 /\d/
2885     1
2887 /\D/
2888     -
2889     *** Failers
2890     -
2891     1
2893 /[\w]/
2894     a
2896 /[\W]/
2897     -
2898     *** Failers
2899     -
2900     a
2902 /a[\s]b/
2903     a b
2905 /a[\S]b/
2906     a-b
2907     *** Failers
2908     a-b
2909     a b
2911 /[\d]/
2912     1
2914 /[\D]/
2915     -
2916     *** Failers
2917     -
2918     1
2920 /ab|cd/
2921     abc
2922     abcd
2924 /()ef/
2925     def
2927 /$b/
2929 /a\(b/
2930     a(b
2932 /a\(*b/
2933     ab
2934     a((b
2936 /a\\b/
2937     a\b
2939 /((a))/
2940     abc
2942 /(a)b(c)/
2943     abc
2945 /a+b+c/
2946     aabbabc
2948 /a{1,}b{1,}c/
2949     aabbabc
2951 /a.+?c/
2952     abcabc
2954 /(a+|b)*/
2955     ab
2957 /(a+|b){0,}/
2958     ab
2960 /(a+|b)+/
2961     ab
2963 /(a+|b){1,}/
2964     ab
2966 /(a+|b)?/
2967     ab
2969 /(a+|b){0,1}/
2970     ab
2972 /[^ab]*/
2973     cde
2975 /abc/
2976     *** Failers
2977     b
2978     
2980 /a*/
2981     
2983 /([abc])*d/
2984     abbbcd
2986 /([abc])*bcd/
2987     abcd
2989 /a|b|c|d|e/
2990     e
2992 /(a|b|c|d|e)f/
2993     ef
2995 /abcd*efg/
2996     abcdefg
2998 /ab*/
2999     xabyabbbz
3000     xayabbbz
3002 /(ab|cd)e/
3003     abcde
3005 /[abhgefdc]ij/
3006     hij
3008 /^(ab|cd)e/
3010 /(abc|)ef/
3011     abcdef
3013 /(a|b)c*d/
3014     abcd
3016 /(ab|ab*)bc/
3017     abc
3019 /a([bc]*)c*/
3020     abc
3022 /a([bc]*)(c*d)/
3023     abcd
3025 /a([bc]+)(c*d)/
3026     abcd
3028 /a([bc]*)(c+d)/
3029     abcd
3031 /a[bcd]*dcdcde/
3032     adcdcde
3034 /a[bcd]+dcdcde/
3035     *** Failers
3036     abcde
3037     adcdcde
3039 /(ab|a)b*c/
3040     abc
3042 /((a)(b)c)(d)/
3043     abcd
3045 /[a-zA-Z_][a-zA-Z0-9_]*/
3046     alpha
3048 /^a(bc+|b[eh])g|.h$/
3049     abh
3051 /(bc+d$|ef*g.|h?i(j|k))/
3052     effgz
3053     ij
3054     reffgz
3055     *** Failers
3056     effg
3057     bcdd
3059 /((((((((((a))))))))))/
3060     a
3062 /(((((((((a)))))))))/
3063     a
3065 /multiple words of text/
3066     *** Failers
3067     aa
3068     uh-uh
3070 /multiple words/
3071     multiple words, yeah
3073 /(.*)c(.*)/
3074     abcde
3076 /\((.*), (.*)\)/
3077     (a, b)
3079 /[k]/
3081 /abcd/
3082     abcd
3084 /a(bc)d/
3085     abcd
3087 /a[-]?c/
3088     ac
3090 /abc/i
3091     ABC
3092     XABCY
3093     ABABC
3094     *** Failers
3095     aaxabxbaxbbx
3096     XBC
3097     AXC
3098     ABX
3100 /ab*c/i
3101     ABC
3103 /ab*bc/i
3104     ABC
3105     ABBC
3107 /ab*?bc/i
3108     ABBBBC
3110 /ab{0,}?bc/i
3111     ABBBBC
3113 /ab+?bc/i
3114     ABBC
3116 /ab+bc/i
3117     *** Failers
3118     ABC
3119     ABQ
3121 /ab{1,}bc/i
3123 /ab+bc/i
3124     ABBBBC
3126 /ab{1,}?bc/i
3127     ABBBBC
3129 /ab{1,3}?bc/i
3130     ABBBBC
3132 /ab{3,4}?bc/i
3133     ABBBBC
3135 /ab{4,5}?bc/i
3136     *** Failers
3137     ABQ
3138     ABBBBC
3140 /ab??bc/i
3141     ABBC
3142     ABC
3144 /ab{0,1}?bc/i
3145     ABC
3147 /ab??bc/i
3149 /ab??c/i
3150     ABC
3152 /ab{0,1}?c/i
3153     ABC
3155 /^abc$/i
3156     ABC
3157     *** Failers
3158     ABBBBC
3159     ABCC
3161 /^abc/i
3162     ABCC
3164 /^abc$/i
3166 /abc$/i
3167     AABC
3169 /^/i
3170     ABC
3172 /$/i
3173     ABC
3175 /a.c/i
3176     ABC
3177     AXC
3179 /a.*?c/i
3180     AXYZC
3182 /a.*c/i
3183     *** Failers
3184     AABC
3185     AXYZD
3187 /a[bc]d/i
3188     ABD
3190 /a[b-d]e/i
3191     ACE
3192     *** Failers
3193     ABC
3194     ABD
3196 /a[b-d]/i
3197     AAC
3199 /a[-b]/i
3200     A-
3202 /a[b-]/i
3203     A-
3205 /a]/i
3206     A]
3208 /a[]]b/i
3209     A]B
3211 /a[^bc]d/i
3212     AED
3214 /a[^-b]c/i
3215     ADC
3216     *** Failers
3217     ABD
3218     A-C
3220 /a[^]b]c/i
3221     ADC
3223 /ab|cd/i
3224     ABC
3225     ABCD
3227 /()ef/i
3228     DEF
3230 /$b/i
3231     *** Failers
3232     A]C
3233     B
3235 /a\(b/i
3236     A(B
3238 /a\(*b/i
3239     AB
3240     A((B
3242 /a\\b/i
3243     A\B
3245 /((a))/i
3246     ABC
3248 /(a)b(c)/i
3249     ABC
3251 /a+b+c/i
3252     AABBABC
3254 /a{1,}b{1,}c/i
3255     AABBABC
3257 /a.+?c/i
3258     ABCABC
3260 /a.*?c/i
3261     ABCABC
3263 /a.{0,5}?c/i
3264     ABCABC
3266 /(a+|b)*/i
3267     AB
3269 /(a+|b){0,}/i
3270     AB
3272 /(a+|b)+/i
3273     AB
3275 /(a+|b){1,}/i
3276     AB
3278 /(a+|b)?/i
3279     AB
3281 /(a+|b){0,1}/i
3282     AB
3284 /(a+|b){0,1}?/i
3285     AB
3287 /[^ab]*/i
3288     CDE
3290 /abc/i
3292 /a*/i
3293     
3295 /([abc])*d/i
3296     ABBBCD
3298 /([abc])*bcd/i
3299     ABCD
3301 /a|b|c|d|e/i
3302     E
3304 /(a|b|c|d|e)f/i
3305     EF
3307 /abcd*efg/i
3308     ABCDEFG
3310 /ab*/i
3311     XABYABBBZ
3312     XAYABBBZ
3314 /(ab|cd)e/i
3315     ABCDE
3317 /[abhgefdc]ij/i
3318     HIJ
3320 /^(ab|cd)e/i
3321     ABCDE
3323 /(abc|)ef/i
3324     ABCDEF
3326 /(a|b)c*d/i
3327     ABCD
3329 /(ab|ab*)bc/i
3330     ABC
3332 /a([bc]*)c*/i
3333     ABC
3335 /a([bc]*)(c*d)/i
3336     ABCD
3338 /a([bc]+)(c*d)/i
3339     ABCD
3341 /a([bc]*)(c+d)/i
3342     ABCD
3344 /a[bcd]*dcdcde/i
3345     ADCDCDE
3347 /a[bcd]+dcdcde/i
3349 /(ab|a)b*c/i
3350     ABC
3352 /((a)(b)c)(d)/i
3353     ABCD
3355 /[a-zA-Z_][a-zA-Z0-9_]*/i
3356     ALPHA
3358 /^a(bc+|b[eh])g|.h$/i
3359     ABH
3361 /(bc+d$|ef*g.|h?i(j|k))/i
3362     EFFGZ
3363     IJ
3364     REFFGZ
3365     *** Failers
3366     ADCDCDE
3367     EFFG
3368     BCDD
3370 /((((((((((a))))))))))/i
3371     A
3373 /(((((((((a)))))))))/i
3374     A
3376 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3377     A
3379 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3380     C
3382 /multiple words of text/i
3383     *** Failers
3384     AA
3385     UH-UH
3387 /multiple words/i
3388     MULTIPLE WORDS, YEAH
3390 /(.*)c(.*)/i
3391     ABCDE
3393 /\((.*), (.*)\)/i
3394     (A, B)
3396 /[k]/i
3398 /abcd/i
3399     ABCD
3401 /a(bc)d/i
3402     ABCD
3404 /a[-]?c/i
3405     AC
3407 /a(?!b)./
3408     abad
3410 /a(?=d)./
3411     abad
3413 /a(?=c|d)./
3414     abad
3416 /a(?:b|c|d)(.)/
3417     ace
3419 /a(?:b|c|d)*(.)/
3420     ace
3422 /a(?:b|c|d)+?(.)/
3423     ace
3424     acdbcdbe
3426 /a(?:b|c|d)+(.)/
3427     acdbcdbe
3429 /a(?:b|c|d){2}(.)/
3430     acdbcdbe
3432 /a(?:b|c|d){4,5}(.)/
3433     acdbcdbe
3435 /a(?:b|c|d){4,5}?(.)/
3436     acdbcdbe
3438 /((foo)|(bar))*/
3439     foobar
3441 /a(?:b|c|d){6,7}(.)/
3442     acdbcdbe
3444 /a(?:b|c|d){6,7}?(.)/
3445     acdbcdbe
3447 /a(?:b|c|d){5,6}(.)/
3448     acdbcdbe
3450 /a(?:b|c|d){5,6}?(.)/
3451     acdbcdbe
3453 /a(?:b|c|d){5,7}(.)/
3454     acdbcdbe
3456 /a(?:b|c|d){5,7}?(.)/
3457     acdbcdbe
3459 /a(?:b|(c|e){1,2}?|d)+?(.)/
3460     ace
3462 /^(.+)?B/
3463     AB
3465 /^([^a-z])|(\^)$/
3466     .
3468 /^[<>]&/
3469     <&OUT
3471 /(?:(f)(o)(o)|(b)(a)(r))*/
3472     foobar
3474 /(?<=a)b/
3475     ab
3476     *** Failers
3477     cb
3478     b
3480 /(?<!c)b/
3481     ab
3482     b
3483     b
3485 /(?:..)*a/
3486     aba
3488 /(?:..)*?a/
3489     aba
3491 /^(){3,5}/
3492     abc
3494 /^(a+)*ax/
3495     aax
3497 /^((a|b)+)*ax/
3498     aax
3500 /^((a|bc)+)*ax/
3501     aax
3503 /(a|x)*ab/
3504     cab
3506 /(a)*ab/
3507     cab
3509 /(?:(?i)a)b/
3510     ab
3512 /((?i)a)b/
3513     ab
3515 /(?:(?i)a)b/
3516     Ab
3518 /((?i)a)b/
3519     Ab
3521 /(?:(?i)a)b/
3522     *** Failers
3523     cb
3524     aB
3526 /((?i)a)b/
3528 /(?i:a)b/
3529     ab
3531 /((?i:a))b/
3532     ab
3534 /(?i:a)b/
3535     Ab
3537 /((?i:a))b/
3538     Ab
3540 /(?i:a)b/
3541     *** Failers
3542     aB
3543     aB
3545 /((?i:a))b/
3547 /(?:(?-i)a)b/i
3548     ab
3550 /((?-i)a)b/i
3551     ab
3553 /(?:(?-i)a)b/i
3554     aB
3556 /((?-i)a)b/i
3557     aB
3559 /(?:(?-i)a)b/i
3560     *** Failers
3561     aB
3562     Ab
3564 /((?-i)a)b/i
3566 /(?:(?-i)a)b/i
3567     aB
3569 /((?-i)a)b/i
3570     aB
3572 /(?:(?-i)a)b/i
3573     *** Failers
3574     Ab
3575     AB
3577 /((?-i)a)b/i
3579 /(?-i:a)b/i
3580     ab
3582 /((?-i:a))b/i
3583     ab
3585 /(?-i:a)b/i
3586     aB
3588 /((?-i:a))b/i
3589     aB
3591 /(?-i:a)b/i
3592     *** Failers
3593     AB
3594     Ab
3596 /((?-i:a))b/i
3598 /(?-i:a)b/i
3599     aB
3601 /((?-i:a))b/i
3602     aB
3604 /(?-i:a)b/i
3605     *** Failers
3606     Ab
3607     AB
3609 /((?-i:a))b/i
3611 /((?-i:a.))b/i
3612     *** Failers
3613     AB
3614     a\nB
3616 /((?s-i:a.))b/i
3617     a\nB
3619 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3620     cabbbb
3622 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3623     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3625 /foo\w*\d{4}baz/
3626     foobar1234baz
3628 /x(~~)*(?:(?:F)?)?/
3629     x~~
3631 /^a(?#xxx){3}c/
3632     aaac
3634 /^a (?#xxx) (?#yyy) {3}c/x
3635     aaac
3637 /(?<![cd])b/
3638     *** Failers
3639     B\nB
3640     dbcb
3642 /(?<![cd])[ab]/
3643     dbaacb
3645 /(?<!(c|d))b/
3647 /(?<!(c|d))[ab]/
3648     dbaacb
3650 /(?<!cd)[ab]/
3651     cdaccb
3653 /^(?:a?b?)*$/
3654     *** Failers
3655     dbcb
3656     a--
3658 /((?s)^a(.))((?m)^b$)/
3659     a\nb\nc\n
3661 /((?m)^b$)/
3662     a\nb\nc\n
3664 /(?m)^b/
3665     a\nb\n
3667 /(?m)^(b)/
3668     a\nb\n
3670 /((?m)^b)/
3671     a\nb\n
3673 /\n((?m)^b)/
3674     a\nb\n
3676 /((?s).)c(?!.)/
3677     a\nb\nc\n
3678     a\nb\nc\n
3680 /((?s)b.)c(?!.)/
3681     a\nb\nc\n
3682     a\nb\nc\n
3684 /^b/
3686 /()^b/
3687     *** Failers
3688     a\nb\nc\n
3689     a\nb\nc\n
3691 /((?m)^b)/
3692     a\nb\nc\n
3694 /(?(?!a)a|b)/
3696 /(?(?!a)b|a)/
3697     a
3699 /(?(?=a)b|a)/
3700     *** Failers
3701     a
3702     a
3704 /(?(?=a)a|b)/
3705     a
3707 /(\w+:)+/
3708     one:
3710 /$(?<=^(a))/
3711     a
3713 /([\w:]+::)?(\w+)$/
3714     abcd
3715     xy:z:::abcd
3717 /^[^bcd]*(c+)/
3718     aexycd
3720 /(a*)b+/
3721     caab
3723 /([\w:]+::)?(\w+)$/
3724     abcd
3725     xy:z:::abcd
3726     *** Failers
3727     abcd:
3728     abcd:
3730 /^[^bcd]*(c+)/
3731     aexycd
3733 /(>a+)ab/
3735 /(?>a+)b/
3736     aaab
3738 /([[:]+)/
3739     a:[b]:
3741 /([[=]+)/
3742     a=[b]=
3744 /([[.]+)/
3745     a.[b].
3747 /((?>a+)b)/
3748     aaab
3750 /(?>(a+))b/
3751     aaab
3753 /((?>[^()]+)|\([^()]*\))+/
3754     ((abc(ade)ufh()()x
3756 /a\Z/
3757     *** Failers
3758     aaab
3759     a\nb\n
3761 /b\Z/
3762     a\nb\n
3764 /b\z/
3766 /b\Z/
3767     a\nb
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
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
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
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  
3810 /((Z)+|A)*/
3811     ZABCDEFG
3813 /(Z()|A)*/
3814     ZABCDEFG
3816 /(Z(())|A)*/
3817     ZABCDEFG
3819 /((?>Z)+|A)*/
3820     ZABCDEFG
3822 /((?>)+|A)*/
3823     ZABCDEFG
3825 /a*/g
3826     abbab
3828 /^[a-\d]/
3829     abcde
3830     -things
3831     0digit
3832     *** Failers
3833     bcdef    
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
3857 /(?!\A)x/m
3858   a\nxb\n
3860 /(?!^)x/m
3861   a\nxb\n
3863 /abc\Qabc\Eabc/
3864     abcabcabc
3865     
3866 /abc\Q(*+|\Eabc/
3867     abc(*+|abc 
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     
3879 /abc#comment
3880     \Q#not comment
3881     literal/x
3882     abc#not comment\n    literal     
3884 /abc#comment
3885     \Q#not comment
3886     literal\E #more comment
3887     /x
3888     abc#not comment\n    literal     
3890 /abc#comment
3891     \Q#not comment
3892     literal\E #more comment/x
3893     abc#not comment\n    literal     
3895 /\Qabc\$xyz\E/
3896     abc\\\$xyz
3898 /\Qabc\E\$\Qxyz\E/
3899     abc\$xyz
3901 /\Gabc/
3902     abc
3903     *** Failers
3904     xyzabc  
3906 /\Gabc./g
3907     abc1abc2xyzabc3
3909 /abc./g
3910     abc1abc2xyzabc3 
3912 /a(?x: b c )d/
3913     XabcdY
3914     *** Failers 
3915     Xa b c d Y 
3917 /((?x)x y z | a b c)/
3918     XabcY
3919     AxyzB 
3921 /(?i)AB(?-i)C/
3922     XabCY
3923     *** Failers
3924     XabcY  
3926 /((?i)AB(?-i)C|D)E/
3927     abCE
3928     DE
3929     *** Failers
3930     abcE
3931     abCe  
3932     dE
3933     De    
3935 /[z\Qa-d]\E]/
3936     z
3937     a
3938     -
3939     d
3940     ] 
3941     *** Failers
3942     b     
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 
3960 /Åæåä[à-ÿÀ-ß]+/
3961     Ã…æåäà
3962     Ã…æåäÿ
3963     Ã…æåäÀ
3964     Ã…æåäß
3966 /(?<=Z)X./
3967     \x84XAZXB
3969 /^(?(2)a|(1)(2))+$/
3970     123a
3972 /(?<=a|bbbb)c/
3973     ac
3974     bbbbc
3976 /abc/SS>testsavedregex
3977 <testsavedregex
3978     abc
3979     *** Failers
3980     bca
3981     
3982 /abc/FSS>testsavedregex
3983 <testsavedregex
3984     abc
3985     *** Failers
3986     bca
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 
4004 /line\nbreak/f
4005     this is a line\nbreak
4006     ** Failers 
4007     line one\nthis is a line\nbreak in the second line 
4009 /line\nbreak/mf
4010     this is a line\nbreak
4011     ** Failers 
4012     line one\nthis is a line\nbreak in the second line 
4014 /1234/
4015     123\P
4016     a4\P\R
4018 /1234/
4019     123\P
4020     4\P\R
4022 /^/mg
4023     a\nb\nc\n
4024     \ 
4025     
4026 /(?<=C\n)^/mg
4027     A\nC\nC\n 
4029 /(?s)A?B/
4030     AB
4031     aB  
4033 /(?s)A*B/
4034     AB
4035     aB  
4037 /(?m)A?B/
4038     AB
4039     aB  
4041 /(?m)A*B/
4042     AB
4043     aB  
4045 /Content-Type\x3A[^\r\n]{6,}/
4046     Content-Type:xxxxxyyy 
4048 /Content-Type\x3A[^\r\n]{6,}z/
4049     Content-Type:xxxxxyyyz
4051 /Content-Type\x3A[^a]{6,}/
4052     Content-Type:xxxyyy 
4054 /Content-Type\x3A[^a]{6,}z/
4055     Content-Type:xxxyyyz
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
4113 /\w+(.)(.)?def/s
4114     abc\ndef
4115     abc\rdef
4116     abc\r\ndef
4118 /^\w+=.*(\\\n.*)*/
4119     abc=xyz\\\npqr
4121 /^(a()*)*/
4122     aaaa
4124 /^(?:a(?:(?:))*)*/
4125     aaaa
4127 /^(a()+)+/
4128     aaaa
4130 /^(?:a(?:(?:))+)+/
4131     aaaa
4133 /(a|)*\d/
4134   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4135   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4137 /(?>a|)*\d/
4138   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4139   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4141 /(?:a|)*\d/
4142   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4143   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
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>   
4154 /^abc./mgx<any>
4155     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
4157 /abc.$/mgx<any>
4158     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
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    
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 
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
4205 /^a[\R]b/<bsr_unicode>
4206     aRb
4207     ** Failers
4208     a\nb  
4210 /.+foo/
4211     afoo
4212     ** Failers 
4213     \r\nfoo 
4214     \nfoo 
4216 /.+foo/<crlf>
4217     afoo
4218     \nfoo 
4219     ** Failers 
4220     \r\nfoo 
4222 /.+foo/<any>
4223     afoo
4224     ** Failers 
4225     \nfoo 
4226     \r\nfoo 
4228 /.+foo/s
4229     afoo
4230     \r\nfoo 
4231     \nfoo 
4233 /^$/mg<any>
4234     abc\r\rxyz
4235     abc\n\rxyz  
4236     ** Failers 
4237     abc\r\nxyz
4239 /^X/m
4240     XABC
4241     ** Failers 
4242     XABC\B
4244 /(?m)^$/<any>g+
4245     abc\r\n\r\n
4247 /(?m)^$|^\r\n/<any>g+ 
4248     abc\r\n\r\n
4249     
4250 /(?m)$/<any>g+ 
4251     abc\r\n\r\n
4253 /(?|(abc)|(xyz))/
4254    >abc<
4255    >xyz< 
4257 /(x)(?|(abc)|(xyz))(x)/
4258     xabcx
4259     xxyzx 
4261 /(x)(?|(abc)(pqr)|(xyz))(x)/
4262     xabcpqrx
4263     xxyzx 
4265 /(?|(abc)|(xyz))(?1)/
4266     abcabc
4267     xyzabc 
4268     ** Failers 
4269     xyzxyz 
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
4291 /\h*X\h?\H+Y\H?Z/
4292     >XNNNYZ
4293     >  X NYQZ
4294     ** Failers
4295     >XYZ   
4296     >  X NY Z
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
4302 /.+A/<crlf>
4303     \r\nA
4304     
4305 /\nA/<crlf>
4306     \r\nA 
4308 /[\r\n]A/<crlf>
4309     \r\nA 
4311 /(\r|\n)A/<crlf>
4312     \r\nA 
4314 /a\Rb/I<bsr_anycrlf>
4315     a\rb
4316     a\nb
4317     a\r\nb
4318     ** Failers
4319     a\x85b
4320     a\x0bb     
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     
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     
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 
4372 /a[]b/<JS>
4373     ** Failers
4374     ab
4376 /a[]+b/<JS>
4377     ** Failers
4378     ab 
4380 /a[]*+b/<JS>
4381     ** Failers
4382     ab 
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  
4396 /X$/E
4397     X
4398     ** Failers 
4399     X\n 
4401 /X$/
4402     X
4403     X\n 
4405 /xyz/C
4406   xyz 
4407   abcxyz 
4408   abcxyz\Y
4409   ** Failers 
4410   abc
4411   abc\Y
4412   abcxypqr  
4413   abcxypqr\Y  
4415 /(*NO_START_OPT)xyz/C
4416   abcxyz 
4417   
4418 /(?C)ab/
4419   ab
4420   \C-ab
4421   
4422 /ab/C
4423   ab
4424   \C-ab    
4426 /^"((?(?=[a])[^"])|b)*"$/C
4427     "ab"
4428     \C-"ab"
4430 /\d+X|9+Y/
4431     ++++123999\P
4432     ++++123999Y\P
4434 /Z(*F)/
4435     Z\P
4436     ZA\P 
4437     
4438 /Z(?!)/
4439     Z\P 
4440     ZA\P 
4442 /dog(sbody)?/
4443     dogs\P
4444     dogs\P\P 
4445     
4446 /dog(sbody)??/
4447     dogs\P
4448     dogs\P\P 
4450 /dog|dogsbody/
4451     dogs\P
4452     dogs\P\P 
4454 /dogsbody|dog/
4455     dogs\P
4456     dogs\P\P 
4458 /Z(*F)Q|ZXY/
4459     Z\P
4460     ZA\P 
4461     X\P 
4463 /\bthe cat\b/
4464     the cat\P
4465     the cat\P\P
4467 /dog(sbody)?/
4468     dogs\D\P
4469     body\D\R
4471 /dog(sbody)?/
4472     dogs\D\P\P
4473     body\D\R
4475 /abc/
4476    abc\P
4477    abc\P\P
4479 /abc\K123/
4480     xyzabc123pqr
4481     
4482 /(?<=abc)123/
4483     xyzabc123pqr 
4484     xyzabc12\P
4485     xyzabc12\P\P
4487 /\babc\b/
4488     +++abc+++
4489     +++ab\P
4490     +++ab\P\P  
4492 /(?=C)/g+
4493     ABCDECBA
4495 /(abc|def|xyz)/I
4496     terhjk;abcdaadsfe
4497     the quick xyz brown fox 
4498     \Yterhjk;abcdaadsfe
4499     \Ythe quick xyz brown fox 
4500     ** Failers
4501     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4502     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4504 /(abc|def|xyz)/SI
4505     terhjk;abcdaadsfe
4506     the quick xyz brown fox 
4507     \Yterhjk;abcdaadsfe
4508     \Ythe quick xyz brown fox 
4509     ** Failers
4510     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4511     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4513 /abcd*/+
4514     xxxxabcd\P
4515     xxxxabcd\P\P
4516     dddxxx\R 
4517     xxxxabcd\P\P
4518     xxx\R 
4520 /abcd*/i
4521     xxxxabcd\P
4522     xxxxabcd\P\P
4523     XXXXABCD\P
4524     XXXXABCD\P\P
4526 /abc\d*/
4527     xxxxabc1\P
4528     xxxxabc1\P\P
4530 /abc[de]*/
4531     xxxxabcde\P
4532     xxxxabcde\P\P
4534 /(?:(?1)|B)(A(*F)|C)/
4535     ABCD
4536     CCD
4537     ** Failers
4538     CAD   
4540 /^(?:(?1)|B)(A(*F)|C)/
4541     CCD
4542     BCD 
4543     ** Failers
4544     ABCD
4545     CAD
4546     BAD    
4548 /^(?!a(*SKIP)b)/
4549     ac
4550     
4551 /^(?=a(*SKIP)b|ac)/
4552     ** Failers
4553     ac
4554     
4555 /^(?=a(*THEN)b|ac)/
4556     ac
4557     
4558 /^(?=a(*PRUNE)b)/
4559     ab  
4560     ** Failers 
4561     ac
4563 /^(?(?!a(*SKIP)b))/
4564     ac
4566 /(?<=abc)def/
4567     abc\P\P
4569 /abc$/
4570     abc
4571     abc\P
4572     abc\P\P
4574 /abc$/m
4575     abc
4576     abc\n
4577     abc\P\P
4578     abc\n\P\P 
4579     abc\P
4580     abc\n\P
4582 /abc\z/
4583     abc
4584     abc\P
4585     abc\P\P
4587 /abc\Z/
4588     abc
4589     abc\P
4590     abc\P\P
4592 /abc\b/
4593     abc
4594     abc\P
4595     abc\P\P
4597 /abc\B/
4598     abc
4599     abc\P
4600     abc\P\P
4602 /.+/
4603     abc\>0
4604     abc\>1
4605     abc\>2
4606     abc\>3
4607     abc\>4
4608     abc\>-4 
4610 /^(?:a)++\w/
4611      aaaab
4612      ** Failers 
4613      aaaa 
4614      bbb 
4616 /^(?:aa|(?:a)++\w)/
4617      aaaab
4618      aaaa 
4619      ** Failers 
4620      bbb 
4622 /^(?:a)*+\w/
4623      aaaab
4624      bbb 
4625      ** Failers 
4626      aaaa 
4628 /^(a)++\w/
4629      aaaab
4630      ** Failers 
4631      aaaa 
4632      bbb 
4634 /^(a|)++\w/
4635      aaaab
4636      ** Failers 
4637      aaaa 
4638      bbb 
4640 /(?=abc){3}abc/+
4641     abcabcabc
4642     ** Failers
4643     xyz  
4644     
4645 /(?=abc)+abc/+
4646     abcabcabc
4647     ** Failers
4648     xyz  
4649     
4650 /(?=abc)++abc/+
4651     abcabcabc
4652     ** Failers
4653     xyz  
4654     
4655 /(?=abc){0}xyz/
4656     xyz 
4658 /(?=abc){1}xyz/
4659     ** Failers
4660     xyz 
4661     
4662 /(?=(a))?./
4663     ab
4664     bc
4665       
4666 /(?=(a))??./
4667     ab
4668     bc
4670 /^(?=(a)){0}b(?1)/
4671     backgammon
4673 /^(?=(?1))?[az]([abc])d/
4674     abd 
4675     zcdxx 
4677 /^(?!a){0}\w+/
4678     aaaaa
4680 /(?<=(abc))?xyz/
4681     abcxyz
4682     pqrxyz 
4684 /((?2))((?1))/
4685     abc
4687 /(?(R)a+|(?R)b)/
4688     aaaabcde
4690 /(?(R)a+|((?R))b)/
4691     aaaabcde
4693 /((?(R)a+|(?1)b))/
4694     aaaabcde
4696 /((?(R2)a+|(?1)b))/
4697     aaaabcde
4699 /(?(R)a*(?1)|((?R))b)/
4700     aaaabcde
4702 /(a+)/
4703     \O6aaaa
4704     \O8aaaa
4706 /ab\Cde/
4707     abXde
4708     
4709 /(?<=ab\Cde)X/
4710     abZdeX
4712 /^\R/
4713     \r\P
4714     \r\P\P
4715     
4716 /^\R{2,3}x/
4717     \r\P
4718     \r\P\P
4719     \r\r\P 
4720     \r\r\P\P
4721     \r\r\r\P  
4722     \r\r\r\P\P
4723     \r\rx
4724     \r\r\rx    
4726 /^\R{2,3}?x/
4727     \r\P
4728     \r\P\P
4729     \r\r\P 
4730     \r\r\P\P
4731     \r\r\r\P  
4732     \r\r\r\P\P
4733     \r\rx
4734     \r\r\rx    
4735     
4736 /^\R?x/
4737     \r\P
4738     \r\P\P 
4739     x
4740     \rx  
4742 /^\R+x/
4743     \r\P
4744     \r\P\P 
4745     \r\n\P
4746     \r\n\P\P  
4747     \rx  
4749 /^a$/<CRLF>
4750     a\r\P
4751     a\r\P\P 
4753 /^a$/m<CRLF>
4754     a\r\P
4755     a\r\P\P 
4757 /^(a$|a\r)/<CRLF>
4758     a\r\P
4759     a\r\P\P 
4761 /^(a$|a\r)/m<CRLF>
4762     a\r\P
4763     a\r\P\P 
4765 /./<CRLF>
4766     \r\P
4767     \r\P\P 
4768   
4769 /.{2,3}/<CRLF>
4770     \r\P 
4771     \r\P\P
4772     \r\r\P
4773     \r\r\P\P
4774     \r\r\r\P
4775     \r\r\r\P\P     
4777 /.{2,3}?/<CRLF>
4778     \r\P 
4779     \r\P\P
4780     \r\r\P
4781     \r\r\P\P
4782     \r\r\r\P
4783     \r\r\r\P\P     
4785 /-- Test simple validity check for restarts --/
4787 /abcdef/
4788    abc\R
4790 /<H((?(?!<H|F>)(.)|(?R))++)*F>/
4791     text <H more text <H texting more  hexA0-"\xA0"    hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
4793 /^(?>.{4})abc|^\w\w.xabcd/
4794     xxxxabcd
4795     xx\xa0xabcd 
4797 /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
4798     xxxxxxxxabcd
4799     xx\xa0xxxxxabcd 
4801 /-- End of testinput8 --/