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