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