chiark / gitweb /
pcre3 (2:8.35-3.3) unstable; urgency=medium
[pcre3.git] / testdata / testoutput8
1 /-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
2     excluding UTF and Unicode property support. The -dfa flag must be used with
3     pcretest when running it. --/
4     
5 < forbid 8W 
6      
7 /abc/
8     abc
9  0: abc
10     
11 /ab*c/
12     abc
13  0: abc
14     abbbbc
15  0: abbbbc
16     ac
17  0: ac
18     
19 /ab+c/
20     abc
21  0: abc
22     abbbbbbc
23  0: abbbbbbc
24     *** Failers 
25 No match
26     ac
27 No match
28     ab
29 No match
30     
31 /a*/O
32     a
33  0: a
34  1: 
35     aaaaaaaaaaaaaaaaa
36  0: aaaaaaaaaaaaaaaaa
37  1: aaaaaaaaaaaaaaaa
38  2: aaaaaaaaaaaaaaa
39  3: aaaaaaaaaaaaaa
40  4: aaaaaaaaaaaaa
41  5: aaaaaaaaaaaa
42  6: aaaaaaaaaaa
43  7: aaaaaaaaaa
44  8: aaaaaaaaa
45  9: aaaaaaaa
46 10: aaaaaaa
47 11: aaaaaa
48 12: aaaaa
49 13: aaaa
50 14: aaa
51 15: aa
52 16: a
53 17: 
54     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
55 Matched, but offsets vector is too small to show all matches
56  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
57  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
58  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
59  3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
60  4: aaaaaaaaaaaaaaaaaaaaaaaaaa
61  5: aaaaaaaaaaaaaaaaaaaaaaaaa
62  6: aaaaaaaaaaaaaaaaaaaaaaaa
63  7: aaaaaaaaaaaaaaaaaaaaaaa
64  8: aaaaaaaaaaaaaaaaaaaaaa
65  9: aaaaaaaaaaaaaaaaaaaaa
66 10: aaaaaaaaaaaaaaaaaaaa
67 11: aaaaaaaaaaaaaaaaaaa
68 12: aaaaaaaaaaaaaaaaaa
69 13: aaaaaaaaaaaaaaaaa
70 14: aaaaaaaaaaaaaaaa
71 15: aaaaaaaaaaaaaaa
72 16: aaaaaaaaaaaaaa
73 17: aaaaaaaaaaaaa
74 18: aaaaaaaaaaaa
75 19: aaaaaaaaaaa
76 20: aaaaaaaaaa
77 21: aaaaaaaaa
78     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F 
79  0: 
80     
81 /(a|abcd|african)/
82     a
83  0: a
84     abcd
85  0: abcd
86  1: a
87     african
88  0: african
89  1: a
90     
91 /^abc/
92     abcdef
93  0: abc
94     *** Failers
95 No match
96     xyzabc
97 No match
98     xyz\nabc    
99 No match
100     
101 /^abc/m
102     abcdef
103  0: abc
104     xyz\nabc    
105  0: abc
106     *** Failers
107 No match
108     xyzabc
109 No match
110     
111 /\Aabc/
112     abcdef
113  0: abc
114     *** Failers
115 No match
116     xyzabc
117 No match
118     xyz\nabc    
119 No match
120     
121 /\Aabc/m
122     abcdef
123  0: abc
124     *** Failers
125 No match
126     xyzabc
127 No match
128     xyz\nabc    
129 No match
130     
131 /\Gabc/
132     abcdef
133  0: abc
134     xyzabc\>3
135  0: abc
136     *** Failers
137 No match
138     xyzabc    
139 No match
140     xyzabc\>2 
141 No match
142     
143 /x\dy\Dz/
144     x9yzz
145  0: x9yzz
146     x0y+z
147  0: x0y+z
148     *** Failers
149 No match
150     xyz
151 No match
152     xxy0z     
153 No match
154     
155 /x\sy\Sz/
156     x yzz
157  0: x yzz
158     x y+z
159  0: x y+z
160     *** Failers
161 No match
162     xyz
163 No match
164     xxyyz
165 No match
166     
167 /x\wy\Wz/
168     xxy+z
169  0: xxy+z
170     *** Failers
171 No match
172     xxy0z
173 No match
174     x+y+z         
175 No match
176     
177 /x.y/
178     x+y
179  0: x+y
180     x-y
181  0: x-y
182     *** Failers
183 No match
184     x\ny
185 No match
186     
187 /x.y/s
188     x+y
189  0: x+y
190     x-y
191  0: x-y
192     x\ny
193  0: x\x0ay
194
195 /(a.b(?s)c.d|x.y)p.q/
196     a+bc+dp+q
197  0: a+bc+dp+q
198     a+bc\ndp+q
199  0: a+bc\x0adp+q
200     x\nyp+q 
201  0: x\x0ayp+q
202     *** Failers 
203 No match
204     a\nbc\ndp+q
205 No match
206     a+bc\ndp\nq
207 No match
208     x\nyp\nq 
209 No match
210
211 /a\d\z/
212     ba0
213  0: a0
214     *** Failers
215 No match
216     ba0\n
217 No match
218     ba0\ncd   
219 No match
220
221 /a\d\z/m
222     ba0
223  0: a0
224     *** Failers
225 No match
226     ba0\n
227 No match
228     ba0\ncd   
229 No match
230
231 /a\d\Z/
232     ba0
233  0: a0
234     ba0\n
235  0: a0
236     *** Failers
237 No match
238     ba0\ncd   
239 No match
240
241 /a\d\Z/m
242     ba0
243  0: a0
244     ba0\n
245  0: a0
246     *** Failers
247 No match
248     ba0\ncd   
249 No match
250
251 /a\d$/
252     ba0
253  0: a0
254     ba0\n
255  0: a0
256     *** Failers
257 No match
258     ba0\ncd   
259 No match
260
261 /a\d$/m
262     ba0
263  0: a0
264     ba0\n
265  0: a0
266     ba0\ncd   
267  0: a0
268     *** Failers
269 No match
270
271 /abc/i
272     abc
273  0: abc
274     aBc
275  0: aBc
276     ABC
277  0: ABC
278     
279 /[^a]/
280     abcd
281  0: b
282     
283 /ab?\w/
284     abz
285  0: abz
286  1: ab
287     abbz
288  0: abb
289  1: ab
290     azz  
291  0: az
292
293 /x{0,3}yz/
294     ayzq
295  0: yz
296     axyzq
297  0: xyz
298     axxyz
299  0: xxyz
300     axxxyzq
301  0: xxxyz
302     axxxxyzq
303  0: xxxyz
304     *** Failers
305 No match
306     ax
307 No match
308     axx     
309 No match
310       
311 /x{3}yz/
312     axxxyzq
313  0: xxxyz
314     axxxxyzq
315  0: xxxyz
316     *** Failers
317 No match
318     ax
319 No match
320     axx     
321 No match
322     ayzq
323 No match
324     axyzq
325 No match
326     axxyz
327 No match
328       
329 /x{2,3}yz/
330     axxyz
331  0: xxyz
332     axxxyzq
333  0: xxxyz
334     axxxxyzq
335  0: xxxyz
336     *** Failers
337 No match
338     ax
339 No match
340     axx     
341 No match
342     ayzq
343 No match
344     axyzq
345 No match
346       
347 /[^a]+/O
348     bac
349  0: b
350     bcdefax
351  0: bcdef
352  1: bcde
353  2: bcd
354  3: bc
355  4: b
356     *** Failers
357  0: *** F
358  1: *** 
359  2: ***
360  3: **
361  4: *
362     aaaaa   
363 No match
364
365 /[^a]*/O
366     bac
367  0: b
368  1: 
369     bcdefax
370  0: bcdef
371  1: bcde
372  2: bcd
373  3: bc
374  4: b
375  5: 
376     *** Failers
377  0: *** F
378  1: *** 
379  2: ***
380  3: **
381  4: *
382  5: 
383     aaaaa   
384  0: 
385     
386 /[^a]{3,5}/O
387     xyz
388  0: xyz
389     awxyza
390  0: wxyz
391  1: wxy
392     abcdefa
393  0: bcdef
394  1: bcde
395  2: bcd
396     abcdefghijk
397  0: bcdef
398  1: bcde
399  2: bcd
400     *** Failers
401  0: *** F
402  1: *** 
403  2: ***
404     axya
405 No match
406     axa
407 No match
408     aaaaa         
409 No match
410
411 /\d*/
412     1234b567
413  0: 1234
414     xyz
415  0: 
416     
417 /\D*/
418     a1234b567
419  0: a
420     xyz
421  0: xyz
422      
423 /\d+/
424     ab1234c56
425  0: 1234
426     *** Failers
427 No match
428     xyz
429 No match
430     
431 /\D+/
432     ab123c56
433  0: ab
434     *** Failers
435  0: *** Failers
436     789
437 No match
438     
439 /\d?A/
440     045ABC
441  0: 5A
442     ABC
443  0: A
444     *** Failers
445 No match
446     XYZ
447 No match
448     
449 /\D?A/
450     ABC
451  0: A
452     BAC
453  0: BA
454     9ABC             
455  0: A
456     *** Failers
457 No match
458
459 /a+/
460     aaaa
461  0: aaaa
462
463 /^.*xyz/
464     xyz
465  0: xyz
466     ggggggggxyz
467  0: ggggggggxyz
468     
469 /^.+xyz/
470     abcdxyz
471  0: abcdxyz
472     axyz
473  0: axyz
474     *** Failers
475 No match
476     xyz
477 No match
478     
479 /^.?xyz/
480     xyz
481  0: xyz
482     cxyz       
483  0: cxyz
484
485 /^\d{2,3}X/
486     12X
487  0: 12X
488     123X
489  0: 123X
490     *** Failers
491 No match
492     X
493 No match
494     1X
495 No match
496     1234X     
497 No match
498
499 /^[abcd]\d/
500     a45
501  0: a4
502     b93
503  0: b9
504     c99z
505  0: c9
506     d04
507  0: d0
508     *** Failers
509 No match
510     e45
511 No match
512     abcd      
513 No match
514     abcd1234
515 No match
516     1234  
517 No match
518
519 /^[abcd]*\d/
520     a45
521  0: a4
522     b93
523  0: b9
524     c99z
525  0: c9
526     d04
527  0: d0
528     abcd1234
529  0: abcd1
530     1234  
531  0: 1
532     *** Failers
533 No match
534     e45
535 No match
536     abcd      
537 No match
538
539 /^[abcd]+\d/
540     a45
541  0: a4
542     b93
543  0: b9
544     c99z
545  0: c9
546     d04
547  0: d0
548     abcd1234
549  0: abcd1
550     *** Failers
551 No match
552     1234  
553 No match
554     e45
555 No match
556     abcd      
557 No match
558
559 /^a+X/
560     aX
561  0: aX
562     aaX 
563  0: aaX
564
565 /^[abcd]?\d/
566     a45
567  0: a4
568     b93
569  0: b9
570     c99z
571  0: c9
572     d04
573  0: d0
574     1234  
575  0: 1
576     *** Failers
577 No match
578     abcd1234
579 No match
580     e45
581 No match
582
583 /^[abcd]{2,3}\d/
584     ab45
585  0: ab4
586     bcd93
587  0: bcd9
588     *** Failers
589 No match
590     1234 
591 No match
592     a36 
593 No match
594     abcd1234
595 No match
596     ee45
597 No match
598
599 /^(abc)*\d/
600     abc45
601  0: abc4
602     abcabcabc45
603  0: abcabcabc4
604     42xyz 
605  0: 4
606     *** Failers
607 No match
608
609 /^(abc)+\d/
610     abc45
611  0: abc4
612     abcabcabc45
613  0: abcabcabc4
614     *** Failers
615 No match
616     42xyz 
617 No match
618
619 /^(abc)?\d/
620     abc45
621  0: abc4
622     42xyz 
623  0: 4
624     *** Failers
625 No match
626     abcabcabc45
627 No match
628
629 /^(abc){2,3}\d/
630     abcabc45
631  0: abcabc4
632     abcabcabc45
633  0: abcabcabc4
634     *** Failers
635 No match
636     abcabcabcabc45
637 No match
638     abc45
639 No match
640     42xyz 
641 No match
642
643 /1(abc|xyz)2(?1)3/
644     1abc2abc3456
645  0: 1abc2abc3
646     1abc2xyz3456 
647  0: 1abc2xyz3
648
649 /^(a*\w|ab)=(a*\w|ab)/
650     ab=ab
651  0: ab=ab
652  1: ab=a
653
654 /^(a*\w|ab)=(?1)/
655     ab=ab
656  0: ab=ab
657  1: ab=a
658
659 /^([^()]|\((?1)*\))*$/
660     abc
661  0: abc
662     a(b)c
663  0: a(b)c
664     a(b(c))d  
665  0: a(b(c))d
666     *** Failers)
667 No match
668     a(b(c)d  
669 No match
670
671 /^>abc>([^()]|\((?1)*\))*<xyz<$/
672     >abc>123<xyz<
673  0: >abc>123<xyz<
674     >abc>1(2)3<xyz<
675  0: >abc>1(2)3<xyz<
676     >abc>(1(2)3)<xyz<
677  0: >abc>(1(2)3)<xyz<
678
679 /^(?>a*)\d/
680     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
681  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
682     *** Failers 
683 No match
684     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
685 No match
686
687 /< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
688     <>
689  0: <>
690     <abcd>
691  0: <abcd>
692     <abc <123> hij>
693  0: <abc <123> hij>
694     <abc <def> hij>
695  0: <def>
696     <abc<>def> 
697  0: <abc<>def>
698     <abc<>      
699  0: <>
700     *** Failers
701 No match
702     <abc
703 No match
704
705 /^(?(?=abc)\w{3}:|\d\d)$/        
706     abc:                          
707  0: abc:
708     12                             
709  0: 12
710     *** Failers                     
711 No match
712     123                       
713 No match
714     xyz                        
715 No match
716                                 
717 /^(?(?!abc)\d\d|\w{3}:)$/      
718     abc:                        
719  0: abc:
720     12         
721  0: 12
722     *** Failers
723 No match
724     123
725 No match
726     xyz    
727 No match
728
729 /^(?=abc)\w{5}:$/        
730     abcde:                          
731  0: abcde:
732     *** Failers                     
733 No match
734     abc.. 
735 No match
736     123                       
737 No match
738     vwxyz                        
739 No match
740                                 
741 /^(?!abc)\d\d$/      
742     12         
743  0: 12
744     *** Failers
745 No match
746     abcde:
747 No match
748     abc..  
749 No match
750     123
751 No match
752     vwxyz    
753 No match
754
755 /(?<=abc|xy)123/
756     abc12345
757  0: 123
758     wxy123z
759  0: 123
760     *** Failers
761 No match
762     123abc
763 No match
764
765 /(?<!abc|xy)123/
766     123abc
767  0: 123
768     mno123456 
769  0: 123
770     *** Failers
771 No match
772     abc12345
773 No match
774     wxy123z
775 No match
776
777 /abc(?C1)xyz/
778     abcxyz
779 --->abcxyz
780   1 ^  ^       x
781  0: abcxyz
782     123abcxyz999 
783 --->123abcxyz999
784   1    ^  ^          x
785  0: abcxyz
786
787 /(ab|cd){3,4}/C
788   ababab
789 --->ababab
790  +0 ^          (ab|cd){3,4}
791  +1 ^          a
792  +4 ^          c
793  +2 ^^         b
794  +3 ^ ^        |
795  +1 ^ ^        a
796  +4 ^ ^        c
797  +2 ^  ^       b
798  +3 ^   ^      |
799  +1 ^   ^      a
800  +4 ^   ^      c
801  +2 ^    ^     b
802  +3 ^     ^    |
803 +12 ^     ^    
804  +1 ^     ^    a
805  +4 ^     ^    c
806  0: ababab
807   abcdabcd
808 --->abcdabcd
809  +0 ^            (ab|cd){3,4}
810  +1 ^            a
811  +4 ^            c
812  +2 ^^           b
813  +3 ^ ^          |
814  +1 ^ ^          a
815  +4 ^ ^          c
816  +5 ^  ^         d
817  +6 ^   ^        )
818  +1 ^   ^        a
819  +4 ^   ^        c
820  +2 ^    ^       b
821  +3 ^     ^      |
822 +12 ^     ^      
823  +1 ^     ^      a
824  +4 ^     ^      c
825  +5 ^      ^     d
826  +6 ^       ^    )
827 +12 ^       ^    
828  0: abcdabcd
829  1: abcdab
830   abcdcdcdcdcd  
831 --->abcdcdcdcdcd
832  +0 ^                (ab|cd){3,4}
833  +1 ^                a
834  +4 ^                c
835  +2 ^^               b
836  +3 ^ ^              |
837  +1 ^ ^              a
838  +4 ^ ^              c
839  +5 ^  ^             d
840  +6 ^   ^            )
841  +1 ^   ^            a
842  +4 ^   ^            c
843  +5 ^    ^           d
844  +6 ^     ^          )
845 +12 ^     ^          
846  +1 ^     ^          a
847  +4 ^     ^          c
848  +5 ^      ^         d
849  +6 ^       ^        )
850 +12 ^       ^        
851  0: abcdcdcd
852  1: abcdcd
853
854 /^abc/
855     abcdef
856  0: abc
857     *** Failers
858 No match
859     abcdef\B  
860 No match
861
862 /^(a*|xyz)/
863     bcd
864  0: 
865     aaabcd
866  0: aaa
867     xyz
868  0: xyz
869  1: 
870     xyz\N  
871  0: xyz
872     *** Failers
873  0: 
874     bcd\N   
875 No match
876     
877 /xyz$/
878     xyz
879  0: xyz
880     xyz\n
881  0: xyz
882     *** Failers
883 No match
884     xyz\Z
885 No match
886     xyz\n\Z    
887 No match
888     
889 /xyz$/m
890     xyz
891  0: xyz
892     xyz\n 
893  0: xyz
894     abcxyz\npqr 
895  0: xyz
896     abcxyz\npqr\Z 
897  0: xyz
898     xyz\n\Z    
899  0: xyz
900     *** Failers
901 No match
902     xyz\Z
903 No match
904
905 /\Gabc/
906     abcdef
907  0: abc
908     defabcxyz\>3 
909  0: abc
910     *** Failers 
911 No match
912     defabcxyz
913 No match
914
915 /^abcdef/
916     ab\P
917 Partial match: ab
918     abcde\P
919 Partial match: abcde
920     abcdef\P
921  0: abcdef
922     *** Failers
923 No match
924     abx\P    
925 No match
926
927 /^a{2,4}\d+z/
928     a\P
929 Partial match: a
930     aa\P
931 Partial match: aa
932     aa2\P 
933 Partial match: aa2
934     aaa\P
935 Partial match: aaa
936     aaa23\P 
937 Partial match: aaa23
938     aaaa12345\P
939 Partial match: aaaa12345
940     aa0z\P
941  0: aa0z
942     aaaa4444444444444z\P 
943  0: aaaa4444444444444z
944     *** Failers
945 No match
946     az\P 
947 No match
948     aaaaa\P 
949 No match
950     a56\P 
951 No match
952
953 /^abcdef/
954    abc\P
955 Partial match: abc
956    def\R 
957  0: def
958    
959 /(?<=foo)bar/
960    xyzfo\P 
961 No match
962    foob\P\>2 
963 Partial match at offset 3: foob
964    foobar...\R\P\>4 
965  0: ar
966    xyzfo\P
967 No match
968    foobar\>2  
969  0: bar
970    *** Failers
971 No match
972    xyzfo\P
973 No match
974    obar\R   
975 No match
976
977 /(ab*(cd|ef))+X/
978     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
979 No match
980     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
981 Partial match: abbbbbbcdaefabbbbbbbefa
982     cdabbbbbbbb\P\R\B\Z
983 Partial match: cdabbbbbbbb
984     efabbbbbbbbbbbbbbbb\P\R\B\Z
985 Partial match: efabbbbbbbbbbbbbbbb
986     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z    
987  0: bbbbbbbbbbbbcdX
988
989 /(a|b)/SF>testsavedregex
990 Compiled pattern written to testsavedregex
991 Study data written to testsavedregex
992 <testsavedregex
993 Compiled pattern (byte-inverted) loaded from testsavedregex
994 Study data loaded from testsavedregex
995     abc
996  0: a
997     ** Failers
998  0: a
999     def  
1000 No match
1001     
1002 /the quick brown fox/
1003     the quick brown fox
1004  0: the quick brown fox
1005     The quick brown FOX
1006 No match
1007     What do you know about the quick brown fox?
1008  0: the quick brown fox
1009     What do you know about THE QUICK BROWN FOX?
1010 No match
1011
1012 /The quick brown fox/i
1013     the quick brown fox
1014  0: the quick brown fox
1015     The quick brown FOX
1016  0: The quick brown FOX
1017     What do you know about the quick brown fox?
1018  0: the quick brown fox
1019     What do you know about THE QUICK BROWN FOX?
1020  0: THE QUICK BROWN FOX
1021
1022 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
1023     abcd\t\n\r\f\a\e9;\$\\?caxyz
1024  0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
1025
1026 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
1027     abxyzpqrrrabbxyyyypqAzz
1028  0: abxyzpqrrrabbxyyyypqAzz
1029     abxyzpqrrrabbxyyyypqAzz
1030  0: abxyzpqrrrabbxyyyypqAzz
1031     aabxyzpqrrrabbxyyyypqAzz
1032  0: aabxyzpqrrrabbxyyyypqAzz
1033     aaabxyzpqrrrabbxyyyypqAzz
1034  0: aaabxyzpqrrrabbxyyyypqAzz
1035     aaaabxyzpqrrrabbxyyyypqAzz
1036  0: aaaabxyzpqrrrabbxyyyypqAzz
1037     abcxyzpqrrrabbxyyyypqAzz
1038  0: abcxyzpqrrrabbxyyyypqAzz
1039     aabcxyzpqrrrabbxyyyypqAzz
1040  0: aabcxyzpqrrrabbxyyyypqAzz
1041     aaabcxyzpqrrrabbxyyyypAzz
1042  0: aaabcxyzpqrrrabbxyyyypAzz
1043     aaabcxyzpqrrrabbxyyyypqAzz
1044  0: aaabcxyzpqrrrabbxyyyypqAzz
1045     aaabcxyzpqrrrabbxyyyypqqAzz
1046  0: aaabcxyzpqrrrabbxyyyypqqAzz
1047     aaabcxyzpqrrrabbxyyyypqqqAzz
1048  0: aaabcxyzpqrrrabbxyyyypqqqAzz
1049     aaabcxyzpqrrrabbxyyyypqqqqAzz
1050  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
1051     aaabcxyzpqrrrabbxyyyypqqqqqAzz
1052  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
1053     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1054  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
1055     aaaabcxyzpqrrrabbxyyyypqAzz
1056  0: aaaabcxyzpqrrrabbxyyyypqAzz
1057     abxyzzpqrrrabbxyyyypqAzz
1058  0: abxyzzpqrrrabbxyyyypqAzz
1059     aabxyzzzpqrrrabbxyyyypqAzz
1060  0: aabxyzzzpqrrrabbxyyyypqAzz
1061     aaabxyzzzzpqrrrabbxyyyypqAzz
1062  0: aaabxyzzzzpqrrrabbxyyyypqAzz
1063     aaaabxyzzzzpqrrrabbxyyyypqAzz
1064  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
1065     abcxyzzpqrrrabbxyyyypqAzz
1066  0: abcxyzzpqrrrabbxyyyypqAzz
1067     aabcxyzzzpqrrrabbxyyyypqAzz
1068  0: aabcxyzzzpqrrrabbxyyyypqAzz
1069     aaabcxyzzzzpqrrrabbxyyyypqAzz
1070  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
1071     aaaabcxyzzzzpqrrrabbxyyyypqAzz
1072  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
1073     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1074  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
1075     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1076  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
1077     aaabcxyzpqrrrabbxyyyypABzz
1078  0: aaabcxyzpqrrrabbxyyyypABzz
1079     aaabcxyzpqrrrabbxyyyypABBzz
1080  0: aaabcxyzpqrrrabbxyyyypABBzz
1081     >>>aaabxyzpqrrrabbxyyyypqAzz
1082  0: aaabxyzpqrrrabbxyyyypqAzz
1083     >aaaabxyzpqrrrabbxyyyypqAzz
1084  0: aaaabxyzpqrrrabbxyyyypqAzz
1085     >>>>abcxyzpqrrrabbxyyyypqAzz
1086  0: abcxyzpqrrrabbxyyyypqAzz
1087     *** Failers
1088 No match
1089     abxyzpqrrabbxyyyypqAzz
1090 No match
1091     abxyzpqrrrrabbxyyyypqAzz
1092 No match
1093     abxyzpqrrrabxyyyypqAzz
1094 No match
1095     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
1096 No match
1097     aaaabcxyzzzzpqrrrabbbxyyypqAzz
1098 No match
1099     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
1100 No match
1101
1102 /^(abc){1,2}zz/
1103     abczz
1104  0: abczz
1105     abcabczz
1106  0: abcabczz
1107     *** Failers
1108 No match
1109     zz
1110 No match
1111     abcabcabczz
1112 No match
1113     >>abczz
1114 No match
1115
1116 /^(b+?|a){1,2}?c/
1117     bc
1118  0: bc
1119     bbc
1120  0: bbc
1121     bbbc
1122  0: bbbc
1123     bac
1124  0: bac
1125     bbac
1126  0: bbac
1127     aac
1128  0: aac
1129     abbbbbbbbbbbc
1130  0: abbbbbbbbbbbc
1131     bbbbbbbbbbbac
1132  0: bbbbbbbbbbbac
1133     *** Failers
1134 No match
1135     aaac
1136 No match
1137     abbbbbbbbbbbac
1138 No match
1139
1140 /^(b+|a){1,2}c/
1141     bc
1142  0: bc
1143     bbc
1144  0: bbc
1145     bbbc
1146  0: bbbc
1147     bac
1148  0: bac
1149     bbac
1150  0: bbac
1151     aac
1152  0: aac
1153     abbbbbbbbbbbc
1154  0: abbbbbbbbbbbc
1155     bbbbbbbbbbbac
1156  0: bbbbbbbbbbbac
1157     *** Failers
1158 No match
1159     aaac
1160 No match
1161     abbbbbbbbbbbac
1162 No match
1163
1164 /^(b+|a){1,2}?bc/
1165     bbc
1166  0: bbc
1167
1168 /^(b*|ba){1,2}?bc/
1169     babc
1170  0: babc
1171     bbabc
1172  0: bbabc
1173     bababc
1174  0: bababc
1175     *** Failers
1176 No match
1177     bababbc
1178 No match
1179     babababc
1180 No match
1181
1182 /^(ba|b*){1,2}?bc/
1183     babc
1184  0: babc
1185     bbabc
1186  0: bbabc
1187     bababc
1188  0: bababc
1189     *** Failers
1190 No match
1191     bababbc
1192 No match
1193     babababc
1194 No match
1195
1196 /^\ca\cA\c[\c{\c:/
1197     \x01\x01\e;z
1198  0: \x01\x01\x1b;z
1199
1200 /^[ab\]cde]/
1201     athing
1202  0: a
1203     bthing
1204  0: b
1205     ]thing
1206  0: ]
1207     cthing
1208  0: c
1209     dthing
1210  0: d
1211     ething
1212  0: e
1213     *** Failers
1214 No match
1215     fthing
1216 No match
1217     [thing
1218 No match
1219     \\thing
1220 No match
1221
1222 /^[]cde]/
1223     ]thing
1224  0: ]
1225     cthing
1226  0: c
1227     dthing
1228  0: d
1229     ething
1230  0: e
1231     *** Failers
1232 No match
1233     athing
1234 No match
1235     fthing
1236 No match
1237
1238 /^[^ab\]cde]/
1239     fthing
1240  0: f
1241     [thing
1242  0: [
1243     \\thing
1244  0: \
1245     *** Failers
1246  0: *
1247     athing
1248 No match
1249     bthing
1250 No match
1251     ]thing
1252 No match
1253     cthing
1254 No match
1255     dthing
1256 No match
1257     ething
1258 No match
1259
1260 /^[^]cde]/
1261     athing
1262  0: a
1263     fthing
1264  0: f
1265     *** Failers
1266  0: *
1267     ]thing
1268 No match
1269     cthing
1270 No match
1271     dthing
1272 No match
1273     ething
1274 No match
1275
1276 /^\\81/
1277     \81
1278  0: \x81
1279
1280 /^ÿ/
1281     Ã¿
1282  0: \xff
1283
1284 /^[0-9]+$/
1285     0
1286  0: 0
1287     1
1288  0: 1
1289     2
1290  0: 2
1291     3
1292  0: 3
1293     4
1294  0: 4
1295     5
1296  0: 5
1297     6
1298  0: 6
1299     7
1300  0: 7
1301     8
1302  0: 8
1303     9
1304  0: 9
1305     10
1306  0: 10
1307     100
1308  0: 100
1309     *** Failers
1310 No match
1311     abc
1312 No match
1313
1314 /^.*nter/
1315     enter
1316  0: enter
1317     inter
1318  0: inter
1319     uponter
1320  0: uponter
1321
1322 /^xxx[0-9]+$/
1323     xxx0
1324  0: xxx0
1325     xxx1234
1326  0: xxx1234
1327     *** Failers
1328 No match
1329     xxx
1330 No match
1331
1332 /^.+[0-9][0-9][0-9]$/
1333     x123
1334  0: x123
1335     xx123
1336  0: xx123
1337     123456
1338  0: 123456
1339     *** Failers
1340 No match
1341     123
1342 No match
1343     x1234
1344  0: x1234
1345
1346 /^.+?[0-9][0-9][0-9]$/
1347     x123
1348  0: x123
1349     xx123
1350  0: xx123
1351     123456
1352  0: 123456
1353     *** Failers
1354 No match
1355     123
1356 No match
1357     x1234
1358  0: x1234
1359
1360 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
1361     abc!pqr=apquxz.ixr.zzz.ac.uk
1362  0: abc!pqr=apquxz.ixr.zzz.ac.uk
1363     *** Failers
1364 No match
1365     !pqr=apquxz.ixr.zzz.ac.uk
1366 No match
1367     abc!=apquxz.ixr.zzz.ac.uk
1368 No match
1369     abc!pqr=apquxz:ixr.zzz.ac.uk
1370 No match
1371     abc!pqr=apquxz.ixr.zzz.ac.ukk
1372 No match
1373
1374 /:/
1375     Well, we need a colon: somewhere
1376  0: :
1377     *** Fail if we don't
1378 No match
1379
1380 /([\da-f:]+)$/i
1381     0abc
1382  0: 0abc
1383     abc
1384  0: abc
1385     fed
1386  0: fed
1387     E
1388  0: E
1389     ::
1390  0: ::
1391     5f03:12C0::932e
1392  0: 5f03:12C0::932e
1393     fed def
1394  0: def
1395     Any old stuff
1396  0: ff
1397     *** Failers
1398 No match
1399     0zzz
1400 No match
1401     gzzz
1402 No match
1403     fed\x20
1404 No match
1405     Any old rubbish
1406 No match
1407
1408 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
1409     .1.2.3
1410  0: .1.2.3
1411     A.12.123.0
1412  0: A.12.123.0
1413     *** Failers
1414 No match
1415     .1.2.3333
1416 No match
1417     1.2.3
1418 No match
1419     1234.2.3
1420 No match
1421
1422 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1423     1 IN SOA non-sp1 non-sp2(
1424  0: 1 IN SOA non-sp1 non-sp2(
1425     1    IN    SOA    non-sp1    non-sp2   (
1426  0: 1    IN    SOA    non-sp1    non-sp2   (
1427     *** Failers
1428 No match
1429     1IN SOA non-sp1 non-sp2(
1430 No match
1431
1432 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
1433     a.
1434  0: a.
1435     Z.
1436  0: Z.
1437     2.
1438  0: 2.
1439     ab-c.pq-r.
1440  0: ab-c.pq-r.
1441     sxk.zzz.ac.uk.
1442  0: sxk.zzz.ac.uk.
1443     x-.y-.
1444  0: x-.y-.
1445     *** Failers
1446 No match
1447     -abc.peq.
1448 No match
1449
1450 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
1451     *.a
1452  0: *.a
1453     *.b0-a
1454  0: *.b0-a
1455     *.c3-b.c
1456  0: *.c3-b.c
1457     *.c-a.b-c
1458  0: *.c-a.b-c
1459     *** Failers
1460 No match
1461     *.0
1462 No match
1463     *.a-
1464 No match
1465     *.a-b.c-
1466 No match
1467     *.c-a.0-c
1468 No match
1469
1470 /^(?=ab(de))(abd)(e)/
1471     abde
1472  0: abde
1473
1474 /^(?!(ab)de|x)(abd)(f)/
1475     abdf
1476  0: abdf
1477
1478 /^(?=(ab(cd)))(ab)/
1479     abcd
1480  0: ab
1481
1482 /^[\da-f](\.[\da-f])*$/i
1483     a.b.c.d
1484  0: a.b.c.d
1485     A.B.C.D
1486  0: A.B.C.D
1487     a.b.c.1.2.3.C
1488  0: a.b.c.1.2.3.C
1489
1490 /^\".*\"\s*(;.*)?$/
1491     \"1234\"
1492  0: "1234"
1493     \"abcd\" ;
1494  0: "abcd" ;
1495     \"\" ; rhubarb
1496  0: "" ; rhubarb
1497     *** Failers
1498 No match
1499     \"1234\" : things
1500 No match
1501
1502 /^$/
1503     \
1504  0: 
1505     *** Failers
1506 No match
1507
1508 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
1509     ab c
1510  0: ab c
1511     *** Failers
1512 No match
1513     abc
1514 No match
1515     ab cde
1516 No match
1517
1518 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
1519     ab c
1520  0: ab c
1521     *** Failers
1522 No match
1523     abc
1524 No match
1525     ab cde
1526 No match
1527
1528 /^   a\ b[c ]d       $/x
1529     a bcd
1530  0: a bcd
1531     a b d
1532  0: a b d
1533     *** Failers
1534 No match
1535     abcd
1536 No match
1537     ab d
1538 No match
1539
1540 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
1541     abcdefhijklm
1542  0: abcdefhijklm
1543
1544 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
1545     abcdefhijklm
1546  0: abcdefhijklm
1547
1548 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
1549     a+ Z0+\x08\n\x1d\x12
1550  0: a+ Z0+\x08\x0a\x1d\x12
1551
1552 /^[.^$|()*+?{,}]+/
1553     .^\$(*+)|{?,?}
1554  0: .^$(*+)|{?,?}
1555
1556 /^a*\w/
1557     z
1558  0: z
1559     az
1560  0: az
1561  1: a
1562     aaaz
1563  0: aaaz
1564  1: aaa
1565  2: aa
1566  3: a
1567     a
1568  0: a
1569     aa
1570  0: aa
1571  1: a
1572     aaaa
1573  0: aaaa
1574  1: aaa
1575  2: aa
1576  3: a
1577     a+
1578  0: a
1579     aa+
1580  0: aa
1581  1: a
1582
1583 /^a*?\w/
1584     z
1585  0: z
1586     az
1587  0: az
1588  1: a
1589     aaaz
1590  0: aaaz
1591  1: aaa
1592  2: aa
1593  3: a
1594     a
1595  0: a
1596     aa
1597  0: aa
1598  1: a
1599     aaaa
1600  0: aaaa
1601  1: aaa
1602  2: aa
1603  3: a
1604     a+
1605  0: a
1606     aa+
1607  0: aa
1608  1: a
1609
1610 /^a+\w/
1611     az
1612  0: az
1613     aaaz
1614  0: aaaz
1615  1: aaa
1616  2: aa
1617     aa
1618  0: aa
1619     aaaa
1620  0: aaaa
1621  1: aaa
1622  2: aa
1623     aa+
1624  0: aa
1625
1626 /^a+?\w/
1627     az
1628  0: az
1629     aaaz
1630  0: aaaz
1631  1: aaa
1632  2: aa
1633     aa
1634  0: aa
1635     aaaa
1636  0: aaaa
1637  1: aaa
1638  2: aa
1639     aa+
1640  0: aa
1641
1642 /^\d{8}\w{2,}/
1643     1234567890
1644  0: 1234567890
1645     12345678ab
1646  0: 12345678ab
1647     12345678__
1648  0: 12345678__
1649     *** Failers
1650 No match
1651     1234567
1652 No match
1653
1654 /^[aeiou\d]{4,5}$/
1655     uoie
1656  0: uoie
1657     1234
1658  0: 1234
1659     12345
1660  0: 12345
1661     aaaaa
1662  0: aaaaa
1663     *** Failers
1664 No match
1665     123456
1666 No match
1667
1668 /^[aeiou\d]{4,5}?/
1669     uoie
1670  0: uoie
1671     1234
1672  0: 1234
1673     12345
1674  0: 12345
1675  1: 1234
1676     aaaaa
1677  0: aaaaa
1678  1: aaaa
1679     123456
1680  0: 12345
1681  1: 1234
1682
1683 /^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]/
1684     From abcd  Mon Sep 01 12:33:02 1997
1685  0: From abcd  Mon Sep 01 12:33
1686
1687 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
1688     From abcd  Mon Sep 01 12:33:02 1997
1689  0: From abcd  Mon Sep 01 12:33
1690     From abcd  Mon Sep  1 12:33:02 1997
1691  0: From abcd  Mon Sep  1 12:33
1692     *** Failers
1693 No match
1694     From abcd  Sep 01 12:33:02 1997
1695 No match
1696
1697 /^12.34/s
1698     12\n34
1699  0: 12\x0a34
1700     12\r34
1701  0: 12\x0d34
1702
1703 /\w+(?=\t)/
1704     the quick brown\t fox
1705  0: brown
1706
1707 /foo(?!bar)(.*)/
1708     foobar is foolish see?
1709  0: foolish see?
1710
1711 /(?:(?!foo)...|^.{0,2})bar(.*)/
1712     foobar crowbar etc
1713  0: rowbar etc
1714     barrel
1715  0: barrel
1716     2barrel
1717  0: 2barrel
1718     A barrel
1719  0: A barrel
1720
1721 /^(\D*)(?=\d)(?!123)/
1722     abc456
1723  0: abc
1724     *** Failers
1725 No match
1726     abc123
1727 No match
1728
1729 /^1234(?# test newlines
1730   inside)/
1731     1234
1732  0: 1234
1733
1734 /^1234 #comment in extended re
1735   /x
1736     1234
1737  0: 1234
1738
1739 /#rhubarb
1740   abcd/x
1741     abcd
1742  0: abcd
1743
1744 /^abcd#rhubarb/x
1745     abcd
1746  0: abcd
1747
1748 /(?!^)abc/
1749     the abc
1750  0: abc
1751     *** Failers
1752 No match
1753     abc
1754 No match
1755
1756 /(?=^)abc/
1757     abc
1758  0: abc
1759     *** Failers
1760 No match
1761     the abc
1762 No match
1763
1764 /^[ab]{1,3}(ab*|b)/O
1765     aabbbbb
1766  0: aabbbbb
1767  1: aabbbb
1768  2: aabbb
1769  3: aabb
1770  4: aab
1771  5: aa
1772
1773 /^[ab]{1,3}?(ab*|b)/O
1774     aabbbbb
1775  0: aabbbbb
1776  1: aabbbb
1777  2: aabbb
1778  3: aabb
1779  4: aab
1780  5: aa
1781
1782 /^[ab]{1,3}?(ab*?|b)/O
1783     aabbbbb
1784  0: aabbbbb
1785  1: aabbbb
1786  2: aabbb
1787  3: aabb
1788  4: aab
1789  5: aa
1790
1791 /^[ab]{1,3}(ab*?|b)/O
1792     aabbbbb
1793  0: aabbbbb
1794  1: aabbbb
1795  2: aabbb
1796  3: aabb
1797  4: aab
1798  5: aa
1799
1800 /  (?: [\040\t] |  \(
1801 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1802 \)  )*                          # optional leading comment
1803 (?:    (?:
1804 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1805 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1806 |
1807 " (?:                      # opening quote...
1808 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1809 |                     #    or
1810 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1811 )* "  # closing quote
1812 )                    # initial word
1813 (?:  (?: [\040\t] |  \(
1814 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1815 \)  )*  \.  (?: [\040\t] |  \(
1816 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1817 \)  )*   (?:
1818 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1819 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1820 |
1821 " (?:                      # opening quote...
1822 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1823 |                     #    or
1824 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1825 )* "  # closing quote
1826 )  )* # further okay, if led by a period
1827 (?: [\040\t] |  \(
1828 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1829 \)  )*  @  (?: [\040\t] |  \(
1830 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1831 \)  )*    (?:
1832 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1833 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1834 |   \[                         # [
1835 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1836 \]                        #           ]
1837 )                           # initial subdomain
1838 (?:                                  #
1839 (?: [\040\t] |  \(
1840 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1841 \)  )*  \.                        # if led by a period...
1842 (?: [\040\t] |  \(
1843 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1844 \)  )*   (?:
1845 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1846 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1847 |   \[                         # [
1848 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1849 \]                        #           ]
1850 )                     #   ...further okay
1851 )*
1852 # address
1853 |                     #  or
1854 (?:
1855 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1856 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1857 |
1858 " (?:                      # opening quote...
1859 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1860 |                     #    or
1861 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1862 )* "  # closing quote
1863 )             # one word, optionally followed by....
1864 (?:
1865 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
1866 \(
1867 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1868 \)       |  # comments, or...
1869
1870 " (?:                      # opening quote...
1871 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1872 |                     #    or
1873 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1874 )* "  # closing quote
1875 # quoted strings
1876 )*
1877 <  (?: [\040\t] |  \(
1878 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1879 \)  )*                     # leading <
1880 (?:  @  (?: [\040\t] |  \(
1881 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1882 \)  )*    (?:
1883 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1884 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1885 |   \[                         # [
1886 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1887 \]                        #           ]
1888 )                           # initial subdomain
1889 (?:                                  #
1890 (?: [\040\t] |  \(
1891 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1892 \)  )*  \.                        # if led by a period...
1893 (?: [\040\t] |  \(
1894 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1895 \)  )*   (?:
1896 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1897 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1898 |   \[                         # [
1899 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1900 \]                        #           ]
1901 )                     #   ...further okay
1902 )*
1903
1904 (?:  (?: [\040\t] |  \(
1905 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1906 \)  )*  ,  (?: [\040\t] |  \(
1907 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1908 \)  )*  @  (?: [\040\t] |  \(
1909 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1910 \)  )*    (?:
1911 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1912 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1913 |   \[                         # [
1914 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1915 \]                        #           ]
1916 )                           # initial subdomain
1917 (?:                                  #
1918 (?: [\040\t] |  \(
1919 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1920 \)  )*  \.                        # if led by a period...
1921 (?: [\040\t] |  \(
1922 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1923 \)  )*   (?:
1924 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1925 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1926 |   \[                         # [
1927 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1928 \]                        #           ]
1929 )                     #   ...further okay
1930 )*
1931 )* # further okay, if led by comma
1932 :                                # closing colon
1933 (?: [\040\t] |  \(
1934 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1935 \)  )*  )? #       optional route
1936 (?:
1937 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1938 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1939 |
1940 " (?:                      # opening quote...
1941 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1942 |                     #    or
1943 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1944 )* "  # closing quote
1945 )                    # initial word
1946 (?:  (?: [\040\t] |  \(
1947 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1948 \)  )*  \.  (?: [\040\t] |  \(
1949 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1950 \)  )*   (?:
1951 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1952 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1953 |
1954 " (?:                      # opening quote...
1955 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1956 |                     #    or
1957 \\ [^\x80-\xff]           #   Escaped something (something != CR)
1958 )* "  # closing quote
1959 )  )* # further okay, if led by a period
1960 (?: [\040\t] |  \(
1961 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1962 \)  )*  @  (?: [\040\t] |  \(
1963 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1964 \)  )*    (?:
1965 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1966 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1967 |   \[                         # [
1968 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1969 \]                        #           ]
1970 )                           # initial subdomain
1971 (?:                                  #
1972 (?: [\040\t] |  \(
1973 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1974 \)  )*  \.                        # if led by a period...
1975 (?: [\040\t] |  \(
1976 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1977 \)  )*   (?:
1978 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1979 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1980 |   \[                         # [
1981 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1982 \]                        #           ]
1983 )                     #   ...further okay
1984 )*
1985 #       address spec
1986 (?: [\040\t] |  \(
1987 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1988 \)  )*  > #                  trailing >
1989 # name and address
1990 )  (?: [\040\t] |  \(
1991 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1992 \)  )*                       # optional trailing comment
1993 /x
1994     Alan Other <user\@dom.ain>
1995  0: Alan Other <user@dom.ain>
1996     <user\@dom.ain>
1997  0: user@dom.ain
1998  1: user@dom
1999     user\@dom.ain
2000  0: user@dom.ain
2001  1: user@dom
2002     \"A. Other\" <user.1234\@dom.ain> (a comment)
2003  0: "A. Other" <user.1234@dom.ain> (a comment)
2004  1: "A. Other" <user.1234@dom.ain> 
2005  2: "A. Other" <user.1234@dom.ain>
2006     A. Other <user.1234\@dom.ain> (a comment)
2007  0:  Other <user.1234@dom.ain> (a comment)
2008  1:  Other <user.1234@dom.ain> 
2009  2:  Other <user.1234@dom.ain>
2010     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2011  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2012  1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2013     A missing angle <user\@some.where
2014  0: user@some.where
2015  1: user@some
2016     *** Failers
2017 No match
2018     The quick brown fox
2019 No match
2020
2021 /[\040\t]*                    # Nab whitespace.
2022 (?:
2023 \(                              #  (
2024 [^\\\x80-\xff\n\015()] *                             #     normal*
2025 (?:                                 #       (
2026 (?:  \\ [^\x80-\xff]  |
2027 \(                            #  (
2028 [^\\\x80-\xff\n\015()] *                            #     normal*
2029 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2030 \)                           #                       )
2031 )    #         special
2032 [^\\\x80-\xff\n\015()] *                         #         normal*
2033 )*                                  #            )*
2034 \)                             #                )
2035 [\040\t]* )*    # If comment found, allow more spaces.
2036 # optional leading comment
2037 (?:
2038 (?:
2039 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2040 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2041 # Atom
2042 |                       #  or
2043 "                                     # "
2044 [^\\\x80-\xff\n\015"] *                            #   normal
2045 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2046 "                                     #        "
2047 # Quoted string
2048 )
2049 [\040\t]*                    # Nab whitespace.
2050 (?:
2051 \(                              #  (
2052 [^\\\x80-\xff\n\015()] *                             #     normal*
2053 (?:                                 #       (
2054 (?:  \\ [^\x80-\xff]  |
2055 \(                            #  (
2056 [^\\\x80-\xff\n\015()] *                            #     normal*
2057 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2058 \)                           #                       )
2059 )    #         special
2060 [^\\\x80-\xff\n\015()] *                         #         normal*
2061 )*                                  #            )*
2062 \)                             #                )
2063 [\040\t]* )*    # If comment found, allow more spaces.
2064 (?:
2065 \.
2066 [\040\t]*                    # Nab whitespace.
2067 (?:
2068 \(                              #  (
2069 [^\\\x80-\xff\n\015()] *                             #     normal*
2070 (?:                                 #       (
2071 (?:  \\ [^\x80-\xff]  |
2072 \(                            #  (
2073 [^\\\x80-\xff\n\015()] *                            #     normal*
2074 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2075 \)                           #                       )
2076 )    #         special
2077 [^\\\x80-\xff\n\015()] *                         #         normal*
2078 )*                                  #            )*
2079 \)                             #                )
2080 [\040\t]* )*    # If comment found, allow more spaces.
2081 (?:
2082 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2083 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2084 # Atom
2085 |                       #  or
2086 "                                     # "
2087 [^\\\x80-\xff\n\015"] *                            #   normal
2088 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2089 "                                     #        "
2090 # Quoted string
2091 )
2092 [\040\t]*                    # Nab whitespace.
2093 (?:
2094 \(                              #  (
2095 [^\\\x80-\xff\n\015()] *                             #     normal*
2096 (?:                                 #       (
2097 (?:  \\ [^\x80-\xff]  |
2098 \(                            #  (
2099 [^\\\x80-\xff\n\015()] *                            #     normal*
2100 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2101 \)                           #                       )
2102 )    #         special
2103 [^\\\x80-\xff\n\015()] *                         #         normal*
2104 )*                                  #            )*
2105 \)                             #                )
2106 [\040\t]* )*    # If comment found, allow more spaces.
2107 # additional words
2108 )*
2109 @
2110 [\040\t]*                    # Nab whitespace.
2111 (?:
2112 \(                              #  (
2113 [^\\\x80-\xff\n\015()] *                             #     normal*
2114 (?:                                 #       (
2115 (?:  \\ [^\x80-\xff]  |
2116 \(                            #  (
2117 [^\\\x80-\xff\n\015()] *                            #     normal*
2118 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2119 \)                           #                       )
2120 )    #         special
2121 [^\\\x80-\xff\n\015()] *                         #         normal*
2122 )*                                  #            )*
2123 \)                             #                )
2124 [\040\t]* )*    # If comment found, allow more spaces.
2125 (?:
2126 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2127 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2128 |
2129 \[                            # [
2130 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2131 \]                           #           ]
2132 )
2133 [\040\t]*                    # Nab whitespace.
2134 (?:
2135 \(                              #  (
2136 [^\\\x80-\xff\n\015()] *                             #     normal*
2137 (?:                                 #       (
2138 (?:  \\ [^\x80-\xff]  |
2139 \(                            #  (
2140 [^\\\x80-\xff\n\015()] *                            #     normal*
2141 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2142 \)                           #                       )
2143 )    #         special
2144 [^\\\x80-\xff\n\015()] *                         #         normal*
2145 )*                                  #            )*
2146 \)                             #                )
2147 [\040\t]* )*    # If comment found, allow more spaces.
2148 # optional trailing comments
2149 (?:
2150 \.
2151 [\040\t]*                    # Nab whitespace.
2152 (?:
2153 \(                              #  (
2154 [^\\\x80-\xff\n\015()] *                             #     normal*
2155 (?:                                 #       (
2156 (?:  \\ [^\x80-\xff]  |
2157 \(                            #  (
2158 [^\\\x80-\xff\n\015()] *                            #     normal*
2159 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2160 \)                           #                       )
2161 )    #         special
2162 [^\\\x80-\xff\n\015()] *                         #         normal*
2163 )*                                  #            )*
2164 \)                             #                )
2165 [\040\t]* )*    # If comment found, allow more spaces.
2166 (?:
2167 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2168 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2169 |
2170 \[                            # [
2171 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2172 \]                           #           ]
2173 )
2174 [\040\t]*                    # Nab whitespace.
2175 (?:
2176 \(                              #  (
2177 [^\\\x80-\xff\n\015()] *                             #     normal*
2178 (?:                                 #       (
2179 (?:  \\ [^\x80-\xff]  |
2180 \(                            #  (
2181 [^\\\x80-\xff\n\015()] *                            #     normal*
2182 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2183 \)                           #                       )
2184 )    #         special
2185 [^\\\x80-\xff\n\015()] *                         #         normal*
2186 )*                                  #            )*
2187 \)                             #                )
2188 [\040\t]* )*    # If comment found, allow more spaces.
2189 # optional trailing comments
2190 )*
2191 # address
2192 |                             #  or
2193 (?:
2194 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2195 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2196 # Atom
2197 |                       #  or
2198 "                                     # "
2199 [^\\\x80-\xff\n\015"] *                            #   normal
2200 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2201 "                                     #        "
2202 # Quoted string
2203 )
2204 # leading word
2205 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
2206 (?:
2207 (?:
2208 \(                              #  (
2209 [^\\\x80-\xff\n\015()] *                             #     normal*
2210 (?:                                 #       (
2211 (?:  \\ [^\x80-\xff]  |
2212 \(                            #  (
2213 [^\\\x80-\xff\n\015()] *                            #     normal*
2214 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2215 \)                           #                       )
2216 )    #         special
2217 [^\\\x80-\xff\n\015()] *                         #         normal*
2218 )*                                  #            )*
2219 \)                             #                )
2220 |
2221 "                                     # "
2222 [^\\\x80-\xff\n\015"] *                            #   normal
2223 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2224 "                                     #        "
2225 ) # "special" comment or quoted string
2226 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
2227 )*
2228 <
2229 [\040\t]*                    # Nab whitespace.
2230 (?:
2231 \(                              #  (
2232 [^\\\x80-\xff\n\015()] *                             #     normal*
2233 (?:                                 #       (
2234 (?:  \\ [^\x80-\xff]  |
2235 \(                            #  (
2236 [^\\\x80-\xff\n\015()] *                            #     normal*
2237 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2238 \)                           #                       )
2239 )    #         special
2240 [^\\\x80-\xff\n\015()] *                         #         normal*
2241 )*                                  #            )*
2242 \)                             #                )
2243 [\040\t]* )*    # If comment found, allow more spaces.
2244 # <
2245 (?:
2246 @
2247 [\040\t]*                    # Nab whitespace.
2248 (?:
2249 \(                              #  (
2250 [^\\\x80-\xff\n\015()] *                             #     normal*
2251 (?:                                 #       (
2252 (?:  \\ [^\x80-\xff]  |
2253 \(                            #  (
2254 [^\\\x80-\xff\n\015()] *                            #     normal*
2255 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2256 \)                           #                       )
2257 )    #         special
2258 [^\\\x80-\xff\n\015()] *                         #         normal*
2259 )*                                  #            )*
2260 \)                             #                )
2261 [\040\t]* )*    # If comment found, allow more spaces.
2262 (?:
2263 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2264 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2265 |
2266 \[                            # [
2267 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2268 \]                           #           ]
2269 )
2270 [\040\t]*                    # Nab whitespace.
2271 (?:
2272 \(                              #  (
2273 [^\\\x80-\xff\n\015()] *                             #     normal*
2274 (?:                                 #       (
2275 (?:  \\ [^\x80-\xff]  |
2276 \(                            #  (
2277 [^\\\x80-\xff\n\015()] *                            #     normal*
2278 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2279 \)                           #                       )
2280 )    #         special
2281 [^\\\x80-\xff\n\015()] *                         #         normal*
2282 )*                                  #            )*
2283 \)                             #                )
2284 [\040\t]* )*    # If comment found, allow more spaces.
2285 # optional trailing comments
2286 (?:
2287 \.
2288 [\040\t]*                    # Nab whitespace.
2289 (?:
2290 \(                              #  (
2291 [^\\\x80-\xff\n\015()] *                             #     normal*
2292 (?:                                 #       (
2293 (?:  \\ [^\x80-\xff]  |
2294 \(                            #  (
2295 [^\\\x80-\xff\n\015()] *                            #     normal*
2296 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2297 \)                           #                       )
2298 )    #         special
2299 [^\\\x80-\xff\n\015()] *                         #         normal*
2300 )*                                  #            )*
2301 \)                             #                )
2302 [\040\t]* )*    # If comment found, allow more spaces.
2303 (?:
2304 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2305 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2306 |
2307 \[                            # [
2308 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2309 \]                           #           ]
2310 )
2311 [\040\t]*                    # Nab whitespace.
2312 (?:
2313 \(                              #  (
2314 [^\\\x80-\xff\n\015()] *                             #     normal*
2315 (?:                                 #       (
2316 (?:  \\ [^\x80-\xff]  |
2317 \(                            #  (
2318 [^\\\x80-\xff\n\015()] *                            #     normal*
2319 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2320 \)                           #                       )
2321 )    #         special
2322 [^\\\x80-\xff\n\015()] *                         #         normal*
2323 )*                                  #            )*
2324 \)                             #                )
2325 [\040\t]* )*    # If comment found, allow more spaces.
2326 # optional trailing comments
2327 )*
2328 (?: ,
2329 [\040\t]*                    # Nab whitespace.
2330 (?:
2331 \(                              #  (
2332 [^\\\x80-\xff\n\015()] *                             #     normal*
2333 (?:                                 #       (
2334 (?:  \\ [^\x80-\xff]  |
2335 \(                            #  (
2336 [^\\\x80-\xff\n\015()] *                            #     normal*
2337 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2338 \)                           #                       )
2339 )    #         special
2340 [^\\\x80-\xff\n\015()] *                         #         normal*
2341 )*                                  #            )*
2342 \)                             #                )
2343 [\040\t]* )*    # If comment found, allow more spaces.
2344 @
2345 [\040\t]*                    # Nab whitespace.
2346 (?:
2347 \(                              #  (
2348 [^\\\x80-\xff\n\015()] *                             #     normal*
2349 (?:                                 #       (
2350 (?:  \\ [^\x80-\xff]  |
2351 \(                            #  (
2352 [^\\\x80-\xff\n\015()] *                            #     normal*
2353 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2354 \)                           #                       )
2355 )    #         special
2356 [^\\\x80-\xff\n\015()] *                         #         normal*
2357 )*                                  #            )*
2358 \)                             #                )
2359 [\040\t]* )*    # If comment found, allow more spaces.
2360 (?:
2361 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2362 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2363 |
2364 \[                            # [
2365 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2366 \]                           #           ]
2367 )
2368 [\040\t]*                    # Nab whitespace.
2369 (?:
2370 \(                              #  (
2371 [^\\\x80-\xff\n\015()] *                             #     normal*
2372 (?:                                 #       (
2373 (?:  \\ [^\x80-\xff]  |
2374 \(                            #  (
2375 [^\\\x80-\xff\n\015()] *                            #     normal*
2376 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2377 \)                           #                       )
2378 )    #         special
2379 [^\\\x80-\xff\n\015()] *                         #         normal*
2380 )*                                  #            )*
2381 \)                             #                )
2382 [\040\t]* )*    # If comment found, allow more spaces.
2383 # optional trailing comments
2384 (?:
2385 \.
2386 [\040\t]*                    # Nab whitespace.
2387 (?:
2388 \(                              #  (
2389 [^\\\x80-\xff\n\015()] *                             #     normal*
2390 (?:                                 #       (
2391 (?:  \\ [^\x80-\xff]  |
2392 \(                            #  (
2393 [^\\\x80-\xff\n\015()] *                            #     normal*
2394 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2395 \)                           #                       )
2396 )    #         special
2397 [^\\\x80-\xff\n\015()] *                         #         normal*
2398 )*                                  #            )*
2399 \)                             #                )
2400 [\040\t]* )*    # If comment found, allow more spaces.
2401 (?:
2402 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2403 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2404 |
2405 \[                            # [
2406 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2407 \]                           #           ]
2408 )
2409 [\040\t]*                    # Nab whitespace.
2410 (?:
2411 \(                              #  (
2412 [^\\\x80-\xff\n\015()] *                             #     normal*
2413 (?:                                 #       (
2414 (?:  \\ [^\x80-\xff]  |
2415 \(                            #  (
2416 [^\\\x80-\xff\n\015()] *                            #     normal*
2417 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2418 \)                           #                       )
2419 )    #         special
2420 [^\\\x80-\xff\n\015()] *                         #         normal*
2421 )*                                  #            )*
2422 \)                             #                )
2423 [\040\t]* )*    # If comment found, allow more spaces.
2424 # optional trailing comments
2425 )*
2426 )*  # additional domains
2427 :
2428 [\040\t]*                    # Nab whitespace.
2429 (?:
2430 \(                              #  (
2431 [^\\\x80-\xff\n\015()] *                             #     normal*
2432 (?:                                 #       (
2433 (?:  \\ [^\x80-\xff]  |
2434 \(                            #  (
2435 [^\\\x80-\xff\n\015()] *                            #     normal*
2436 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2437 \)                           #                       )
2438 )    #         special
2439 [^\\\x80-\xff\n\015()] *                         #         normal*
2440 )*                                  #            )*
2441 \)                             #                )
2442 [\040\t]* )*    # If comment found, allow more spaces.
2443 # optional trailing comments
2444 )?     #       optional route
2445 (?:
2446 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2447 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2448 # Atom
2449 |                       #  or
2450 "                                     # "
2451 [^\\\x80-\xff\n\015"] *                            #   normal
2452 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2453 "                                     #        "
2454 # Quoted string
2455 )
2456 [\040\t]*                    # Nab whitespace.
2457 (?:
2458 \(                              #  (
2459 [^\\\x80-\xff\n\015()] *                             #     normal*
2460 (?:                                 #       (
2461 (?:  \\ [^\x80-\xff]  |
2462 \(                            #  (
2463 [^\\\x80-\xff\n\015()] *                            #     normal*
2464 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2465 \)                           #                       )
2466 )    #         special
2467 [^\\\x80-\xff\n\015()] *                         #         normal*
2468 )*                                  #            )*
2469 \)                             #                )
2470 [\040\t]* )*    # If comment found, allow more spaces.
2471 (?:
2472 \.
2473 [\040\t]*                    # Nab whitespace.
2474 (?:
2475 \(                              #  (
2476 [^\\\x80-\xff\n\015()] *                             #     normal*
2477 (?:                                 #       (
2478 (?:  \\ [^\x80-\xff]  |
2479 \(                            #  (
2480 [^\\\x80-\xff\n\015()] *                            #     normal*
2481 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2482 \)                           #                       )
2483 )    #         special
2484 [^\\\x80-\xff\n\015()] *                         #         normal*
2485 )*                                  #            )*
2486 \)                             #                )
2487 [\040\t]* )*    # If comment found, allow more spaces.
2488 (?:
2489 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2490 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2491 # Atom
2492 |                       #  or
2493 "                                     # "
2494 [^\\\x80-\xff\n\015"] *                            #   normal
2495 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
2496 "                                     #        "
2497 # Quoted string
2498 )
2499 [\040\t]*                    # Nab whitespace.
2500 (?:
2501 \(                              #  (
2502 [^\\\x80-\xff\n\015()] *                             #     normal*
2503 (?:                                 #       (
2504 (?:  \\ [^\x80-\xff]  |
2505 \(                            #  (
2506 [^\\\x80-\xff\n\015()] *                            #     normal*
2507 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2508 \)                           #                       )
2509 )    #         special
2510 [^\\\x80-\xff\n\015()] *                         #         normal*
2511 )*                                  #            )*
2512 \)                             #                )
2513 [\040\t]* )*    # If comment found, allow more spaces.
2514 # additional words
2515 )*
2516 @
2517 [\040\t]*                    # Nab whitespace.
2518 (?:
2519 \(                              #  (
2520 [^\\\x80-\xff\n\015()] *                             #     normal*
2521 (?:                                 #       (
2522 (?:  \\ [^\x80-\xff]  |
2523 \(                            #  (
2524 [^\\\x80-\xff\n\015()] *                            #     normal*
2525 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2526 \)                           #                       )
2527 )    #         special
2528 [^\\\x80-\xff\n\015()] *                         #         normal*
2529 )*                                  #            )*
2530 \)                             #                )
2531 [\040\t]* )*    # If comment found, allow more spaces.
2532 (?:
2533 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2534 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2535 |
2536 \[                            # [
2537 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2538 \]                           #           ]
2539 )
2540 [\040\t]*                    # Nab whitespace.
2541 (?:
2542 \(                              #  (
2543 [^\\\x80-\xff\n\015()] *                             #     normal*
2544 (?:                                 #       (
2545 (?:  \\ [^\x80-\xff]  |
2546 \(                            #  (
2547 [^\\\x80-\xff\n\015()] *                            #     normal*
2548 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2549 \)                           #                       )
2550 )    #         special
2551 [^\\\x80-\xff\n\015()] *                         #         normal*
2552 )*                                  #            )*
2553 \)                             #                )
2554 [\040\t]* )*    # If comment found, allow more spaces.
2555 # optional trailing comments
2556 (?:
2557 \.
2558 [\040\t]*                    # Nab whitespace.
2559 (?:
2560 \(                              #  (
2561 [^\\\x80-\xff\n\015()] *                             #     normal*
2562 (?:                                 #       (
2563 (?:  \\ [^\x80-\xff]  |
2564 \(                            #  (
2565 [^\\\x80-\xff\n\015()] *                            #     normal*
2566 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2567 \)                           #                       )
2568 )    #         special
2569 [^\\\x80-\xff\n\015()] *                         #         normal*
2570 )*                                  #            )*
2571 \)                             #                )
2572 [\040\t]* )*    # If comment found, allow more spaces.
2573 (?:
2574 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2575 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2576 |
2577 \[                            # [
2578 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
2579 \]                           #           ]
2580 )
2581 [\040\t]*                    # Nab whitespace.
2582 (?:
2583 \(                              #  (
2584 [^\\\x80-\xff\n\015()] *                             #     normal*
2585 (?:                                 #       (
2586 (?:  \\ [^\x80-\xff]  |
2587 \(                            #  (
2588 [^\\\x80-\xff\n\015()] *                            #     normal*
2589 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
2590 \)                           #                       )
2591 )    #         special
2592 [^\\\x80-\xff\n\015()] *                         #         normal*
2593 )*                                  #            )*
2594 \)                             #                )
2595 [\040\t]* )*    # If comment found, allow more spaces.
2596 # optional trailing comments
2597 )*
2598 #       address spec
2599 >                    #                 >
2600 # name and address
2601 )
2602 /x
2603     Alan Other <user\@dom.ain>
2604  0: Alan Other <user@dom.ain>
2605     <user\@dom.ain>
2606  0: user@dom.ain
2607  1: user@dom
2608     user\@dom.ain
2609  0: user@dom.ain
2610  1: user@dom
2611     \"A. Other\" <user.1234\@dom.ain> (a comment)
2612  0: "A. Other" <user.1234@dom.ain>
2613     A. Other <user.1234\@dom.ain> (a comment)
2614  0:  Other <user.1234@dom.ain>
2615     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
2616  0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
2617  1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
2618     A missing angle <user\@some.where
2619  0: user@some.where
2620  1: user@some
2621     *** Failers
2622 No match
2623     The quick brown fox
2624 No match
2625
2626 /abc\0def\00pqr\000xyz\0000AB/
2627     abc\0def\00pqr\000xyz\0000AB
2628  0: abc\x00def\x00pqr\x00xyz\x000AB
2629     abc456 abc\0def\00pqr\000xyz\0000ABCDE
2630  0: abc\x00def\x00pqr\x00xyz\x000AB
2631
2632 /abc\x0def\x00pqr\x000xyz\x0000AB/
2633     abc\x0def\x00pqr\x000xyz\x0000AB
2634  0: abc\x0def\x00pqr\x000xyz\x0000AB
2635     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
2636  0: abc\x0def\x00pqr\x000xyz\x0000AB
2637
2638 /^[\000-\037]/
2639     \0A
2640  0: \x00
2641     \01B
2642  0: \x01
2643     \037C
2644  0: \x1f
2645
2646 /\0*/
2647     \0\0\0\0
2648  0: \x00\x00\x00\x00
2649
2650 /A\x0{2,3}Z/
2651     The A\x0\x0Z
2652  0: A\x00\x00Z
2653     An A\0\x0\0Z
2654  0: A\x00\x00\x00Z
2655     *** Failers
2656 No match
2657     A\0Z
2658 No match
2659     A\0\x0\0\x0Z
2660 No match
2661
2662 /^\s/
2663     \040abc
2664  0:  
2665     \x0cabc
2666  0: \x0c
2667     \nabc
2668  0: \x0a
2669     \rabc
2670  0: \x0d
2671     \tabc
2672  0: \x09
2673     *** Failers
2674 No match
2675     abc
2676 No match
2677
2678 /^a     b
2679     \f  c/x
2680     abc
2681  0: abc
2682
2683 /ab{1,3}bc/
2684     abbbbc
2685  0: abbbbc
2686     abbbc
2687  0: abbbc
2688     abbc
2689  0: abbc
2690     *** Failers
2691 No match
2692     abc
2693 No match
2694     abbbbbc
2695 No match
2696
2697 /([^.]*)\.([^:]*):[T ]+(.*)/
2698     track1.title:TBlah blah blah
2699  0: track1.title:TBlah blah blah
2700
2701 /([^.]*)\.([^:]*):[T ]+(.*)/i
2702     track1.title:TBlah blah blah
2703  0: track1.title:TBlah blah blah
2704
2705 /([^.]*)\.([^:]*):[t ]+(.*)/i
2706     track1.title:TBlah blah blah
2707  0: track1.title:TBlah blah blah
2708
2709 /^[W-c]+$/
2710     WXY_^abc
2711  0: WXY_^abc
2712     *** Failers
2713 No match
2714     wxy
2715 No match
2716
2717 /^[W-c]+$/i
2718     WXY_^abc
2719  0: WXY_^abc
2720     wxy_^ABC
2721  0: wxy_^ABC
2722
2723 /^[\x3f-\x5F]+$/i
2724     WXY_^abc
2725  0: WXY_^abc
2726     wxy_^ABC
2727  0: wxy_^ABC
2728
2729 /^abc$/m
2730     abc
2731  0: abc
2732     qqq\nabc
2733  0: abc
2734     abc\nzzz
2735  0: abc
2736     qqq\nabc\nzzz
2737  0: abc
2738
2739 /^abc$/
2740     abc
2741  0: abc
2742     *** Failers
2743 No match
2744     qqq\nabc
2745 No match
2746     abc\nzzz
2747 No match
2748     qqq\nabc\nzzz
2749 No match
2750
2751 /\Aabc\Z/m
2752     abc
2753  0: abc
2754     abc\n 
2755  0: abc
2756     *** Failers
2757 No match
2758     qqq\nabc
2759 No match
2760     abc\nzzz
2761 No match
2762     qqq\nabc\nzzz
2763 No match
2764     
2765 /\A(.)*\Z/s
2766     abc\ndef
2767  0: abc\x0adef
2768
2769 /\A(.)*\Z/m
2770     *** Failers
2771  0: *** Failers
2772     abc\ndef
2773 No match
2774
2775 /(?:b)|(?::+)/
2776     b::c
2777  0: b
2778     c::b
2779  0: ::
2780
2781 /[-az]+/
2782     az-
2783  0: az-
2784     *** Failers
2785  0: a
2786     b
2787 No match
2788
2789 /[az-]+/
2790     za-
2791  0: za-
2792     *** Failers
2793  0: a
2794     b
2795 No match
2796
2797 /[a\-z]+/
2798     a-z
2799  0: a-z
2800     *** Failers
2801  0: a
2802     b
2803 No match
2804
2805 /[a-z]+/
2806     abcdxyz
2807  0: abcdxyz
2808
2809 /[\d-]+/
2810     12-34
2811  0: 12-34
2812     *** Failers
2813 No match
2814     aaa
2815 No match
2816
2817 /[\d-z]+/
2818     12-34z
2819  0: 12-34z
2820     *** Failers
2821 No match
2822     aaa
2823 No match
2824
2825 /\x5c/
2826     \\
2827  0: \
2828
2829 /\x20Z/
2830     the Zoo
2831  0:  Z
2832     *** Failers
2833 No match
2834     Zulu
2835 No match
2836
2837 /ab{3cd/
2838     ab{3cd
2839  0: ab{3cd
2840
2841 /ab{3,cd/
2842     ab{3,cd
2843  0: ab{3,cd
2844
2845 /ab{3,4a}cd/
2846     ab{3,4a}cd
2847  0: ab{3,4a}cd
2848
2849 /{4,5a}bc/
2850     {4,5a}bc
2851  0: {4,5a}bc
2852
2853 /^a.b/<lf>
2854     a\rb
2855  0: a\x0db
2856     *** Failers
2857 No match
2858     a\nb
2859 No match
2860
2861 /abc$/
2862     abc
2863  0: abc
2864     abc\n
2865  0: abc
2866     *** Failers
2867 No match
2868     abc\ndef
2869 No match
2870
2871 /(abc)\123/
2872     abc\x53
2873  0: abcS
2874
2875 /(abc)\223/
2876     abc\x93
2877  0: abc\x93
2878
2879 /(abc)\323/
2880     abc\xd3
2881  0: abc\xd3
2882
2883 /(abc)\100/
2884     abc\x40
2885  0: abc@
2886     abc\100
2887  0: abc@
2888
2889 /(abc)\1000/
2890     abc\x400
2891  0: abc@0
2892     abc\x40\x30
2893  0: abc@0
2894     abc\1000
2895  0: abc@0
2896     abc\100\x30
2897  0: abc@0
2898     abc\100\060
2899  0: abc@0
2900     abc\100\60
2901  0: abc@0
2902
2903 /^A\8B\9C$/
2904     A8B9C
2905  0: A8B9C
2906     *** Failers
2907 No match
2908     A\08B\09C  
2909 No match
2910     
2911 /^[A\8B\9C]+$/
2912     A8B9C
2913  0: A8B9C
2914     *** Failers 
2915 No match
2916     A8B9C\x00
2917 No match
2918     
2919 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2920     abcdefghijk\12S
2921  0: abcdefghijk\x0aS
2922
2923 /ab\idef/
2924     abidef
2925  0: abidef
2926
2927 /a{0}bc/
2928     bc
2929  0: bc
2930
2931 /(a|(bc)){0,0}?xyz/
2932     xyz
2933  0: xyz
2934
2935 /abc[\10]de/
2936     abc\010de
2937  0: abc\x08de
2938
2939 /abc[\1]de/
2940     abc\1de
2941  0: abc\x01de
2942
2943 /(abc)[\1]de/
2944     abc\1de
2945  0: abc\x01de
2946
2947 /(?s)a.b/
2948     a\nb
2949  0: a\x0ab
2950
2951 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2952     baNOTccccd
2953  0: baNOTcccc
2954  1: baNOTccc
2955  2: baNOTcc
2956  3: baNOTc
2957     baNOTcccd
2958  0: baNOTccc
2959  1: baNOTcc
2960  2: baNOTc
2961     baNOTccd
2962  0: baNOTcc
2963  1: baNOTc
2964     bacccd
2965  0: baccc
2966     *** Failers
2967  0: *** Failers
2968  1: *** Failer
2969  2: *** Faile
2970  3: *** Fail
2971  4: *** Fai
2972  5: *** Fa
2973     anything
2974 No match
2975     b\bc   
2976 No match
2977     baccd
2978 No match
2979
2980 /[^a]/
2981     Abc
2982  0: A
2983   
2984 /[^a]/i
2985     Abc 
2986  0: b
2987
2988 /[^a]+/
2989     AAAaAbc
2990  0: AAA
2991   
2992 /[^a]+/i
2993     AAAaAbc 
2994  0: bc
2995
2996 /[^a]+/
2997     bbb\nccc
2998  0: bbb\x0accc
2999    
3000 /[^k]$/
3001     abc
3002  0: c
3003     *** Failers
3004  0: s
3005     abk   
3006 No match
3007    
3008 /[^k]{2,3}$/
3009     abc
3010  0: abc
3011     kbc
3012  0: bc
3013     kabc 
3014  0: abc
3015     *** Failers
3016  0: ers
3017     abk
3018 No match
3019     akb
3020 No match
3021     akk 
3022 No match
3023
3024 /^\d{8,}\@.+[^k]$/
3025     12345678\@a.b.c.d
3026  0: 12345678@a.b.c.d
3027     123456789\@x.y.z
3028  0: 123456789@x.y.z
3029     *** Failers
3030 No match
3031     12345678\@x.y.uk
3032 No match
3033     1234567\@a.b.c.d       
3034 No match
3035
3036 /[^a]/
3037     aaaabcd
3038  0: b
3039     aaAabcd 
3040  0: A
3041
3042 /[^a]/i
3043     aaaabcd
3044  0: b
3045     aaAabcd 
3046  0: b
3047
3048 /[^az]/
3049     aaaabcd
3050  0: b
3051     aaAabcd 
3052  0: A
3053
3054 /[^az]/i
3055     aaaabcd
3056  0: b
3057     aaAabcd 
3058  0: b
3059
3060 /\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/
3061  \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
3062  0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
3063
3064 /P[^*]TAIRE[^*]{1,6}?LL/
3065     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
3066  0: PSTAIREISLL
3067
3068 /P[^*]TAIRE[^*]{1,}?LL/
3069     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
3070  0: PSTAIREISLL
3071
3072 /(\.\d\d[1-9]?)\d+/
3073     1.230003938
3074  0: .230003938
3075     1.875000282   
3076  0: .875000282
3077     1.235  
3078  0: .235
3079                   
3080 /(\.\d\d((?=0)|\d(?=\d)))/
3081     1.230003938      
3082  0: .230
3083  1: .23
3084     1.875000282
3085  0: .875
3086     *** Failers 
3087 No match
3088     1.235 
3089 No match
3090     
3091 /a(?)b/
3092     ab 
3093  0: ab
3094  
3095 /\b(foo)\s+(\w+)/i
3096     Food is on the foo table
3097  0: foo table
3098     
3099 /foo(.*)bar/
3100     The food is under the bar in the barn.
3101  0: food is under the bar in the bar
3102  1: food is under the bar
3103     
3104 /foo(.*?)bar/  
3105     The food is under the bar in the barn.
3106  0: food is under the bar in the bar
3107  1: food is under the bar
3108
3109 /(.*)(\d*)/O
3110     I have 2 numbers: 53147
3111 Matched, but offsets vector is too small to show all matches
3112  0: I have 2 numbers: 53147
3113  1: I have 2 numbers: 5314
3114  2: I have 2 numbers: 531
3115  3: I have 2 numbers: 53
3116  4: I have 2 numbers: 5
3117  5: I have 2 numbers: 
3118  6: I have 2 numbers:
3119  7: I have 2 numbers
3120  8: I have 2 number
3121  9: I have 2 numbe
3122 10: I have 2 numb
3123 11: I have 2 num
3124 12: I have 2 nu
3125 13: I have 2 n
3126 14: I have 2 
3127 15: I have 2
3128 16: I have 
3129 17: I have
3130 18: I hav
3131 19: I ha
3132 20: I h
3133 21: I 
3134     
3135 /(.*)(\d+)/
3136     I have 2 numbers: 53147
3137  0: I have 2 numbers: 53147
3138  1: I have 2
3139  
3140 /(.*?)(\d*)/O
3141     I have 2 numbers: 53147
3142 Matched, but offsets vector is too small to show all matches
3143  0: I have 2 numbers: 53147
3144  1: I have 2 numbers: 5314
3145  2: I have 2 numbers: 531
3146  3: I have 2 numbers: 53
3147  4: I have 2 numbers: 5
3148  5: I have 2 numbers: 
3149  6: I have 2 numbers:
3150  7: I have 2 numbers
3151  8: I have 2 number
3152  9: I have 2 numbe
3153 10: I have 2 numb
3154 11: I have 2 num
3155 12: I have 2 nu
3156 13: I have 2 n
3157 14: I have 2 
3158 15: I have 2
3159 16: I have 
3160 17: I have
3161 18: I hav
3162 19: I ha
3163 20: I h
3164 21: I 
3165
3166 /(.*?)(\d+)/
3167     I have 2 numbers: 53147
3168  0: I have 2 numbers: 53147
3169  1: I have 2
3170
3171 /(.*)(\d+)$/
3172     I have 2 numbers: 53147
3173  0: I have 2 numbers: 53147
3174
3175 /(.*?)(\d+)$/
3176     I have 2 numbers: 53147
3177  0: I have 2 numbers: 53147
3178
3179 /(.*)\b(\d+)$/
3180     I have 2 numbers: 53147
3181  0: I have 2 numbers: 53147
3182
3183 /(.*\D)(\d+)$/
3184     I have 2 numbers: 53147
3185  0: I have 2 numbers: 53147
3186
3187 /^\D*(?!123)/
3188     ABC123
3189  0: AB
3190  1: A
3191  2: 
3192      
3193 /^(\D*)(?=\d)(?!123)/
3194     ABC445
3195  0: ABC
3196     *** Failers
3197 No match
3198     ABC123
3199 No match
3200     
3201 /^[W-]46]/
3202     W46]789 
3203  0: W46]
3204     -46]789
3205  0: -46]
3206     *** Failers
3207 No match
3208     Wall
3209 No match
3210     Zebra
3211 No match
3212     42
3213 No match
3214     [abcd] 
3215 No match
3216     ]abcd[
3217 No match
3218        
3219 /^[W-\]46]/
3220     W46]789 
3221  0: W
3222     Wall
3223  0: W
3224     Zebra
3225  0: Z
3226     Xylophone  
3227  0: X
3228     42
3229  0: 4
3230     [abcd] 
3231  0: [
3232     ]abcd[
3233  0: ]
3234     \\backslash 
3235  0: \
3236     *** Failers
3237 No match
3238     -46]789
3239 No match
3240     well
3241 No match
3242     
3243 /\d\d\/\d\d\/\d\d\d\d/
3244     01/01/2000
3245  0: 01/01/2000
3246
3247 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
3248   word cat dog elephant mussel cow horse canary baboon snake shark otherword
3249  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
3250   word cat dog elephant mussel cow horse canary baboon snake shark
3251 No match
3252
3253 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
3254   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
3255 No match
3256
3257 /^(a){0,0}/
3258     bcd
3259  0: 
3260     abc
3261  0: 
3262     aab     
3263  0: 
3264
3265 /^(a){0,1}/
3266     bcd
3267  0: 
3268     abc
3269  0: a
3270  1: 
3271     aab  
3272  0: a
3273  1: 
3274
3275 /^(a){0,2}/
3276     bcd
3277  0: 
3278     abc
3279  0: a
3280  1: 
3281     aab  
3282  0: aa
3283  1: a
3284  2: 
3285
3286 /^(a){0,3}/
3287     bcd
3288  0: 
3289     abc
3290  0: a
3291  1: 
3292     aab
3293  0: aa
3294  1: a
3295  2: 
3296     aaa   
3297  0: aaa
3298  1: aa
3299  2: a
3300  3: 
3301
3302 /^(a){0,}/
3303     bcd
3304  0: 
3305     abc
3306  0: a
3307  1: 
3308     aab
3309  0: aa
3310  1: a
3311  2: 
3312     aaa
3313  0: aaa
3314  1: aa
3315  2: a
3316  3: 
3317     aaaaaaaa    
3318  0: aaaaaaaa
3319  1: aaaaaaa
3320  2: aaaaaa
3321  3: aaaaa
3322  4: aaaa
3323  5: aaa
3324  6: aa
3325  7: a
3326  8: 
3327
3328 /^(a){1,1}/
3329     bcd
3330 No match
3331     abc
3332  0: a
3333     aab  
3334  0: a
3335
3336 /^(a){1,2}/
3337     bcd
3338 No match
3339     abc
3340  0: a
3341     aab  
3342  0: aa
3343  1: a
3344
3345 /^(a){1,3}/
3346     bcd
3347 No match
3348     abc
3349  0: a
3350     aab
3351  0: aa
3352  1: a
3353     aaa   
3354  0: aaa
3355  1: aa
3356  2: a
3357
3358 /^(a){1,}/
3359     bcd
3360 No match
3361     abc
3362  0: a
3363     aab
3364  0: aa
3365  1: a
3366     aaa
3367  0: aaa
3368  1: aa
3369  2: a
3370     aaaaaaaa    
3371  0: aaaaaaaa
3372  1: aaaaaaa
3373  2: aaaaaa
3374  3: aaaaa
3375  4: aaaa
3376  5: aaa
3377  6: aa
3378  7: a
3379
3380 /.*\.gif/
3381     borfle\nbib.gif\nno
3382  0: bib.gif
3383
3384 /.{0,}\.gif/
3385     borfle\nbib.gif\nno
3386  0: bib.gif
3387
3388 /.*\.gif/m
3389     borfle\nbib.gif\nno
3390  0: bib.gif
3391
3392 /.*\.gif/s
3393     borfle\nbib.gif\nno
3394  0: borfle\x0abib.gif
3395
3396 /.*\.gif/ms
3397     borfle\nbib.gif\nno
3398  0: borfle\x0abib.gif
3399     
3400 /.*$/
3401     borfle\nbib.gif\nno
3402  0: no
3403
3404 /.*$/m
3405     borfle\nbib.gif\nno
3406  0: borfle
3407
3408 /.*$/s
3409     borfle\nbib.gif\nno
3410  0: borfle\x0abib.gif\x0ano
3411
3412 /.*$/ms
3413     borfle\nbib.gif\nno
3414  0: borfle\x0abib.gif\x0ano
3415  1: borfle\x0abib.gif
3416  2: borfle
3417     
3418 /.*$/
3419     borfle\nbib.gif\nno\n
3420  0: no
3421
3422 /.*$/m
3423     borfle\nbib.gif\nno\n
3424  0: borfle
3425
3426 /.*$/s
3427     borfle\nbib.gif\nno\n
3428  0: borfle\x0abib.gif\x0ano\x0a
3429  1: borfle\x0abib.gif\x0ano
3430
3431 /.*$/ms
3432     borfle\nbib.gif\nno\n
3433  0: borfle\x0abib.gif\x0ano\x0a
3434  1: borfle\x0abib.gif\x0ano
3435  2: borfle\x0abib.gif
3436  3: borfle
3437     
3438 /(.*X|^B)/
3439     abcde\n1234Xyz
3440  0: 1234X
3441     BarFoo 
3442  0: B
3443     *** Failers
3444 No match
3445     abcde\nBar  
3446 No match
3447
3448 /(.*X|^B)/m
3449     abcde\n1234Xyz
3450  0: 1234X
3451     BarFoo 
3452  0: B
3453     abcde\nBar  
3454  0: B
3455
3456 /(.*X|^B)/s
3457     abcde\n1234Xyz
3458  0: abcde\x0a1234X
3459     BarFoo 
3460  0: B
3461     *** Failers
3462 No match
3463     abcde\nBar  
3464 No match
3465
3466 /(.*X|^B)/ms
3467     abcde\n1234Xyz
3468  0: abcde\x0a1234X
3469     BarFoo 
3470  0: B
3471     abcde\nBar  
3472  0: B
3473
3474 /(?s)(.*X|^B)/
3475     abcde\n1234Xyz
3476  0: abcde\x0a1234X
3477     BarFoo 
3478  0: B
3479     *** Failers 
3480 No match
3481     abcde\nBar  
3482 No match
3483
3484 /(?s:.*X|^B)/
3485     abcde\n1234Xyz
3486  0: abcde\x0a1234X
3487     BarFoo 
3488  0: B
3489     *** Failers 
3490 No match
3491     abcde\nBar  
3492 No match
3493
3494 /^.*B/
3495     **** Failers
3496 No match
3497     abc\nB
3498 No match
3499      
3500 /(?s)^.*B/
3501     abc\nB
3502  0: abc\x0aB
3503
3504 /(?m)^.*B/
3505     abc\nB
3506  0: B
3507      
3508 /(?ms)^.*B/
3509     abc\nB
3510  0: abc\x0aB
3511
3512 /(?ms)^B/
3513     abc\nB
3514  0: B
3515
3516 /(?s)B$/
3517     B\n
3518  0: B
3519
3520 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
3521     123456654321
3522  0: 123456654321
3523   
3524 /^\d\d\d\d\d\d\d\d\d\d\d\d/
3525     123456654321 
3526  0: 123456654321
3527
3528 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
3529     123456654321
3530  0: 123456654321
3531   
3532 /^[abc]{12}/
3533     abcabcabcabc
3534  0: abcabcabcabc
3535     
3536 /^[a-c]{12}/
3537     abcabcabcabc
3538  0: abcabcabcabc
3539     
3540 /^(a|b|c){12}/
3541     abcabcabcabc 
3542  0: abcabcabcabc
3543
3544 /^[abcdefghijklmnopqrstuvwxy0123456789]/
3545     n
3546  0: n
3547     *** Failers 
3548 No match
3549     z 
3550 No match
3551
3552 /abcde{0,0}/
3553     abcd
3554  0: abcd
3555     *** Failers
3556 No match
3557     abce  
3558 No match
3559
3560 /ab[cd]{0,0}e/
3561     abe
3562  0: abe
3563     *** Failers
3564 No match
3565     abcde 
3566 No match
3567     
3568 /ab(c){0,0}d/
3569     abd
3570  0: abd
3571     *** Failers
3572 No match
3573     abcd   
3574 No match
3575
3576 /a(b*)/
3577     a
3578  0: a
3579     ab
3580  0: ab
3581     abbbb
3582  0: abbbb
3583     *** Failers
3584  0: a
3585     bbbbb    
3586 No match
3587     
3588 /ab\d{0}e/
3589     abe
3590  0: abe
3591     *** Failers
3592 No match
3593     ab1e   
3594 No match
3595     
3596 /"([^\\"]+|\\.)*"/
3597     the \"quick\" brown fox
3598  0: "quick"
3599     \"the \\\"quick\\\" brown fox\" 
3600  0: "the \"quick\" brown fox"
3601
3602 /.*?/g+
3603     abc
3604  0: abc
3605  0+ 
3606  1: ab
3607  2: a
3608  3: 
3609  0: 
3610  0+ 
3611   
3612 /\b/g+
3613     abc 
3614  0: 
3615  0+ abc
3616  0: 
3617  0+ 
3618
3619 /\b/+g
3620     abc 
3621  0: 
3622  0+ abc
3623  0: 
3624  0+ 
3625
3626 //g
3627     abc
3628  0: 
3629  0: 
3630  0: 
3631  0: 
3632
3633 /<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
3634   <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>
3635  0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
3636
3637 /a[^a]b/
3638     acb
3639  0: acb
3640     a\nb
3641  0: a\x0ab
3642     
3643 /a.b/
3644     acb
3645  0: acb
3646     *** Failers 
3647 No match
3648     a\nb   
3649 No match
3650     
3651 /a[^a]b/s
3652     acb
3653  0: acb
3654     a\nb  
3655  0: a\x0ab
3656     
3657 /a.b/s
3658     acb
3659  0: acb
3660     a\nb  
3661  0: a\x0ab
3662
3663 /^(b+?|a){1,2}?c/
3664     bac
3665  0: bac
3666     bbac
3667  0: bbac
3668     bbbac
3669  0: bbbac
3670     bbbbac
3671  0: bbbbac
3672     bbbbbac 
3673  0: bbbbbac
3674
3675 /^(b+|a){1,2}?c/
3676     bac
3677  0: bac
3678     bbac
3679  0: bbac
3680     bbbac
3681  0: bbbac
3682     bbbbac
3683  0: bbbbac
3684     bbbbbac 
3685  0: bbbbbac
3686     
3687 /(?!\A)x/m
3688     x\nb\n
3689 No match
3690     a\bx\n  
3691  0: x
3692     
3693 /\x0{ab}/
3694     \0{ab} 
3695  0: \x00{ab}
3696
3697 /(A|B)*?CD/
3698     CD 
3699  0: CD
3700     
3701 /(A|B)*CD/
3702     CD 
3703  0: CD
3704
3705 /(?<!bar)foo/
3706     foo
3707  0: foo
3708     catfood
3709  0: foo
3710     arfootle
3711  0: foo
3712     rfoosh
3713  0: foo
3714     *** Failers
3715 No match
3716     barfoo
3717 No match
3718     towbarfoo
3719 No match
3720
3721 /\w{3}(?<!bar)foo/
3722     catfood
3723  0: catfoo
3724     *** Failers
3725 No match
3726     foo
3727 No match
3728     barfoo
3729 No match
3730     towbarfoo
3731 No match
3732
3733 /(?<=(foo)a)bar/
3734     fooabar
3735  0: bar
3736     *** Failers
3737 No match
3738     bar
3739 No match
3740     foobbar
3741 No match
3742       
3743 /\Aabc\z/m
3744     abc
3745  0: abc
3746     *** Failers
3747 No match
3748     abc\n   
3749 No match
3750     qqq\nabc
3751 No match
3752     abc\nzzz
3753 No match
3754     qqq\nabc\nzzz
3755 No match
3756
3757 "(?>.*/)foo"
3758     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
3759 No match
3760
3761 "(?>.*/)foo"
3762     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3763  0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3764
3765 /(?>(\.\d\d[1-9]?))\d+/
3766     1.230003938
3767  0: .230003938
3768     1.875000282
3769  0: .875000282
3770     *** Failers 
3771 No match
3772     1.235 
3773 No match
3774
3775 /^((?>\w+)|(?>\s+))*$/
3776     now is the time for all good men to come to the aid of the party
3777  0: now is the time for all good men to come to the aid of the party
3778     *** Failers
3779 No match
3780     this is not a line with only words and spaces!
3781 No match
3782     
3783 /(\d+)(\w)/
3784     12345a
3785  0: 12345a
3786  1: 12345
3787  2: 1234
3788  3: 123
3789  4: 12
3790     12345+ 
3791  0: 12345
3792  1: 1234
3793  2: 123
3794  3: 12
3795
3796 /((?>\d+))(\w)/
3797     12345a
3798  0: 12345a
3799     *** Failers
3800 No match
3801     12345+ 
3802 No match
3803
3804 /(?>a+)b/
3805     aaab
3806  0: aaab
3807
3808 /((?>a+)b)/
3809     aaab
3810  0: aaab
3811
3812 /(?>(a+))b/
3813     aaab
3814  0: aaab
3815
3816 /(?>b)+/
3817     aaabbbccc
3818  0: bbb
3819  1: bb
3820  2: b
3821
3822 /(?>a+|b+|c+)*c/
3823     aaabbbbccccd
3824  0: aaabbbbcccc
3825  1: aaabbbbc
3826     
3827 /(a+|b+|c+)*c/
3828     aaabbbbccccd
3829  0: aaabbbbcccc
3830  1: aaabbbbccc
3831  2: aaabbbbcc
3832  3: aaabbbbc
3833
3834 /((?>[^()]+)|\([^()]*\))+/
3835     ((abc(ade)ufh()()x
3836  0: abc(ade)ufh()()x
3837  1: abc(ade)ufh()()
3838  2: abc(ade)ufh()
3839  3: abc(ade)ufh
3840  4: abc(ade)
3841  5: abc
3842     
3843 /\(((?>[^()]+)|\([^()]+\))+\)/ 
3844     (abc)
3845  0: (abc)
3846     (abc(def)xyz)
3847  0: (abc(def)xyz)
3848     *** Failers
3849 No match
3850     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
3851 No match
3852
3853 /a(?-i)b/i
3854     ab
3855  0: ab
3856     Ab
3857  0: Ab
3858     *** Failers 
3859 No match
3860     aB
3861 No match
3862     AB
3863 No match
3864         
3865 /(a (?x)b c)d e/
3866     a bcd e
3867  0: a bcd e
3868     *** Failers
3869 No match
3870     a b cd e
3871 No match
3872     abcd e   
3873 No match
3874     a bcde 
3875 No match
3876  
3877 /(a b(?x)c d (?-x)e f)/
3878     a bcde f
3879  0: a bcde f
3880     *** Failers
3881 No match
3882     abcdef  
3883 No match
3884
3885 /(a(?i)b)c/
3886     abc
3887  0: abc
3888     aBc
3889  0: aBc
3890     *** Failers
3891 No match
3892     abC
3893 No match
3894     aBC  
3895 No match
3896     Abc
3897 No match
3898     ABc
3899 No match
3900     ABC
3901 No match
3902     AbC
3903 No match
3904     
3905 /a(?i:b)c/
3906     abc
3907  0: abc
3908     aBc
3909  0: aBc
3910     *** Failers 
3911 No match
3912     ABC
3913 No match
3914     abC
3915 No match
3916     aBC
3917 No match
3918     
3919 /a(?i:b)*c/
3920     aBc
3921  0: aBc
3922     aBBc
3923  0: aBBc
3924     *** Failers 
3925 No match
3926     aBC
3927 No match
3928     aBBC
3929 No match
3930     
3931 /a(?=b(?i)c)\w\wd/
3932     abcd
3933  0: abcd
3934     abCd
3935  0: abCd
3936     *** Failers
3937 No match
3938     aBCd
3939 No match
3940     abcD     
3941 No match
3942     
3943 /(?s-i:more.*than).*million/i
3944     more than million
3945  0: more than million
3946     more than MILLION
3947  0: more than MILLION
3948     more \n than Million 
3949  0: more \x0a than Million
3950     *** Failers
3951 No match
3952     MORE THAN MILLION    
3953 No match
3954     more \n than \n million 
3955 No match
3956
3957 /(?:(?s-i)more.*than).*million/i
3958     more than million
3959  0: more than million
3960     more than MILLION
3961  0: more than MILLION
3962     more \n than Million 
3963  0: more \x0a than Million
3964     *** Failers
3965 No match
3966     MORE THAN MILLION    
3967 No match
3968     more \n than \n million 
3969 No match
3970     
3971 /(?>a(?i)b+)+c/ 
3972     abc
3973  0: abc
3974     aBbc
3975  0: aBbc
3976     aBBc 
3977  0: aBBc
3978     *** Failers
3979 No match
3980     Abc
3981 No match
3982     abAb    
3983 No match
3984     abbC 
3985 No match
3986     
3987 /(?=a(?i)b)\w\wc/
3988     abc
3989  0: abc
3990     aBc
3991  0: aBc
3992     *** Failers
3993 No match
3994     Ab 
3995 No match
3996     abC
3997 No match
3998     aBC     
3999 No match
4000     
4001 /(?<=a(?i)b)(\w\w)c/
4002     abxxc
4003  0: xxc
4004     aBxxc
4005  0: xxc
4006     *** Failers
4007 No match
4008     Abxxc
4009 No match
4010     ABxxc
4011 No match
4012     abxxC      
4013 No match
4014
4015 /^(?(?=abc)\w{3}:|\d\d)$/
4016     abc:
4017  0: abc:
4018     12
4019  0: 12
4020     *** Failers
4021 No match
4022     123
4023 No match
4024     xyz    
4025 No match
4026
4027 /^(?(?!abc)\d\d|\w{3}:)$/
4028     abc:
4029  0: abc:
4030     12
4031  0: 12
4032     *** Failers
4033 No match
4034     123
4035 No match
4036     xyz    
4037 No match
4038     
4039 /(?(?<=foo)bar|cat)/
4040     foobar
4041  0: bar
4042     cat
4043  0: cat
4044     fcat
4045  0: cat
4046     focat   
4047  0: cat
4048     *** Failers
4049 No match
4050     foocat  
4051 No match
4052
4053 /(?(?<!foo)cat|bar)/
4054     foobar
4055  0: bar
4056     cat
4057  0: cat
4058     fcat
4059  0: cat
4060     focat   
4061  0: cat
4062     *** Failers
4063 No match
4064     foocat  
4065 No match
4066
4067 /(?>a*)*/
4068     a
4069  0: a
4070  1: 
4071     aa
4072  0: aa
4073  1: 
4074     aaaa
4075  0: aaaa
4076  1: 
4077     
4078 /(abc|)+/
4079     abc
4080  0: abc
4081  1: 
4082     abcabc
4083  0: abcabc
4084  1: abc
4085  2: 
4086     abcabcabc
4087  0: abcabcabc
4088  1: abcabc
4089  2: abc
4090  3: 
4091     xyz      
4092  0: 
4093
4094 /([a]*)*/
4095     a
4096  0: a
4097  1: 
4098     aaaaa 
4099  0: aaaaa
4100  1: aaaa
4101  2: aaa
4102  3: aa
4103  4: a
4104  5: 
4105  
4106 /([ab]*)*/
4107     a
4108  0: a
4109  1: 
4110     b
4111  0: b
4112  1: 
4113     ababab
4114  0: ababab
4115  1: ababa
4116  2: abab
4117  3: aba
4118  4: ab
4119  5: a
4120  6: 
4121     aaaabcde
4122  0: aaaab
4123  1: aaaa
4124  2: aaa
4125  3: aa
4126  4: a
4127  5: 
4128     bbbb    
4129  0: bbbb
4130  1: bbb
4131  2: bb
4132  3: b
4133  4: 
4134  
4135 /([^a]*)*/
4136     b
4137  0: b
4138  1: 
4139     bbbb
4140  0: bbbb
4141  1: bbb
4142  2: bb
4143  3: b
4144  4: 
4145     aaa   
4146  0: 
4147  
4148 /([^ab]*)*/
4149     cccc
4150  0: cccc
4151  1: ccc
4152  2: cc
4153  3: c
4154  4: 
4155     abab  
4156  0: 
4157  
4158 /([a]*?)*/
4159     a
4160  0: a
4161  1: 
4162     aaaa 
4163  0: aaaa
4164  1: aaa
4165  2: aa
4166  3: a
4167  4: 
4168  
4169 /([ab]*?)*/
4170     a
4171  0: a
4172  1: 
4173     b
4174  0: b
4175  1: 
4176     abab
4177  0: abab
4178  1: aba
4179  2: ab
4180  3: a
4181  4: 
4182     baba   
4183  0: baba
4184  1: bab
4185  2: ba
4186  3: b
4187  4: 
4188  
4189 /([^a]*?)*/
4190     b
4191  0: b
4192  1: 
4193     bbbb
4194  0: bbbb
4195  1: bbb
4196  2: bb
4197  3: b
4198  4: 
4199     aaa   
4200  0: 
4201  
4202 /([^ab]*?)*/
4203     c
4204  0: c
4205  1: 
4206     cccc
4207  0: cccc
4208  1: ccc
4209  2: cc
4210  3: c
4211  4: 
4212     baba   
4213  0: 
4214  
4215 /(?>a*)*/
4216     a
4217  0: a
4218  1: 
4219     aaabcde 
4220  0: aaa
4221  1: 
4222  
4223 /((?>a*))*/
4224     aaaaa
4225  0: aaaaa
4226  1: 
4227     aabbaa 
4228  0: aa
4229  1: 
4230  
4231 /((?>a*?))*/
4232     aaaaa
4233  0: aaaaa
4234  1: 
4235     aabbaa 
4236  0: aa
4237  1: 
4238
4239 /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
4240     12-sep-98
4241  0: 12-sep-98
4242     12-09-98
4243  0: 12-09-98
4244     *** Failers
4245 No match
4246     sep-12-98
4247 No match
4248         
4249 /(?i:saturday|sunday)/
4250     saturday
4251  0: saturday
4252     sunday
4253  0: sunday
4254     Saturday
4255  0: Saturday
4256     Sunday
4257  0: Sunday
4258     SATURDAY
4259  0: SATURDAY
4260     SUNDAY
4261  0: SUNDAY
4262     SunDay
4263  0: SunDay
4264     
4265 /(a(?i)bc|BB)x/
4266     abcx
4267  0: abcx
4268     aBCx
4269  0: aBCx
4270     bbx
4271  0: bbx
4272     BBx
4273  0: BBx
4274     *** Failers
4275 No match
4276     abcX
4277 No match
4278     aBCX
4279 No match
4280     bbX
4281 No match
4282     BBX               
4283 No match
4284
4285 /^([ab](?i)[cd]|[ef])/
4286     ac
4287  0: ac
4288     aC
4289  0: aC
4290     bD
4291  0: bD
4292     elephant
4293  0: e
4294     Europe 
4295  0: E
4296     frog
4297  0: f
4298     France
4299  0: F
4300     *** Failers
4301 No match
4302     Africa     
4303 No match
4304
4305 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
4306     ab
4307  0: ab
4308     aBd
4309  0: aBd
4310     xy
4311  0: xy
4312     xY
4313  0: xY
4314     zebra
4315  0: z
4316     Zambesi
4317  0: Z
4318     *** Failers
4319 No match
4320     aCD  
4321 No match
4322     XY  
4323 No match
4324
4325 /(?<=foo\n)^bar/m
4326     foo\nbar
4327  0: bar
4328     *** Failers
4329 No match
4330     bar
4331 No match
4332     baz\nbar   
4333 No match
4334
4335 /(?<=(?<!foo)bar)baz/
4336     barbaz
4337  0: baz
4338     barbarbaz 
4339  0: baz
4340     koobarbaz 
4341  0: baz
4342     *** Failers
4343 No match
4344     baz
4345 No match
4346     foobarbaz 
4347 No match
4348
4349 /The following tests are taken from the Perl 5.005 test suite; some of them/
4350 /are compatible with 5.004, but I'd rather not have to sort them out./
4351 No match
4352
4353 /abc/
4354     abc
4355  0: abc
4356     xabcy
4357  0: abc
4358     ababc
4359  0: abc
4360     *** Failers
4361 No match
4362     xbc
4363 No match
4364     axc
4365 No match
4366     abx
4367 No match
4368
4369 /ab*c/
4370     abc
4371  0: abc
4372
4373 /ab*bc/
4374     abc
4375  0: abc
4376     abbc
4377  0: abbc
4378     abbbbc
4379  0: abbbbc
4380
4381 /.{1}/
4382     abbbbc
4383  0: a
4384
4385 /.{3,4}/
4386     abbbbc
4387  0: abbb
4388
4389 /ab{0,}bc/
4390     abbbbc
4391  0: abbbbc
4392
4393 /ab+bc/
4394     abbc
4395  0: abbc
4396     *** Failers
4397 No match
4398     abc
4399 No match
4400     abq
4401 No match
4402
4403 /ab+bc/
4404     abbbbc
4405  0: abbbbc
4406
4407 /ab{1,}bc/
4408     abbbbc
4409  0: abbbbc
4410
4411 /ab{1,3}bc/
4412     abbbbc
4413  0: abbbbc
4414
4415 /ab{3,4}bc/
4416     abbbbc
4417  0: abbbbc
4418
4419 /ab{4,5}bc/
4420     *** Failers
4421 No match
4422     abq
4423 No match
4424     abbbbc
4425 No match
4426
4427 /ab?bc/
4428     abbc
4429  0: abbc
4430     abc
4431  0: abc
4432
4433 /ab{0,1}bc/
4434     abc
4435  0: abc
4436
4437 /ab?bc/
4438
4439 /ab?c/
4440     abc
4441  0: abc
4442
4443 /ab{0,1}c/
4444     abc
4445  0: abc
4446
4447 /^abc$/
4448     abc
4449  0: abc
4450     *** Failers
4451 No match
4452     abbbbc
4453 No match
4454     abcc
4455 No match
4456
4457 /^abc/
4458     abcc
4459  0: abc
4460
4461 /^abc$/
4462
4463 /abc$/
4464     aabc
4465  0: abc
4466     *** Failers
4467 No match
4468     aabc
4469  0: abc
4470     aabcd
4471 No match
4472
4473 /^/
4474     abc
4475  0: 
4476
4477 /$/
4478     abc
4479  0: 
4480
4481 /a.c/
4482     abc
4483  0: abc
4484     axc
4485  0: axc
4486
4487 /a.*c/
4488     axyzc
4489  0: axyzc
4490
4491 /a[bc]d/
4492     abd
4493  0: abd
4494     *** Failers
4495 No match
4496     axyzd
4497 No match
4498     abc
4499 No match
4500
4501 /a[b-d]e/
4502     ace
4503  0: ace
4504
4505 /a[b-d]/
4506     aac
4507  0: ac
4508
4509 /a[-b]/
4510     a-
4511  0: a-
4512
4513 /a[b-]/
4514     a-
4515  0: a-
4516
4517 /a]/
4518     a]
4519  0: a]
4520
4521 /a[]]b/
4522     a]b
4523  0: a]b
4524
4525 /a[^bc]d/
4526     aed
4527  0: aed
4528     *** Failers
4529 No match
4530     abd
4531 No match
4532     abd
4533 No match
4534
4535 /a[^-b]c/
4536     adc
4537  0: adc
4538
4539 /a[^]b]c/
4540     adc
4541  0: adc
4542     *** Failers
4543 No match
4544     a-c
4545  0: a-c
4546     a]c
4547 No match
4548
4549 /\ba\b/
4550     a-
4551  0: a
4552     -a
4553  0: a
4554     -a-
4555  0: a
4556
4557 /\by\b/
4558     *** Failers
4559 No match
4560     xy
4561 No match
4562     yz
4563 No match
4564     xyz
4565 No match
4566
4567 /\Ba\B/
4568     *** Failers
4569  0: a
4570     a-
4571 No match
4572     -a
4573 No match
4574     -a-
4575 No match
4576
4577 /\By\b/
4578     xy
4579  0: y
4580
4581 /\by\B/
4582     yz
4583  0: y
4584
4585 /\By\B/
4586     xyz
4587  0: y
4588
4589 /\w/
4590     a
4591  0: a
4592
4593 /\W/
4594     -
4595  0: -
4596     *** Failers
4597  0: *
4598     -
4599  0: -
4600     a
4601 No match
4602
4603 /a\sb/
4604     a b
4605  0: a b
4606
4607 /a\Sb/
4608     a-b
4609  0: a-b
4610     *** Failers
4611 No match
4612     a-b
4613  0: a-b
4614     a b
4615 No match
4616
4617 /\d/
4618     1
4619  0: 1
4620
4621 /\D/
4622     -
4623  0: -
4624     *** Failers
4625  0: *
4626     -
4627  0: -
4628     1
4629 No match
4630
4631 /[\w]/
4632     a
4633  0: a
4634
4635 /[\W]/
4636     -
4637  0: -
4638     *** Failers
4639  0: *
4640     -
4641  0: -
4642     a
4643 No match
4644
4645 /a[\s]b/
4646     a b
4647  0: a b
4648
4649 /a[\S]b/
4650     a-b
4651  0: a-b
4652     *** Failers
4653 No match
4654     a-b
4655  0: a-b
4656     a b
4657 No match
4658
4659 /[\d]/
4660     1
4661  0: 1
4662
4663 /[\D]/
4664     -
4665  0: -
4666     *** Failers
4667  0: *
4668     -
4669  0: -
4670     1
4671 No match
4672
4673 /ab|cd/
4674     abc
4675  0: ab
4676     abcd
4677  0: ab
4678
4679 /()ef/
4680     def
4681  0: ef
4682
4683 /$b/
4684
4685 /a\(b/
4686     a(b
4687  0: a(b
4688
4689 /a\(*b/
4690     ab
4691  0: ab
4692     a((b
4693  0: a((b
4694
4695 /a\\b/
4696     a\b
4697 No match
4698
4699 /((a))/
4700     abc
4701  0: a
4702
4703 /(a)b(c)/
4704     abc
4705  0: abc
4706
4707 /a+b+c/
4708     aabbabc
4709  0: abc
4710
4711 /a{1,}b{1,}c/
4712     aabbabc
4713  0: abc
4714
4715 /a.+?c/
4716     abcabc
4717  0: abcabc
4718  1: abc
4719
4720 /(a+|b)*/
4721     ab
4722  0: ab
4723  1: a
4724  2: 
4725
4726 /(a+|b){0,}/
4727     ab
4728  0: ab
4729  1: a
4730  2: 
4731
4732 /(a+|b)+/
4733     ab
4734  0: ab
4735  1: a
4736
4737 /(a+|b){1,}/
4738     ab
4739  0: ab
4740  1: a
4741
4742 /(a+|b)?/
4743     ab
4744  0: a
4745  1: 
4746
4747 /(a+|b){0,1}/
4748     ab
4749  0: a
4750  1: 
4751
4752 /[^ab]*/
4753     cde
4754  0: cde
4755
4756 /abc/
4757     *** Failers
4758 No match
4759     b
4760 No match
4761     
4762
4763 /a*/
4764     
4765
4766 /([abc])*d/
4767     abbbcd
4768  0: abbbcd
4769
4770 /([abc])*bcd/
4771     abcd
4772  0: abcd
4773
4774 /a|b|c|d|e/
4775     e
4776  0: e
4777
4778 /(a|b|c|d|e)f/
4779     ef
4780  0: ef
4781
4782 /abcd*efg/
4783     abcdefg
4784  0: abcdefg
4785
4786 /ab*/
4787     xabyabbbz
4788  0: ab
4789     xayabbbz
4790  0: a
4791
4792 /(ab|cd)e/
4793     abcde
4794  0: cde
4795
4796 /[abhgefdc]ij/
4797     hij
4798  0: hij
4799
4800 /^(ab|cd)e/
4801
4802 /(abc|)ef/
4803     abcdef
4804  0: ef
4805
4806 /(a|b)c*d/
4807     abcd
4808  0: bcd
4809
4810 /(ab|ab*)bc/
4811     abc
4812  0: abc
4813
4814 /a([bc]*)c*/
4815     abc
4816  0: abc
4817  1: a
4818
4819 /a([bc]*)(c*d)/
4820     abcd
4821  0: abcd
4822
4823 /a([bc]+)(c*d)/
4824     abcd
4825  0: abcd
4826
4827 /a([bc]*)(c+d)/
4828     abcd
4829  0: abcd
4830
4831 /a[bcd]*dcdcde/
4832     adcdcde
4833  0: adcdcde
4834
4835 /a[bcd]+dcdcde/
4836     *** Failers
4837 No match
4838     abcde
4839 No match
4840     adcdcde
4841 No match
4842
4843 /(ab|a)b*c/
4844     abc
4845  0: abc
4846
4847 /((a)(b)c)(d)/
4848     abcd
4849  0: abcd
4850
4851 /[a-zA-Z_][a-zA-Z0-9_]*/
4852     alpha
4853  0: alpha
4854
4855 /^a(bc+|b[eh])g|.h$/
4856     abh
4857  0: bh
4858
4859 /(bc+d$|ef*g.|h?i(j|k))/
4860     effgz
4861  0: effgz
4862     ij
4863  0: ij
4864     reffgz
4865  0: effgz
4866     *** Failers
4867 No match
4868     effg
4869 No match
4870     bcdd
4871 No match
4872
4873 /((((((((((a))))))))))/
4874     a
4875  0: a
4876
4877 /(((((((((a)))))))))/
4878     a
4879  0: a
4880
4881 /multiple words of text/
4882     *** Failers
4883 No match
4884     aa
4885 No match
4886     uh-uh
4887 No match
4888
4889 /multiple words/
4890     multiple words, yeah
4891  0: multiple words
4892
4893 /(.*)c(.*)/
4894     abcde
4895  0: abcde
4896
4897 /\((.*), (.*)\)/
4898     (a, b)
4899  0: (a, b)
4900
4901 /[k]/
4902
4903 /abcd/
4904     abcd
4905  0: abcd
4906
4907 /a(bc)d/
4908     abcd
4909  0: abcd
4910
4911 /a[-]?c/
4912     ac
4913  0: ac
4914
4915 /abc/i
4916     ABC
4917  0: ABC
4918     XABCY
4919  0: ABC
4920     ABABC
4921  0: ABC
4922     *** Failers
4923 No match
4924     aaxabxbaxbbx
4925 No match
4926     XBC
4927 No match
4928     AXC
4929 No match
4930     ABX
4931 No match
4932
4933 /ab*c/i
4934     ABC
4935  0: ABC
4936
4937 /ab*bc/i
4938     ABC
4939  0: ABC
4940     ABBC
4941  0: ABBC
4942
4943 /ab*?bc/i
4944     ABBBBC
4945  0: ABBBBC
4946
4947 /ab{0,}?bc/i
4948     ABBBBC
4949  0: ABBBBC
4950
4951 /ab+?bc/i
4952     ABBC
4953  0: ABBC
4954
4955 /ab+bc/i
4956     *** Failers
4957 No match
4958     ABC
4959 No match
4960     ABQ
4961 No match
4962
4963 /ab{1,}bc/i
4964
4965 /ab+bc/i
4966     ABBBBC
4967  0: ABBBBC
4968
4969 /ab{1,}?bc/i
4970     ABBBBC
4971  0: ABBBBC
4972
4973 /ab{1,3}?bc/i
4974     ABBBBC
4975  0: ABBBBC
4976
4977 /ab{3,4}?bc/i
4978     ABBBBC
4979  0: ABBBBC
4980
4981 /ab{4,5}?bc/i
4982     *** Failers
4983 No match
4984     ABQ
4985 No match
4986     ABBBBC
4987 No match
4988
4989 /ab??bc/i
4990     ABBC
4991  0: ABBC
4992     ABC
4993  0: ABC
4994
4995 /ab{0,1}?bc/i
4996     ABC
4997  0: ABC
4998
4999 /ab??bc/i
5000
5001 /ab??c/i
5002     ABC
5003  0: ABC
5004
5005 /ab{0,1}?c/i
5006     ABC
5007  0: ABC
5008
5009 /^abc$/i
5010     ABC
5011  0: ABC
5012     *** Failers
5013 No match
5014     ABBBBC
5015 No match
5016     ABCC
5017 No match
5018
5019 /^abc/i
5020     ABCC
5021  0: ABC
5022
5023 /^abc$/i
5024
5025 /abc$/i
5026     AABC
5027  0: ABC
5028
5029 /^/i
5030     ABC
5031  0: 
5032
5033 /$/i
5034     ABC
5035  0: 
5036
5037 /a.c/i
5038     ABC
5039  0: ABC
5040     AXC
5041  0: AXC
5042
5043 /a.*?c/i
5044     AXYZC
5045  0: AXYZC
5046
5047 /a.*c/i
5048     *** Failers
5049 No match
5050     AABC
5051  0: AABC
5052     AXYZD
5053 No match
5054
5055 /a[bc]d/i
5056     ABD
5057  0: ABD
5058
5059 /a[b-d]e/i
5060     ACE
5061  0: ACE
5062     *** Failers
5063 No match
5064     ABC
5065 No match
5066     ABD
5067 No match
5068
5069 /a[b-d]/i
5070     AAC
5071  0: AC
5072
5073 /a[-b]/i
5074     A-
5075  0: A-
5076
5077 /a[b-]/i
5078     A-
5079  0: A-
5080
5081 /a]/i
5082     A]
5083  0: A]
5084
5085 /a[]]b/i
5086     A]B
5087  0: A]B
5088
5089 /a[^bc]d/i
5090     AED
5091  0: AED
5092
5093 /a[^-b]c/i
5094     ADC
5095  0: ADC
5096     *** Failers
5097 No match
5098     ABD
5099 No match
5100     A-C
5101 No match
5102
5103 /a[^]b]c/i
5104     ADC
5105  0: ADC
5106
5107 /ab|cd/i
5108     ABC
5109  0: AB
5110     ABCD
5111  0: AB
5112
5113 /()ef/i
5114     DEF
5115  0: EF
5116
5117 /$b/i
5118     *** Failers
5119 No match
5120     A]C
5121 No match
5122     B
5123 No match
5124
5125 /a\(b/i
5126     A(B
5127  0: A(B
5128
5129 /a\(*b/i
5130     AB
5131  0: AB
5132     A((B
5133  0: A((B
5134
5135 /a\\b/i
5136     A\B
5137 No match
5138
5139 /((a))/i
5140     ABC
5141  0: A
5142
5143 /(a)b(c)/i
5144     ABC
5145  0: ABC
5146
5147 /a+b+c/i
5148     AABBABC
5149  0: ABC
5150
5151 /a{1,}b{1,}c/i
5152     AABBABC
5153  0: ABC
5154
5155 /a.+?c/i
5156     ABCABC
5157  0: ABCABC
5158  1: ABC
5159
5160 /a.*?c/i
5161     ABCABC
5162  0: ABCABC
5163  1: ABC
5164
5165 /a.{0,5}?c/i
5166     ABCABC
5167  0: ABCABC
5168  1: ABC
5169
5170 /(a+|b)*/i
5171     AB
5172  0: AB
5173  1: A
5174  2: 
5175
5176 /(a+|b){0,}/i
5177     AB
5178  0: AB
5179  1: A
5180  2: 
5181
5182 /(a+|b)+/i
5183     AB
5184  0: AB
5185  1: A
5186
5187 /(a+|b){1,}/i
5188     AB
5189  0: AB
5190  1: A
5191
5192 /(a+|b)?/i
5193     AB
5194  0: A
5195  1: 
5196
5197 /(a+|b){0,1}/i
5198     AB
5199  0: A
5200  1: 
5201
5202 /(a+|b){0,1}?/i
5203     AB
5204  0: A
5205  1: 
5206
5207 /[^ab]*/i
5208     CDE
5209  0: CDE
5210
5211 /abc/i
5212
5213 /a*/i
5214     
5215
5216 /([abc])*d/i
5217     ABBBCD
5218  0: ABBBCD
5219
5220 /([abc])*bcd/i
5221     ABCD
5222  0: ABCD
5223
5224 /a|b|c|d|e/i
5225     E
5226  0: E
5227
5228 /(a|b|c|d|e)f/i
5229     EF
5230  0: EF
5231
5232 /abcd*efg/i
5233     ABCDEFG
5234  0: ABCDEFG
5235
5236 /ab*/i
5237     XABYABBBZ
5238  0: AB
5239     XAYABBBZ
5240  0: A
5241
5242 /(ab|cd)e/i
5243     ABCDE
5244  0: CDE
5245
5246 /[abhgefdc]ij/i
5247     HIJ
5248  0: HIJ
5249
5250 /^(ab|cd)e/i
5251     ABCDE
5252 No match
5253
5254 /(abc|)ef/i
5255     ABCDEF
5256  0: EF
5257
5258 /(a|b)c*d/i
5259     ABCD
5260  0: BCD
5261
5262 /(ab|ab*)bc/i
5263     ABC
5264  0: ABC
5265
5266 /a([bc]*)c*/i
5267     ABC
5268  0: ABC
5269  1: A
5270
5271 /a([bc]*)(c*d)/i
5272     ABCD
5273  0: ABCD
5274
5275 /a([bc]+)(c*d)/i
5276     ABCD
5277  0: ABCD
5278
5279 /a([bc]*)(c+d)/i
5280     ABCD
5281  0: ABCD
5282
5283 /a[bcd]*dcdcde/i
5284     ADCDCDE
5285  0: ADCDCDE
5286
5287 /a[bcd]+dcdcde/i
5288
5289 /(ab|a)b*c/i
5290     ABC
5291  0: ABC
5292
5293 /((a)(b)c)(d)/i
5294     ABCD
5295  0: ABCD
5296
5297 /[a-zA-Z_][a-zA-Z0-9_]*/i
5298     ALPHA
5299  0: ALPHA
5300
5301 /^a(bc+|b[eh])g|.h$/i
5302     ABH
5303  0: BH
5304
5305 /(bc+d$|ef*g.|h?i(j|k))/i
5306     EFFGZ
5307  0: EFFGZ
5308     IJ
5309  0: IJ
5310     REFFGZ
5311  0: EFFGZ
5312     *** Failers
5313 No match
5314     ADCDCDE
5315 No match
5316     EFFG
5317 No match
5318     BCDD
5319 No match
5320
5321 /((((((((((a))))))))))/i
5322     A
5323  0: A
5324
5325 /(((((((((a)))))))))/i
5326     A
5327  0: A
5328
5329 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
5330     A
5331  0: A
5332
5333 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
5334     C
5335  0: C
5336
5337 /multiple words of text/i
5338     *** Failers
5339 No match
5340     AA
5341 No match
5342     UH-UH
5343 No match
5344
5345 /multiple words/i
5346     MULTIPLE WORDS, YEAH
5347  0: MULTIPLE WORDS
5348
5349 /(.*)c(.*)/i
5350     ABCDE
5351  0: ABCDE
5352
5353 /\((.*), (.*)\)/i
5354     (A, B)
5355  0: (A, B)
5356
5357 /[k]/i
5358
5359 /abcd/i
5360     ABCD
5361  0: ABCD
5362
5363 /a(bc)d/i
5364     ABCD
5365  0: ABCD
5366
5367 /a[-]?c/i
5368     AC
5369  0: AC
5370
5371 /a(?!b)./
5372     abad
5373  0: ad
5374
5375 /a(?=d)./
5376     abad
5377  0: ad
5378
5379 /a(?=c|d)./
5380     abad
5381  0: ad
5382
5383 /a(?:b|c|d)(.)/
5384     ace
5385  0: ace
5386
5387 /a(?:b|c|d)*(.)/
5388     ace
5389  0: ace
5390  1: ac
5391
5392 /a(?:b|c|d)+?(.)/
5393     ace
5394  0: ace
5395     acdbcdbe
5396  0: acdbcdbe
5397  1: acdbcdb
5398  2: acdbcd
5399  3: acdbc
5400  4: acdb
5401  5: acd
5402
5403 /a(?:b|c|d)+(.)/
5404     acdbcdbe
5405  0: acdbcdbe
5406  1: acdbcdb
5407  2: acdbcd
5408  3: acdbc
5409  4: acdb
5410  5: acd
5411
5412 /a(?:b|c|d){2}(.)/
5413     acdbcdbe
5414  0: acdb
5415
5416 /a(?:b|c|d){4,5}(.)/
5417     acdbcdbe
5418  0: acdbcdb
5419  1: acdbcd
5420
5421 /a(?:b|c|d){4,5}?(.)/
5422     acdbcdbe
5423  0: acdbcdb
5424  1: acdbcd
5425
5426 /((foo)|(bar))*/
5427     foobar
5428  0: foobar
5429  1: foo
5430  2: 
5431
5432 /a(?:b|c|d){6,7}(.)/
5433     acdbcdbe
5434  0: acdbcdbe
5435
5436 /a(?:b|c|d){6,7}?(.)/
5437     acdbcdbe
5438  0: acdbcdbe
5439
5440 /a(?:b|c|d){5,6}(.)/
5441     acdbcdbe
5442  0: acdbcdbe
5443  1: acdbcdb
5444
5445 /a(?:b|c|d){5,6}?(.)/
5446     acdbcdbe
5447  0: acdbcdbe
5448  1: acdbcdb
5449
5450 /a(?:b|c|d){5,7}(.)/
5451     acdbcdbe
5452  0: acdbcdbe
5453  1: acdbcdb
5454
5455 /a(?:b|c|d){5,7}?(.)/
5456     acdbcdbe
5457  0: acdbcdbe
5458  1: acdbcdb
5459
5460 /a(?:b|(c|e){1,2}?|d)+?(.)/
5461     ace
5462  0: ace
5463
5464 /^(.+)?B/
5465     AB
5466  0: AB
5467
5468 /^([^a-z])|(\^)$/
5469     .
5470  0: .
5471
5472 /^[<>]&/
5473     <&OUT
5474  0: <&
5475
5476 /(?:(f)(o)(o)|(b)(a)(r))*/
5477     foobar
5478  0: foobar
5479  1: foo
5480  2: 
5481
5482 /(?<=a)b/
5483     ab
5484  0: b
5485     *** Failers
5486 No match
5487     cb
5488 No match
5489     b
5490 No match
5491
5492 /(?<!c)b/
5493     ab
5494  0: b
5495     b
5496  0: b
5497     b
5498  0: b
5499
5500 /(?:..)*a/
5501     aba
5502  0: aba
5503  1: a
5504
5505 /(?:..)*?a/
5506     aba
5507  0: aba
5508  1: a
5509
5510 /^(){3,5}/
5511     abc
5512  0: 
5513
5514 /^(a+)*ax/
5515     aax
5516  0: aax
5517
5518 /^((a|b)+)*ax/
5519     aax
5520  0: aax
5521
5522 /^((a|bc)+)*ax/
5523     aax
5524  0: aax
5525
5526 /(a|x)*ab/
5527     cab
5528  0: ab
5529
5530 /(a)*ab/
5531     cab
5532  0: ab
5533
5534 /(?:(?i)a)b/
5535     ab
5536  0: ab
5537
5538 /((?i)a)b/
5539     ab
5540  0: ab
5541
5542 /(?:(?i)a)b/
5543     Ab
5544  0: Ab
5545
5546 /((?i)a)b/
5547     Ab
5548  0: Ab
5549
5550 /(?:(?i)a)b/
5551     *** Failers
5552 No match
5553     cb
5554 No match
5555     aB
5556 No match
5557
5558 /((?i)a)b/
5559
5560 /(?i:a)b/
5561     ab
5562  0: ab
5563
5564 /((?i:a))b/
5565     ab
5566  0: ab
5567
5568 /(?i:a)b/
5569     Ab
5570  0: Ab
5571
5572 /((?i:a))b/
5573     Ab
5574  0: Ab
5575
5576 /(?i:a)b/
5577     *** Failers
5578 No match
5579     aB
5580 No match
5581     aB
5582 No match
5583
5584 /((?i:a))b/
5585
5586 /(?:(?-i)a)b/i
5587     ab
5588  0: ab
5589
5590 /((?-i)a)b/i
5591     ab
5592  0: ab
5593
5594 /(?:(?-i)a)b/i
5595     aB
5596  0: aB
5597
5598 /((?-i)a)b/i
5599     aB
5600  0: aB
5601
5602 /(?:(?-i)a)b/i
5603     *** Failers
5604 No match
5605     aB
5606  0: aB
5607     Ab
5608 No match
5609
5610 /((?-i)a)b/i
5611
5612 /(?:(?-i)a)b/i
5613     aB
5614  0: aB
5615
5616 /((?-i)a)b/i
5617     aB
5618  0: aB
5619
5620 /(?:(?-i)a)b/i
5621     *** Failers
5622 No match
5623     Ab
5624 No match
5625     AB
5626 No match
5627
5628 /((?-i)a)b/i
5629
5630 /(?-i:a)b/i
5631     ab
5632  0: ab
5633
5634 /((?-i:a))b/i
5635     ab
5636  0: ab
5637
5638 /(?-i:a)b/i
5639     aB
5640  0: aB
5641
5642 /((?-i:a))b/i
5643     aB
5644  0: aB
5645
5646 /(?-i:a)b/i
5647     *** Failers
5648 No match
5649     AB
5650 No match
5651     Ab
5652 No match
5653
5654 /((?-i:a))b/i
5655
5656 /(?-i:a)b/i
5657     aB
5658  0: aB
5659
5660 /((?-i:a))b/i
5661     aB
5662  0: aB
5663
5664 /(?-i:a)b/i
5665     *** Failers
5666 No match
5667     Ab
5668 No match
5669     AB
5670 No match
5671
5672 /((?-i:a))b/i
5673
5674 /((?-i:a.))b/i
5675     *** Failers
5676 No match
5677     AB
5678 No match
5679     a\nB
5680 No match
5681
5682 /((?s-i:a.))b/i
5683     a\nB
5684  0: a\x0aB
5685
5686 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5687     cabbbb
5688  0: cabbbb
5689
5690 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5691     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5692  0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5693
5694 /foo\w*\d{4}baz/
5695     foobar1234baz
5696  0: foobar1234baz
5697
5698 /x(~~)*(?:(?:F)?)?/
5699     x~~
5700  0: x~~
5701  1: x
5702
5703 /^a(?#xxx){3}c/
5704     aaac
5705  0: aaac
5706
5707 /^a (?#xxx) (?#yyy) {3}c/x
5708     aaac
5709  0: aaac
5710
5711 /(?<![cd])b/
5712     *** Failers
5713 No match
5714     B\nB
5715 No match
5716     dbcb
5717 No match
5718
5719 /(?<![cd])[ab]/
5720     dbaacb
5721  0: a
5722
5723 /(?<!(c|d))b/
5724
5725 /(?<!(c|d))[ab]/
5726     dbaacb
5727  0: a
5728
5729 /(?<!cd)[ab]/
5730     cdaccb
5731  0: b
5732
5733 /^(?:a?b?)*$/
5734     *** Failers
5735 No match
5736     dbcb
5737 No match
5738     a--
5739 No match
5740
5741 /((?s)^a(.))((?m)^b$)/
5742     a\nb\nc\n
5743  0: a\x0ab
5744
5745 /((?m)^b$)/
5746     a\nb\nc\n
5747  0: b
5748
5749 /(?m)^b/
5750     a\nb\n
5751  0: b
5752
5753 /(?m)^(b)/
5754     a\nb\n
5755  0: b
5756
5757 /((?m)^b)/
5758     a\nb\n
5759  0: b
5760
5761 /\n((?m)^b)/
5762     a\nb\n
5763  0: \x0ab
5764
5765 /((?s).)c(?!.)/
5766     a\nb\nc\n
5767  0: \x0ac
5768     a\nb\nc\n
5769  0: \x0ac
5770
5771 /((?s)b.)c(?!.)/
5772     a\nb\nc\n
5773  0: b\x0ac
5774     a\nb\nc\n
5775  0: b\x0ac
5776
5777 /^b/
5778
5779 /()^b/
5780     *** Failers
5781 No match
5782     a\nb\nc\n
5783 No match
5784     a\nb\nc\n
5785 No match
5786
5787 /((?m)^b)/
5788     a\nb\nc\n
5789  0: b
5790
5791 /(?(?!a)a|b)/
5792
5793 /(?(?!a)b|a)/
5794     a
5795  0: a
5796
5797 /(?(?=a)b|a)/
5798     *** Failers
5799 No match
5800     a
5801 No match
5802     a
5803 No match
5804
5805 /(?(?=a)a|b)/
5806     a
5807  0: a
5808
5809 /(\w+:)+/
5810     one:
5811  0: one:
5812
5813 /$(?<=^(a))/
5814     a
5815  0: 
5816
5817 /([\w:]+::)?(\w+)$/
5818     abcd
5819  0: abcd
5820     xy:z:::abcd
5821  0: xy:z:::abcd
5822
5823 /^[^bcd]*(c+)/
5824     aexycd
5825  0: aexyc
5826
5827 /(a*)b+/
5828     caab
5829  0: aab
5830
5831 /([\w:]+::)?(\w+)$/
5832     abcd
5833  0: abcd
5834     xy:z:::abcd
5835  0: xy:z:::abcd
5836     *** Failers
5837  0: Failers
5838     abcd:
5839 No match
5840     abcd:
5841 No match
5842
5843 /^[^bcd]*(c+)/
5844     aexycd
5845  0: aexyc
5846
5847 /(>a+)ab/
5848
5849 /(?>a+)b/
5850     aaab
5851  0: aaab
5852
5853 /([[:]+)/
5854     a:[b]:
5855  0: :[
5856
5857 /([[=]+)/
5858     a=[b]=
5859  0: =[
5860
5861 /([[.]+)/
5862     a.[b].
5863  0: .[
5864
5865 /((?>a+)b)/
5866     aaab
5867  0: aaab
5868
5869 /(?>(a+))b/
5870     aaab
5871  0: aaab
5872
5873 /((?>[^()]+)|\([^()]*\))+/
5874     ((abc(ade)ufh()()x
5875  0: abc(ade)ufh()()x
5876  1: abc(ade)ufh()()
5877  2: abc(ade)ufh()
5878  3: abc(ade)ufh
5879  4: abc(ade)
5880  5: abc
5881
5882 /a\Z/
5883     *** Failers
5884 No match
5885     aaab
5886 No match
5887     a\nb\n
5888 No match
5889
5890 /b\Z/
5891     a\nb\n
5892  0: b
5893
5894 /b\z/
5895
5896 /b\Z/
5897     a\nb
5898  0: b
5899
5900 /b\z/
5901     a\nb
5902  0: b
5903     *** Failers
5904 No match
5905     
5906 /(?>.*)(?<=(abcd|wxyz))/
5907     alphabetabcd
5908  0: alphabetabcd
5909     endingwxyz
5910  0: endingwxyz
5911     *** Failers
5912 No match
5913     a rather long string that doesn't end with one of them
5914 No match
5915
5916 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5917     word cat dog elephant mussel cow horse canary baboon snake shark otherword
5918  0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5919     word cat dog elephant mussel cow horse canary baboon snake shark
5920 No match
5921   
5922 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5923     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
5924 No match
5925
5926 /(?<=\d{3}(?!999))foo/
5927     999foo
5928  0: foo
5929     123999foo 
5930  0: foo
5931     *** Failers
5932 No match
5933     123abcfoo
5934 No match
5935     
5936 /(?<=(?!...999)\d{3})foo/
5937     999foo
5938  0: foo
5939     123999foo 
5940  0: foo
5941     *** Failers
5942 No match
5943     123abcfoo
5944 No match
5945
5946 /(?<=\d{3}(?!999)...)foo/
5947     123abcfoo
5948  0: foo
5949     123456foo 
5950  0: foo
5951     *** Failers
5952 No match
5953     123999foo  
5954 No match
5955     
5956 /(?<=\d{3}...)(?<!999)foo/
5957     123abcfoo   
5958  0: foo
5959     123456foo 
5960  0: foo
5961     *** Failers
5962 No match
5963     123999foo  
5964 No match
5965
5966 /((Z)+|A)*/
5967     ZABCDEFG
5968  0: ZA
5969  1: Z
5970  2: 
5971
5972 /(Z()|A)*/
5973     ZABCDEFG
5974  0: ZA
5975  1: Z
5976  2: 
5977
5978 /(Z(())|A)*/
5979     ZABCDEFG
5980  0: ZA
5981  1: Z
5982  2: 
5983
5984 /((?>Z)+|A)*/
5985     ZABCDEFG
5986  0: ZA
5987  1: Z
5988  2: 
5989
5990 /((?>)+|A)*/
5991     ZABCDEFG
5992  0: 
5993
5994 /a*/g
5995     abbab
5996  0: a
5997  0: 
5998  0: 
5999  0: a
6000  0: 
6001  0: 
6002
6003 /^[\d-a]/
6004     abcde
6005  0: a
6006     -things
6007  0: -
6008     0digit
6009  0: 0
6010     *** Failers
6011 No match
6012     bcdef    
6013 No match
6014     
6015 /[[:space:]]+/
6016     > \x09\x0a\x0c\x0d\x0b<
6017  0:  \x09\x0a\x0c\x0d\x0b
6018      
6019 /[[:blank:]]+/
6020     > \x09\x0a\x0c\x0d\x0b<
6021  0:  \x09
6022      
6023 /[\s]+/
6024     > \x09\x0a\x0c\x0d\x0b<
6025  0:  \x09\x0a\x0c\x0d\x0b
6026      
6027 /\s+/
6028     > \x09\x0a\x0c\x0d\x0b<
6029  0:  \x09\x0a\x0c\x0d\x0b
6030      
6031 /a\vb/x
6032     ab
6033  0: ab
6034
6035 /(?!\A)x/m
6036   a\nxb\n
6037  0: x
6038
6039 /(?!^)x/m
6040   a\nxb\n
6041 No match
6042
6043 /abc\Qabc\Eabc/
6044     abcabcabc
6045  0: abcabcabc
6046     
6047 /abc\Q(*+|\Eabc/
6048     abc(*+|abc 
6049  0: abc(*+|abc
6050
6051 /   abc\Q abc\Eabc/x
6052     abc abcabc
6053  0: abc abcabc
6054     *** Failers
6055 No match
6056     abcabcabc  
6057 No match
6058     
6059 /abc#comment
6060     \Q#not comment
6061     literal\E/x
6062     abc#not comment\n    literal     
6063  0: abc#not comment\x0a    literal
6064
6065 /abc#comment
6066     \Q#not comment
6067     literal/x
6068     abc#not comment\n    literal     
6069  0: abc#not comment\x0a    literal
6070
6071 /abc#comment
6072     \Q#not comment
6073     literal\E #more comment
6074     /x
6075     abc#not comment\n    literal     
6076  0: abc#not comment\x0a    literal
6077
6078 /abc#comment
6079     \Q#not comment
6080     literal\E #more comment/x
6081     abc#not comment\n    literal     
6082  0: abc#not comment\x0a    literal
6083
6084 /\Qabc\$xyz\E/
6085     abc\\\$xyz
6086  0: abc\$xyz
6087
6088 /\Qabc\E\$\Qxyz\E/
6089     abc\$xyz
6090  0: abc$xyz
6091
6092 /\Gabc/
6093     abc
6094  0: abc
6095     *** Failers
6096 No match
6097     xyzabc  
6098 No match
6099
6100 /\Gabc./g
6101     abc1abc2xyzabc3
6102  0: abc1
6103  0: abc2
6104
6105 /abc./g
6106     abc1abc2xyzabc3 
6107  0: abc1
6108  0: abc2
6109  0: abc3
6110
6111 /a(?x: b c )d/
6112     XabcdY
6113  0: abcd
6114     *** Failers 
6115 No match
6116     Xa b c d Y 
6117 No match
6118
6119 /((?x)x y z | a b c)/
6120     XabcY
6121  0: abc
6122     AxyzB 
6123  0: xyz
6124
6125 /(?i)AB(?-i)C/
6126     XabCY
6127  0: abC
6128     *** Failers
6129 No match
6130     XabcY  
6131 No match
6132
6133 /((?i)AB(?-i)C|D)E/
6134     abCE
6135  0: abCE
6136     DE
6137  0: DE
6138     *** Failers
6139 No match
6140     abcE
6141 No match
6142     abCe  
6143 No match
6144     dE
6145 No match
6146     De    
6147 No match
6148
6149 /[z\Qa-d]\E]/
6150     z
6151  0: z
6152     a
6153  0: a
6154     -
6155  0: -
6156     d
6157  0: d
6158     ] 
6159  0: ]
6160     *** Failers
6161  0: a
6162     b     
6163 No match
6164
6165 /[\z\C]/
6166     z
6167  0: z
6168     C 
6169  0: C
6170     
6171 /\M/
6172     M 
6173  0: M
6174     
6175 /(a+)*b/
6176     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
6177 No match
6178     
6179 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
6180     REGular
6181  0: REGular
6182     regulaer
6183  0: regulaer
6184     Regex  
6185  0: Regex
6186     regulär 
6187  0: regul\xe4r
6188
6189 /Åæåä[à-ÿÀ-ß]+/
6190     Ã…æåäà
6191  0: \xc5\xe6\xe5\xe4\xe0
6192     Ã…æåäÿ
6193  0: \xc5\xe6\xe5\xe4\xff
6194     Ã…æåäÀ
6195  0: \xc5\xe6\xe5\xe4\xc0
6196     Ã…æåäß
6197  0: \xc5\xe6\xe5\xe4\xdf
6198
6199 /(?<=Z)X./
6200     \x84XAZXB
6201  0: XB
6202
6203 /^(?(2)a|(1)(2))+$/
6204     123a
6205 Error -17 (backreference condition or recursion test not supported for DFA matching)
6206
6207 /(?<=a|bbbb)c/
6208     ac
6209  0: c
6210     bbbbc
6211  0: c
6212
6213 /abc/SS>testsavedregex
6214 Compiled pattern written to testsavedregex
6215 <testsavedregex
6216 Compiled pattern loaded from testsavedregex
6217 No study data
6218     abc
6219  0: abc
6220     *** Failers
6221 No match
6222     bca
6223 No match
6224     
6225 /abc/FSS>testsavedregex
6226 Compiled pattern written to testsavedregex
6227 <testsavedregex
6228 Compiled pattern (byte-inverted) loaded from testsavedregex
6229 No study data
6230     abc
6231  0: abc
6232     *** Failers
6233 No match
6234     bca
6235 No match
6236
6237 /(a|b)/S>testsavedregex
6238 Compiled pattern written to testsavedregex
6239 Study data written to testsavedregex
6240 <testsavedregex
6241 Compiled pattern loaded from testsavedregex
6242 Study data loaded from testsavedregex
6243     abc
6244  0: a
6245     *** Failers
6246  0: a
6247     def  
6248 No match
6249     
6250 /(a|b)/SF>testsavedregex
6251 Compiled pattern written to testsavedregex
6252 Study data written to testsavedregex
6253 <testsavedregex
6254 Compiled pattern (byte-inverted) loaded from testsavedregex
6255 Study data loaded from testsavedregex
6256     abc
6257  0: a
6258     *** Failers
6259  0: a
6260     def  
6261 No match
6262     
6263 /line\nbreak/
6264     this is a line\nbreak
6265  0: line\x0abreak
6266     line one\nthis is a line\nbreak in the second line 
6267  0: line\x0abreak
6268
6269 /line\nbreak/f
6270     this is a line\nbreak
6271  0: line\x0abreak
6272     ** Failers 
6273 No match
6274     line one\nthis is a line\nbreak in the second line 
6275 No match
6276
6277 /line\nbreak/mf
6278     this is a line\nbreak
6279  0: line\x0abreak
6280     ** Failers 
6281 No match
6282     line one\nthis is a line\nbreak in the second line 
6283 No match
6284
6285 /1234/
6286     123\P
6287 Partial match: 123
6288     a4\P\R
6289 No match
6290
6291 /1234/
6292     123\P
6293 Partial match: 123
6294     4\P\R
6295  0: 4
6296
6297 /^/mg
6298     a\nb\nc\n
6299  0: 
6300  0: 
6301  0: 
6302     \ 
6303  0: 
6304     
6305 /(?<=C\n)^/mg
6306     A\nC\nC\n 
6307  0: 
6308
6309 /(?s)A?B/
6310     AB
6311  0: AB
6312     aB  
6313  0: B
6314
6315 /(?s)A*B/
6316     AB
6317  0: AB
6318     aB  
6319  0: B
6320
6321 /(?m)A?B/
6322     AB
6323  0: AB
6324     aB  
6325  0: B
6326
6327 /(?m)A*B/
6328     AB
6329  0: AB
6330     aB  
6331  0: B
6332
6333 /Content-Type\x3A[^\r\n]{6,}/
6334     Content-Type:xxxxxyyy 
6335  0: Content-Type:xxxxxyyy
6336
6337 /Content-Type\x3A[^\r\n]{6,}z/
6338     Content-Type:xxxxxyyyz
6339  0: Content-Type:xxxxxyyyz
6340
6341 /Content-Type\x3A[^a]{6,}/
6342     Content-Type:xxxyyy 
6343  0: Content-Type:xxxyyy
6344
6345 /Content-Type\x3A[^a]{6,}z/
6346     Content-Type:xxxyyyz
6347  0: Content-Type:xxxyyyz
6348
6349 /^abc/m
6350     xyz\nabc
6351  0: abc
6352     xyz\nabc\<lf>
6353  0: abc
6354     xyz\r\nabc\<lf>
6355  0: abc
6356     xyz\rabc\<cr>
6357  0: abc
6358     xyz\r\nabc\<crlf>
6359  0: abc
6360     ** Failers 
6361 No match
6362     xyz\nabc\<cr>
6363 No match
6364     xyz\r\nabc\<cr>
6365 No match
6366     xyz\nabc\<crlf>
6367 No match
6368     xyz\rabc\<crlf>
6369 No match
6370     xyz\rabc\<lf>
6371 No match
6372     
6373 /abc$/m<lf>
6374     xyzabc
6375  0: abc
6376     xyzabc\n 
6377  0: abc
6378     xyzabc\npqr 
6379  0: abc
6380     xyzabc\r\<cr> 
6381  0: abc
6382     xyzabc\rpqr\<cr> 
6383  0: abc
6384     xyzabc\r\n\<crlf> 
6385  0: abc
6386     xyzabc\r\npqr\<crlf> 
6387  0: abc
6388     ** Failers
6389 No match
6390     xyzabc\r 
6391 No match
6392     xyzabc\rpqr 
6393 No match
6394     xyzabc\r\n 
6395 No match
6396     xyzabc\r\npqr 
6397 No match
6398     
6399 /^abc/m<cr>
6400     xyz\rabcdef
6401  0: abc
6402     xyz\nabcdef\<lf>
6403  0: abc
6404     ** Failers  
6405 No match
6406     xyz\nabcdef
6407 No match
6408        
6409 /^abc/m<lf>
6410     xyz\nabcdef
6411  0: abc
6412     xyz\rabcdef\<cr>
6413  0: abc
6414     ** Failers  
6415 No match
6416     xyz\rabcdef
6417 No match
6418        
6419 /^abc/m<crlf>
6420     xyz\r\nabcdef
6421  0: abc
6422     xyz\rabcdef\<cr>
6423  0: abc
6424     ** Failers  
6425 No match
6426     xyz\rabcdef
6427 No match
6428     
6429 /.*/<lf>
6430     abc\ndef
6431  0: abc
6432     abc\rdef
6433  0: abc\x0ddef
6434     abc\r\ndef
6435  0: abc\x0d
6436     \<cr>abc\ndef
6437  0: abc\x0adef
6438     \<cr>abc\rdef
6439  0: abc
6440     \<cr>abc\r\ndef
6441  0: abc
6442     \<crlf>abc\ndef
6443  0: abc\x0adef
6444     \<crlf>abc\rdef
6445  0: abc\x0ddef
6446     \<crlf>abc\r\ndef
6447  0: abc
6448
6449 /\w+(.)(.)?def/s
6450     abc\ndef
6451  0: abc\x0adef
6452     abc\rdef
6453  0: abc\x0ddef
6454     abc\r\ndef
6455  0: abc\x0d\x0adef
6456
6457 /^\w+=.*(\\\n.*)*/
6458     abc=xyz\\\npqr
6459  0: abc=xyz\\x0apqr
6460  1: abc=xyz\\x0apq
6461  2: abc=xyz\\x0ap
6462  3: abc=xyz\\x0a
6463  4: abc=xyz\
6464  5: abc=xyz
6465  6: abc=xy
6466  7: abc=x
6467  8: abc=
6468
6469 /^(a()*)*/
6470     aaaa
6471  0: aaaa
6472  1: aaa
6473  2: aa
6474  3: a
6475  4: 
6476
6477 /^(?:a(?:(?:))*)*/
6478     aaaa
6479  0: aaaa
6480  1: aaa
6481  2: aa
6482  3: a
6483  4: 
6484
6485 /^(a()+)+/
6486     aaaa
6487  0: aaaa
6488  1: aaa
6489  2: aa
6490  3: a
6491
6492 /^(?:a(?:(?:))+)+/
6493     aaaa
6494  0: aaaa
6495  1: aaa
6496  2: aa
6497  3: a
6498
6499 /(a|)*\d/
6500   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6501 No match
6502   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6503  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6504
6505 /(?>a|)*\d/
6506   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6507 No match
6508   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6509  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6510
6511 /(?:a|)*\d/
6512   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6513 No match
6514   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6515  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6516
6517 /^a.b/<lf>
6518     a\rb
6519  0: a\x0db
6520     a\nb\<cr> 
6521  0: a\x0ab
6522     ** Failers
6523 No match
6524     a\nb
6525 No match
6526     a\nb\<any>
6527 No match
6528     a\rb\<cr>   
6529 No match
6530     a\rb\<any>   
6531 No match
6532
6533 /^abc./mgx<any>
6534     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
6535  0: abc1
6536  0: abc2
6537  0: abc3
6538  0: abc4
6539  0: abc5
6540  0: abc6
6541  0: abc7
6542
6543 /abc.$/mgx<any>
6544     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
6545  0: abc1
6546  0: abc2
6547  0: abc3
6548  0: abc4
6549  0: abc5
6550  0: abc6
6551  0: abc9
6552
6553 /^a\Rb/<bsr_unicode>
6554     a\nb
6555  0: a\x0ab
6556     a\rb
6557  0: a\x0db
6558     a\r\nb
6559  0: a\x0d\x0ab
6560     a\x0bb
6561  0: a\x0bb
6562     a\x0cb
6563  0: a\x0cb
6564     a\x85b   
6565  0: a\x85b
6566     ** Failers
6567 No match
6568     a\n\rb    
6569 No match
6570
6571 /^a\R*b/<bsr_unicode>
6572     ab
6573  0: ab
6574     a\nb
6575  0: a\x0ab
6576     a\rb
6577  0: a\x0db
6578     a\r\nb
6579  0: a\x0d\x0ab
6580     a\x0bb
6581  0: a\x0bb
6582     a\x0cb
6583  0: a\x0cb
6584     a\x85b   
6585  0: a\x85b
6586     a\n\rb    
6587  0: a\x0a\x0db
6588     a\n\r\x85\x0cb 
6589  0: a\x0a\x0d\x85\x0cb
6590
6591 /^a\R+b/<bsr_unicode>
6592     a\nb
6593  0: a\x0ab
6594     a\rb
6595  0: a\x0db
6596     a\r\nb
6597  0: a\x0d\x0ab
6598     a\x0bb
6599  0: a\x0bb
6600     a\x0cb
6601  0: a\x0cb
6602     a\x85b   
6603  0: a\x85b
6604     a\n\rb    
6605  0: a\x0a\x0db
6606     a\n\r\x85\x0cb 
6607  0: a\x0a\x0d\x85\x0cb
6608     ** Failers
6609 No match
6610     ab  
6611 No match
6612     
6613 /^a\R{1,3}b/<bsr_unicode>
6614     a\nb
6615  0: a\x0ab
6616     a\n\rb
6617  0: a\x0a\x0db
6618     a\n\r\x85b
6619  0: a\x0a\x0d\x85b
6620     a\r\n\r\nb 
6621  0: a\x0d\x0a\x0d\x0ab
6622     a\r\n\r\n\r\nb 
6623  0: a\x0d\x0a\x0d\x0a\x0d\x0ab
6624     a\n\r\n\rb
6625  0: a\x0a\x0d\x0a\x0db
6626     a\n\n\r\nb 
6627  0: a\x0a\x0a\x0d\x0ab
6628     ** Failers
6629 No match
6630     a\n\n\n\rb
6631 No match
6632     a\r
6633 No match
6634
6635 /^a[\R]b/<bsr_unicode>
6636     aRb
6637  0: aRb
6638     ** Failers
6639 No match
6640     a\nb  
6641 No match
6642
6643 /.+foo/
6644     afoo
6645  0: afoo
6646     ** Failers 
6647 No match
6648     \r\nfoo 
6649 No match
6650     \nfoo 
6651 No match
6652
6653 /.+foo/<crlf>
6654     afoo
6655  0: afoo
6656     \nfoo 
6657  0: \x0afoo
6658     ** Failers 
6659 No match
6660     \r\nfoo 
6661 No match
6662
6663 /.+foo/<any>
6664     afoo
6665  0: afoo
6666     ** Failers 
6667 No match
6668     \nfoo 
6669 No match
6670     \r\nfoo 
6671 No match
6672
6673 /.+foo/s
6674     afoo
6675  0: afoo
6676     \r\nfoo 
6677  0: \x0d\x0afoo
6678     \nfoo 
6679  0: \x0afoo
6680
6681 /^$/mg<any>
6682     abc\r\rxyz
6683  0: 
6684     abc\n\rxyz  
6685  0: 
6686     ** Failers 
6687 No match
6688     abc\r\nxyz
6689 No match
6690
6691 /^X/m
6692     XABC
6693  0: X
6694     ** Failers 
6695 No match
6696     XABC\B
6697 No match
6698
6699 /(?m)^$/<any>g+
6700     abc\r\n\r\n
6701  0: 
6702  0+ \x0d\x0a
6703
6704 /(?m)^$|^\r\n/<any>g+ 
6705     abc\r\n\r\n
6706  0: \x0d\x0a
6707  0+ 
6708  1: 
6709     
6710 /(?m)$/<any>g+ 
6711     abc\r\n\r\n
6712  0: 
6713  0+ \x0d\x0a\x0d\x0a
6714  0: 
6715  0+ \x0d\x0a
6716  0: 
6717  0+ 
6718
6719 /(?|(abc)|(xyz))/
6720    >abc<
6721  0: abc
6722    >xyz< 
6723  0: xyz
6724
6725 /(x)(?|(abc)|(xyz))(x)/
6726     xabcx
6727  0: xabcx
6728     xxyzx 
6729  0: xxyzx
6730
6731 /(x)(?|(abc)(pqr)|(xyz))(x)/
6732     xabcpqrx
6733  0: xabcpqrx
6734     xxyzx 
6735  0: xxyzx
6736
6737 /(?|(abc)|(xyz))(?1)/
6738     abcabc
6739  0: abcabc
6740     xyzabc 
6741  0: xyzabc
6742     ** Failers 
6743 No match
6744     xyzxyz 
6745 No match
6746  
6747 /\H\h\V\v/
6748     X X\x0a
6749  0: X X\x0a
6750     X\x09X\x0b
6751  0: X\x09X\x0b
6752     ** Failers
6753 No match
6754     \xa0 X\x0a   
6755 No match
6756     
6757 /\H*\h+\V?\v{3,4}/ 
6758     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
6759  0: \x09 \xa0X\x0a\x0b\x0c\x0d
6760     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
6761  0: \x09 \xa0\x0a\x0b\x0c\x0d
6762     \x09\x20\xa0\x0a\x0b\x0c
6763  0: \x09 \xa0\x0a\x0b\x0c
6764     ** Failers 
6765 No match
6766     \x09\x20\xa0\x0a\x0b
6767 No match
6768      
6769 /\H{3,4}/
6770     XY  ABCDE
6771  0: ABCD
6772     XY  PQR ST 
6773  0: PQR
6774     
6775 /.\h{3,4}./
6776     XY  AB    PQRS
6777  0: B    P
6778  1: B    
6779
6780 /\h*X\h?\H+Y\H?Z/
6781     >XNNNYZ
6782  0: XNNNYZ
6783     >  X NYQZ
6784  0:   X NYQZ
6785     ** Failers
6786 No match
6787     >XYZ   
6788 No match
6789     >  X NY Z
6790 No match
6791
6792 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
6793     >XY\x0aZ\x0aA\x0bNN\x0c
6794  0: XY\x0aZ\x0aA\x0bNN\x0c
6795     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6796  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6797
6798 /.+A/<crlf>
6799     \r\nA
6800 No match
6801     
6802 /\nA/<crlf>
6803     \r\nA 
6804  0: \x0aA
6805
6806 /[\r\n]A/<crlf>
6807     \r\nA 
6808  0: \x0aA
6809
6810 /(\r|\n)A/<crlf>
6811     \r\nA 
6812  0: \x0aA
6813
6814 /a\Rb/I<bsr_anycrlf>
6815 Capturing subpattern count = 0
6816 Options: bsr_anycrlf
6817 First char = 'a'
6818 Need char = 'b'
6819     a\rb
6820  0: a\x0db
6821     a\nb
6822  0: a\x0ab
6823     a\r\nb
6824  0: a\x0d\x0ab
6825     ** Failers
6826 No match
6827     a\x85b
6828 No match
6829     a\x0bb     
6830 No match
6831
6832 /a\Rb/I<bsr_unicode>
6833 Capturing subpattern count = 0
6834 Options: bsr_unicode
6835 First char = 'a'
6836 Need char = 'b'
6837     a\rb
6838  0: a\x0db
6839     a\nb
6840  0: a\x0ab
6841     a\r\nb
6842  0: a\x0d\x0ab
6843     a\x85b
6844  0: a\x85b
6845     a\x0bb     
6846  0: a\x0bb
6847     ** Failers 
6848 No match
6849     a\x85b\<bsr_anycrlf>
6850 No match
6851     a\x0bb\<bsr_anycrlf>
6852 No match
6853     
6854 /a\R?b/I<bsr_anycrlf>
6855 Capturing subpattern count = 0
6856 Options: bsr_anycrlf
6857 First char = 'a'
6858 Need char = 'b'
6859     a\rb
6860  0: a\x0db
6861     a\nb
6862  0: a\x0ab
6863     a\r\nb
6864  0: a\x0d\x0ab
6865     ** Failers
6866 No match
6867     a\x85b
6868 No match
6869     a\x0bb     
6870 No match
6871
6872 /a\R?b/I<bsr_unicode>
6873 Capturing subpattern count = 0
6874 Options: bsr_unicode
6875 First char = 'a'
6876 Need char = 'b'
6877     a\rb
6878  0: a\x0db
6879     a\nb
6880  0: a\x0ab
6881     a\r\nb
6882  0: a\x0d\x0ab
6883     a\x85b
6884  0: a\x85b
6885     a\x0bb     
6886  0: a\x0bb
6887     ** Failers 
6888 No match
6889     a\x85b\<bsr_anycrlf>
6890 No match
6891     a\x0bb\<bsr_anycrlf>
6892 No match
6893     
6894 /a\R{2,4}b/I<bsr_anycrlf>
6895 Capturing subpattern count = 0
6896 Options: bsr_anycrlf
6897 First char = 'a'
6898 Need char = 'b'
6899     a\r\n\nb
6900  0: a\x0d\x0a\x0ab
6901     a\n\r\rb
6902  0: a\x0a\x0d\x0db
6903     a\r\n\r\n\r\n\r\nb
6904  0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
6905     ** Failers
6906 No match
6907     a\x85\85b
6908 No match
6909     a\x0b\0bb     
6910 No match
6911
6912 /a\R{2,4}b/I<bsr_unicode>
6913 Capturing subpattern count = 0
6914 Options: bsr_unicode
6915 First char = 'a'
6916 Need char = 'b'
6917     a\r\rb
6918  0: a\x0d\x0db
6919     a\n\n\nb
6920  0: a\x0a\x0a\x0ab
6921     a\r\n\n\r\rb
6922  0: a\x0d\x0a\x0a\x0d\x0db
6923     a\x85\85b
6924 No match
6925     a\x0b\0bb     
6926 No match
6927     ** Failers 
6928 No match
6929     a\r\r\r\r\rb 
6930 No match
6931     a\x85\85b\<bsr_anycrlf>
6932 No match
6933     a\x0b\0bb\<bsr_anycrlf>
6934 No match
6935     
6936 /a(?!)|\wbc/
6937     abc 
6938  0: abc
6939
6940 /a[]b/<JS>
6941     ** Failers
6942 No match
6943     ab
6944 No match
6945
6946 /a[]+b/<JS>
6947     ** Failers
6948 No match
6949     ab 
6950 No match
6951
6952 /a[]*+b/<JS>
6953     ** Failers
6954 No match
6955     ab 
6956 No match
6957
6958 /a[^]b/<JS>
6959     aXb
6960  0: aXb
6961     a\nb 
6962  0: a\x0ab
6963     ** Failers
6964 No match
6965     ab  
6966 No match
6967     
6968 /a[^]+b/<JS> 
6969     aXb
6970  0: aXb
6971     a\nX\nXb 
6972  0: a\x0aX\x0aXb
6973     ** Failers
6974 No match
6975     ab  
6976 No match
6977
6978 /X$/E
6979     X
6980  0: X
6981     ** Failers 
6982 No match
6983     X\n 
6984 No match
6985
6986 /X$/
6987     X
6988  0: X
6989     X\n 
6990  0: X
6991
6992 /xyz/C
6993   xyz 
6994 --->xyz
6995  +0 ^       x
6996  +1 ^^      y
6997  +2 ^ ^     z
6998  +3 ^  ^    
6999  0: xyz
7000   abcxyz 
7001 --->abcxyz
7002  +0    ^       x
7003  +1    ^^      y
7004  +2    ^ ^     z
7005  +3    ^  ^    
7006  0: xyz
7007   abcxyz\Y
7008 --->abcxyz
7009  +0 ^          x
7010  +0  ^         x
7011  +0   ^        x
7012  +0    ^       x
7013  +1    ^^      y
7014  +2    ^ ^     z
7015  +3    ^  ^    
7016  0: xyz
7017   ** Failers 
7018 No match
7019   abc
7020 No match
7021   abc\Y
7022 --->abc
7023  +0 ^       x
7024  +0  ^      x
7025  +0   ^     x
7026  +0    ^    x
7027 No match
7028   abcxypqr  
7029 No match
7030   abcxypqr\Y  
7031 --->abcxypqr
7032  +0 ^            x
7033  +0  ^           x
7034  +0   ^          x
7035  +0    ^         x
7036  +1    ^^        y
7037  +2    ^ ^       z
7038  +0     ^        x
7039  +0      ^       x
7040  +0       ^      x
7041  +0        ^     x
7042  +0         ^    x
7043 No match
7044
7045 /(*NO_START_OPT)xyz/C
7046   abcxyz 
7047 --->abcxyz
7048 +15 ^          x
7049 +15  ^         x
7050 +15   ^        x
7051 +15    ^       x
7052 +16    ^^      y
7053 +17    ^ ^     z
7054 +18    ^  ^    
7055  0: xyz
7056   
7057 /(?C)ab/
7058   ab
7059 --->ab
7060   0 ^      a
7061  0: ab
7062   \C-ab
7063  0: ab
7064   
7065 /ab/C
7066   ab
7067 --->ab
7068  +0 ^      a
7069  +1 ^^     b
7070  +2 ^ ^    
7071  0: ab
7072   \C-ab    
7073  0: ab
7074
7075 /^"((?(?=[a])[^"])|b)*"$/C
7076     "ab"
7077 --->"ab"
7078  +0 ^        ^
7079  +1 ^        "
7080  +2 ^^       ((?(?=[a])[^"])|b)*
7081 +21 ^^       "
7082  +3 ^^       (?(?=[a])[^"])
7083 +18 ^^       b
7084  +5 ^^       (?=[a])
7085  +8  ^       [a]
7086 +11  ^^      )
7087 +12 ^^       [^"]
7088 +16 ^ ^      )
7089 +17 ^ ^      |
7090 +21 ^ ^      "
7091  +3 ^ ^      (?(?=[a])[^"])
7092 +18 ^ ^      b
7093  +5 ^ ^      (?=[a])
7094  +8   ^      [a]
7095 +19 ^  ^     )
7096 +21 ^  ^     "
7097  +3 ^  ^     (?(?=[a])[^"])
7098 +18 ^  ^     b
7099  +5 ^  ^     (?=[a])
7100  +8    ^     [a]
7101 +17 ^  ^     |
7102 +22 ^   ^    $
7103 +23 ^   ^    
7104  0: "ab"
7105     \C-"ab"
7106  0: "ab"
7107
7108 /\d+X|9+Y/
7109     ++++123999\P
7110 Partial match: 123999
7111     ++++123999Y\P
7112  0: 999Y
7113
7114 /Z(*F)/
7115     Z\P
7116 No match
7117     ZA\P 
7118 No match
7119     
7120 /Z(?!)/
7121     Z\P 
7122 No match
7123     ZA\P 
7124 No match
7125
7126 /dog(sbody)?/
7127     dogs\P
7128  0: dog
7129     dogs\P\P 
7130 Partial match: dogs
7131     
7132 /dog(sbody)??/
7133     dogs\P
7134  0: dog
7135     dogs\P\P 
7136 Partial match: dogs
7137
7138 /dog|dogsbody/
7139     dogs\P
7140  0: dog
7141     dogs\P\P 
7142 Partial match: dogs
7143  
7144 /dogsbody|dog/
7145     dogs\P
7146  0: dog
7147     dogs\P\P 
7148 Partial match: dogs
7149
7150 /Z(*F)Q|ZXY/
7151     Z\P
7152 Partial match: Z
7153     ZA\P 
7154 No match
7155     X\P 
7156 No match
7157
7158 /\bthe cat\b/
7159     the cat\P
7160  0: the cat
7161     the cat\P\P
7162 Partial match: the cat
7163
7164 /dog(sbody)?/
7165     dogs\D\P
7166  0: dog
7167     body\D\R
7168  0: body
7169
7170 /dog(sbody)?/
7171     dogs\D\P\P
7172 Partial match: dogs
7173     body\D\R
7174  0: body
7175
7176 /abc/
7177    abc\P
7178  0: abc
7179    abc\P\P
7180  0: abc
7181
7182 /abc\K123/
7183     xyzabc123pqr
7184 Error -16 (item unsupported for DFA matching)
7185     
7186 /(?<=abc)123/
7187     xyzabc123pqr 
7188  0: 123
7189     xyzabc12\P
7190 Partial match at offset 6: abc12
7191     xyzabc12\P\P
7192 Partial match at offset 6: abc12
7193
7194 /\babc\b/
7195     +++abc+++
7196  0: abc
7197     +++ab\P
7198 Partial match at offset 3: +ab
7199     +++ab\P\P  
7200 Partial match at offset 3: +ab
7201
7202 /(?=C)/g+
7203     ABCDECBA
7204  0: 
7205  0+ CDECBA
7206  0: 
7207  0+ CBA
7208
7209 /(abc|def|xyz)/I
7210 Capturing subpattern count = 1
7211 No options
7212 No first char
7213 No need char
7214     terhjk;abcdaadsfe
7215  0: abc
7216     the quick xyz brown fox 
7217  0: xyz
7218     \Yterhjk;abcdaadsfe
7219  0: abc
7220     \Ythe quick xyz brown fox 
7221  0: xyz
7222     ** Failers
7223 No match
7224     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
7225 No match
7226     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
7227 No match
7228
7229 /(abc|def|xyz)/SI
7230 Capturing subpattern count = 1
7231 No options
7232 No first char
7233 No need char
7234 Subject length lower bound = 3
7235 Starting chars: a d x 
7236     terhjk;abcdaadsfe
7237  0: abc
7238     the quick xyz brown fox 
7239  0: xyz
7240     \Yterhjk;abcdaadsfe
7241  0: abc
7242     \Ythe quick xyz brown fox 
7243  0: xyz
7244     ** Failers
7245 No match
7246     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
7247 No match
7248     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
7249 No match
7250
7251 /abcd*/+
7252     xxxxabcd\P
7253  0: abcd
7254  0+ 
7255     xxxxabcd\P\P
7256 Partial match: abcd
7257     dddxxx\R 
7258  0: ddd
7259  0+ xxx
7260     xxxxabcd\P\P
7261 Partial match: abcd
7262     xxx\R 
7263  0: 
7264  0+ xxx
7265
7266 /abcd*/i
7267     xxxxabcd\P
7268  0: abcd
7269     xxxxabcd\P\P
7270 Partial match: abcd
7271     XXXXABCD\P
7272  0: ABCD
7273     XXXXABCD\P\P
7274 Partial match: ABCD
7275
7276 /abc\d*/
7277     xxxxabc1\P
7278  0: abc1
7279     xxxxabc1\P\P
7280 Partial match: abc1
7281
7282 /abc[de]*/
7283     xxxxabcde\P
7284  0: abcde
7285     xxxxabcde\P\P
7286 Partial match: abcde
7287
7288 /(?:(?1)|B)(A(*F)|C)/
7289     ABCD
7290  0: BC
7291     CCD
7292  0: CC
7293     ** Failers
7294 No match
7295     CAD   
7296 No match
7297
7298 /^(?:(?1)|B)(A(*F)|C)/
7299     CCD
7300  0: CC
7301     BCD 
7302  0: BC
7303     ** Failers
7304 No match
7305     ABCD
7306 No match
7307     CAD
7308 No match
7309     BAD    
7310 No match
7311
7312 /^(?!a(*SKIP)b)/
7313     ac
7314 Error -16 (item unsupported for DFA matching)
7315     
7316 /^(?=a(*SKIP)b|ac)/
7317     ** Failers
7318 No match
7319     ac
7320 Error -16 (item unsupported for DFA matching)
7321     
7322 /^(?=a(*THEN)b|ac)/
7323     ac
7324 Error -16 (item unsupported for DFA matching)
7325     
7326 /^(?=a(*PRUNE)b)/
7327     ab  
7328 Error -16 (item unsupported for DFA matching)
7329     ** Failers 
7330 No match
7331     ac
7332 Error -16 (item unsupported for DFA matching)
7333
7334 /^(?(?!a(*SKIP)b))/
7335     ac
7336 Error -16 (item unsupported for DFA matching)
7337
7338 /(?<=abc)def/
7339     abc\P\P
7340 Partial match at offset 3: abc
7341
7342 /abc$/
7343     abc
7344  0: abc
7345     abc\P
7346  0: abc
7347     abc\P\P
7348 Partial match: abc
7349
7350 /abc$/m
7351     abc
7352  0: abc
7353     abc\n
7354  0: abc
7355     abc\P\P
7356 Partial match: abc
7357     abc\n\P\P 
7358  0: abc
7359     abc\P
7360  0: abc
7361     abc\n\P
7362  0: abc
7363
7364 /abc\z/
7365     abc
7366  0: abc
7367     abc\P
7368  0: abc
7369     abc\P\P
7370 Partial match: abc
7371
7372 /abc\Z/
7373     abc
7374  0: abc
7375     abc\P
7376  0: abc
7377     abc\P\P
7378 Partial match: abc
7379
7380 /abc\b/
7381     abc
7382  0: abc
7383     abc\P
7384  0: abc
7385     abc\P\P
7386 Partial match: abc
7387
7388 /abc\B/
7389     abc
7390 No match
7391     abc\P
7392 Partial match: abc
7393     abc\P\P
7394 Partial match: abc
7395
7396 /.+/
7397     abc\>0
7398  0: abc
7399     abc\>1
7400  0: bc
7401     abc\>2
7402  0: c
7403     abc\>3
7404 No match
7405     abc\>4
7406 Error -24 (bad offset value)
7407     abc\>-4 
7408 Error -24 (bad offset value)
7409
7410 /^(?:a)++\w/
7411      aaaab
7412  0: aaaab
7413      ** Failers 
7414 No match
7415      aaaa 
7416 No match
7417      bbb 
7418 No match
7419
7420 /^(?:aa|(?:a)++\w)/
7421      aaaab
7422  0: aaaab
7423  1: aa
7424      aaaa 
7425  0: aa
7426      ** Failers 
7427 No match
7428      bbb 
7429 No match
7430
7431 /^(?:a)*+\w/
7432      aaaab
7433  0: aaaab
7434      bbb 
7435  0: b
7436      ** Failers 
7437 No match
7438      aaaa 
7439 No match
7440
7441 /^(a)++\w/
7442      aaaab
7443  0: aaaab
7444      ** Failers 
7445 No match
7446      aaaa 
7447 No match
7448      bbb 
7449 No match
7450
7451 /^(a|)++\w/
7452      aaaab
7453  0: aaaab
7454      ** Failers 
7455 No match
7456      aaaa 
7457 No match
7458      bbb 
7459 No match
7460
7461 /(?=abc){3}abc/+
7462     abcabcabc
7463  0: abc
7464  0+ abcabc
7465     ** Failers
7466 No match
7467     xyz  
7468 No match
7469     
7470 /(?=abc)+abc/+
7471     abcabcabc
7472  0: abc
7473  0+ abcabc
7474     ** Failers
7475 No match
7476     xyz  
7477 No match
7478     
7479 /(?=abc)++abc/+
7480     abcabcabc
7481  0: abc
7482  0+ abcabc
7483     ** Failers
7484 No match
7485     xyz  
7486 No match
7487     
7488 /(?=abc){0}xyz/
7489     xyz 
7490  0: xyz
7491
7492 /(?=abc){1}xyz/
7493     ** Failers
7494 No match
7495     xyz 
7496 No match
7497     
7498 /(?=(a))?./
7499     ab
7500  0: a
7501     bc
7502  0: b
7503       
7504 /(?=(a))??./
7505     ab
7506  0: a
7507     bc
7508  0: b
7509
7510 /^(?=(a)){0}b(?1)/
7511     backgammon
7512  0: ba
7513
7514 /^(?=(?1))?[az]([abc])d/
7515     abd 
7516  0: abd
7517     zcdxx 
7518  0: zcd
7519
7520 /^(?!a){0}\w+/
7521     aaaaa
7522  0: aaaaa
7523
7524 /(?<=(abc))?xyz/
7525     abcxyz
7526  0: xyz
7527     pqrxyz 
7528  0: xyz
7529
7530 /((?2))((?1))/
7531     abc
7532 Error -26 (nested recursion at the same subject position)
7533
7534 /(?(R)a+|(?R)b)/
7535     aaaabcde
7536  0: aaaab
7537
7538 /(?(R)a+|((?R))b)/
7539     aaaabcde
7540  0: aaaab
7541
7542 /((?(R)a+|(?1)b))/
7543     aaaabcde
7544  0: aaaab
7545
7546 /((?(R2)a+|(?1)b))/
7547     aaaabcde
7548 Error -17 (backreference condition or recursion test not supported for DFA matching)
7549
7550 /(?(R)a*(?1)|((?R))b)/
7551     aaaabcde
7552 Error -26 (nested recursion at the same subject position)
7553
7554 /(a+)/O
7555     \O6aaaa
7556 Matched, but offsets vector is too small to show all matches
7557  0: aaaa
7558  1: aaa
7559  2: aa
7560     \O8aaaa
7561  0: aaaa
7562  1: aaa
7563  2: aa
7564  3: a
7565
7566 /ab\Cde/
7567     abXde
7568  0: abXde
7569     
7570 /(?<=ab\Cde)X/
7571     abZdeX
7572  0: X
7573
7574 /^\R/
7575     \r\P
7576  0: \x0d
7577     \r\P\P
7578 Partial match: \x0d
7579     
7580 /^\R{2,3}x/
7581     \r\P
7582 Partial match: \x0d
7583     \r\P\P
7584 Partial match: \x0d
7585     \r\r\P 
7586 Partial match: \x0d\x0d
7587     \r\r\P\P
7588 Partial match: \x0d\x0d
7589     \r\r\r\P  
7590 Partial match: \x0d\x0d\x0d
7591     \r\r\r\P\P
7592 Partial match: \x0d\x0d\x0d
7593     \r\rx
7594  0: \x0d\x0dx
7595     \r\r\rx    
7596  0: \x0d\x0d\x0dx
7597
7598 /^\R{2,3}?x/
7599     \r\P
7600 Partial match: \x0d
7601     \r\P\P
7602 Partial match: \x0d
7603     \r\r\P 
7604 Partial match: \x0d\x0d
7605     \r\r\P\P
7606 Partial match: \x0d\x0d
7607     \r\r\r\P  
7608 Partial match: \x0d\x0d\x0d
7609     \r\r\r\P\P
7610 Partial match: \x0d\x0d\x0d
7611     \r\rx
7612  0: \x0d\x0dx
7613     \r\r\rx    
7614  0: \x0d\x0d\x0dx
7615     
7616 /^\R?x/
7617     \r\P
7618 Partial match: \x0d
7619     \r\P\P 
7620 Partial match: \x0d
7621     x
7622  0: x
7623     \rx  
7624  0: \x0dx
7625
7626 /^\R+x/
7627     \r\P
7628 Partial match: \x0d
7629     \r\P\P 
7630 Partial match: \x0d
7631     \r\n\P
7632 Partial match: \x0d\x0a
7633     \r\n\P\P  
7634 Partial match: \x0d\x0a
7635     \rx  
7636  0: \x0dx
7637
7638 /^a$/<CRLF>
7639     a\r\P
7640 Partial match: a\x0d
7641     a\r\P\P 
7642 Partial match: a\x0d
7643
7644 /^a$/m<CRLF>
7645     a\r\P
7646 Partial match: a\x0d
7647     a\r\P\P 
7648 Partial match: a\x0d
7649
7650 /^(a$|a\r)/<CRLF>
7651     a\r\P
7652  0: a\x0d
7653     a\r\P\P 
7654 Partial match: a\x0d
7655
7656 /^(a$|a\r)/m<CRLF>
7657     a\r\P
7658  0: a\x0d
7659     a\r\P\P 
7660 Partial match: a\x0d
7661
7662 /./<CRLF>
7663     \r\P
7664  0: \x0d
7665     \r\P\P 
7666 Partial match: \x0d
7667   
7668 /.{2,3}/<CRLF>
7669     \r\P 
7670 Partial match: \x0d
7671     \r\P\P
7672 Partial match: \x0d
7673     \r\r\P
7674  0: \x0d\x0d
7675     \r\r\P\P
7676 Partial match: \x0d\x0d
7677     \r\r\r\P
7678  0: \x0d\x0d\x0d
7679     \r\r\r\P\P     
7680 Partial match: \x0d\x0d\x0d
7681
7682 /.{2,3}?/<CRLF>
7683     \r\P 
7684 Partial match: \x0d
7685     \r\P\P
7686 Partial match: \x0d
7687     \r\r\P
7688  0: \x0d\x0d
7689     \r\r\P\P
7690 Partial match: \x0d\x0d
7691     \r\r\r\P
7692  0: \x0d\x0d\x0d
7693  1: \x0d\x0d
7694     \r\r\r\P\P     
7695 Partial match: \x0d\x0d\x0d
7696
7697 /-- Test simple validity check for restarts --/
7698
7699 /abcdef/
7700    abc\R
7701 Error -30 (invalid data in workspace for DFA restart)
7702
7703 /<H((?(?!<H|F>)(.)|(?R))++)*F>/
7704     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.
7705  0: <H more text <H texting more  hexA0-"\xa0"    hex above 7F-"\xbc" F> text xxxxx <H text F> text F>
7706
7707 /^(?>.{4})abc|^\w\w.xabcd/
7708     xxxxabcd
7709  0: xxxxabcd
7710  1: xxxxabc
7711     xx\xa0xabcd 
7712  0: xx\xa0xabcd
7713  1: xx\xa0xabc
7714
7715 /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
7716     xxxxxxxxabcd
7717  0: xxxxxxxxabcd
7718  1: xxxxxxxxabc
7719     xx\xa0xxxxxabcd 
7720  0: xx\xa0xxxxxabcd
7721  1: xx\xa0xxxxxabc
7722
7723 /abcd/
7724     abcd\O0
7725 Matched, but offsets vector is too small to show all matches
7726
7727 /-- These tests show up auto-possessification --/
7728
7729 /[ab]*/
7730     aaaa
7731  0: aaaa
7732     
7733 /[ab]*?/
7734     aaaa
7735  0: aaaa
7736  1: aaa
7737  2: aa
7738  3: a
7739  4: 
7740     
7741 /[ab]?/
7742     aaaa
7743  0: a
7744     
7745 /[ab]??/
7746     aaaa
7747  0: a
7748  1: 
7749     
7750 /[ab]+/
7751     aaaa
7752  0: aaaa
7753     
7754 /[ab]+?/
7755     aaaa
7756  0: aaaa
7757  1: aaa
7758  2: aa
7759  3: a
7760     
7761 /[ab]{2,3}/
7762     aaaa
7763  0: aaa
7764     
7765 /[ab]{2,3}?/
7766     aaaa
7767  0: aaa
7768  1: aa
7769     
7770 /[ab]{2,}/
7771     aaaa    
7772  0: aaaa
7773
7774 /[ab]{2,}?/
7775     aaaa    
7776  0: aaaa
7777  1: aaa
7778  2: aa
7779
7780 /-- End of testinput8 --/