xref: /PHP-5.3/ext/pcre/pcrelib/testdata/testinput8 (revision 276c5de0)
1/-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
2    The -dfa flag must be used with pcretest when running it. --/
3
4/abc/
5    abc
6
7/ab*c/
8    abc
9    abbbbc
10    ac
11
12/ab+c/
13    abc
14    abbbbbbc
15    *** Failers
16    ac
17    ab
18
19/a*/
20    a
21    aaaaaaaaaaaaaaaaa
22    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
23    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
24
25/(a|abcd|african)/
26    a
27    abcd
28    african
29
30/^abc/
31    abcdef
32    *** Failers
33    xyzabc
34    xyz\nabc
35
36/^abc/m
37    abcdef
38    xyz\nabc
39    *** Failers
40    xyzabc
41
42/\Aabc/
43    abcdef
44    *** Failers
45    xyzabc
46    xyz\nabc
47
48/\Aabc/m
49    abcdef
50    *** Failers
51    xyzabc
52    xyz\nabc
53
54/\Gabc/
55    abcdef
56    xyzabc\>3
57    *** Failers
58    xyzabc
59    xyzabc\>2
60
61/x\dy\Dz/
62    x9yzz
63    x0y+z
64    *** Failers
65    xyz
66    xxy0z
67
68/x\sy\Sz/
69    x yzz
70    x y+z
71    *** Failers
72    xyz
73    xxyyz
74
75/x\wy\Wz/
76    xxy+z
77    *** Failers
78    xxy0z
79    x+y+z
80
81/x.y/
82    x+y
83    x-y
84    *** Failers
85    x\ny
86
87/x.y/s
88    x+y
89    x-y
90    x\ny
91
92/(a.b(?s)c.d|x.y)p.q/
93    a+bc+dp+q
94    a+bc\ndp+q
95    x\nyp+q
96    *** Failers
97    a\nbc\ndp+q
98    a+bc\ndp\nq
99    x\nyp\nq
100
101/a\d\z/
102    ba0
103    *** Failers
104    ba0\n
105    ba0\ncd
106
107/a\d\z/m
108    ba0
109    *** Failers
110    ba0\n
111    ba0\ncd
112
113/a\d\Z/
114    ba0
115    ba0\n
116    *** Failers
117    ba0\ncd
118
119/a\d\Z/m
120    ba0
121    ba0\n
122    *** Failers
123    ba0\ncd
124
125/a\d$/
126    ba0
127    ba0\n
128    *** Failers
129    ba0\ncd
130
131/a\d$/m
132    ba0
133    ba0\n
134    ba0\ncd
135    *** Failers
136
137/abc/i
138    abc
139    aBc
140    ABC
141
142/[^a]/
143    abcd
144
145/ab?\w/
146    abz
147    abbz
148    azz
149
150/x{0,3}yz/
151    ayzq
152    axyzq
153    axxyz
154    axxxyzq
155    axxxxyzq
156    *** Failers
157    ax
158    axx
159
160/x{3}yz/
161    axxxyzq
162    axxxxyzq
163    *** Failers
164    ax
165    axx
166    ayzq
167    axyzq
168    axxyz
169
170/x{2,3}yz/
171    axxyz
172    axxxyzq
173    axxxxyzq
174    *** Failers
175    ax
176    axx
177    ayzq
178    axyzq
179
180/[^a]+/
181    bac
182    bcdefax
183    *** Failers
184    aaaaa
185
186/[^a]*/
187    bac
188    bcdefax
189    *** Failers
190    aaaaa
191
192/[^a]{3,5}/
193    xyz
194    awxyza
195    abcdefa
196    abcdefghijk
197    *** Failers
198    axya
199    axa
200    aaaaa
201
202/\d*/
203    1234b567
204    xyz
205
206/\D*/
207    a1234b567
208    xyz
209
210/\d+/
211    ab1234c56
212    *** Failers
213    xyz
214
215/\D+/
216    ab123c56
217    *** Failers
218    789
219
220/\d?A/
221    045ABC
222    ABC
223    *** Failers
224    XYZ
225
226/\D?A/
227    ABC
228    BAC
229    9ABC
230    *** Failers
231
232/a+/
233    aaaa
234
235/^.*xyz/
236    xyz
237    ggggggggxyz
238
239/^.+xyz/
240    abcdxyz
241    axyz
242    *** Failers
243    xyz
244
245/^.?xyz/
246    xyz
247    cxyz
248
249/^\d{2,3}X/
250    12X
251    123X
252    *** Failers
253    X
254    1X
255    1234X
256
257/^[abcd]\d/
258    a45
259    b93
260    c99z
261    d04
262    *** Failers
263    e45
264    abcd
265    abcd1234
266    1234
267
268/^[abcd]*\d/
269    a45
270    b93
271    c99z
272    d04
273    abcd1234
274    1234
275    *** Failers
276    e45
277    abcd
278
279/^[abcd]+\d/
280    a45
281    b93
282    c99z
283    d04
284    abcd1234
285    *** Failers
286    1234
287    e45
288    abcd
289
290/^a+X/
291    aX
292    aaX
293
294/^[abcd]?\d/
295    a45
296    b93
297    c99z
298    d04
299    1234
300    *** Failers
301    abcd1234
302    e45
303
304/^[abcd]{2,3}\d/
305    ab45
306    bcd93
307    *** Failers
308    1234
309    a36
310    abcd1234
311    ee45
312
313/^(abc)*\d/
314    abc45
315    abcabcabc45
316    42xyz
317    *** Failers
318
319/^(abc)+\d/
320    abc45
321    abcabcabc45
322    *** Failers
323    42xyz
324
325/^(abc)?\d/
326    abc45
327    42xyz
328    *** Failers
329    abcabcabc45
330
331/^(abc){2,3}\d/
332    abcabc45
333    abcabcabc45
334    *** Failers
335    abcabcabcabc45
336    abc45
337    42xyz
338
339/1(abc|xyz)2(?1)3/
340    1abc2abc3456
341    1abc2xyz3456
342
343/^(a*\w|ab)=(a*\w|ab)/
344    ab=ab
345
346/^(a*\w|ab)=(?1)/
347    ab=ab
348
349/^([^()]|\((?1)*\))*$/
350    abc
351    a(b)c
352    a(b(c))d
353    *** Failers)
354    a(b(c)d
355
356/^>abc>([^()]|\((?1)*\))*<xyz<$/
357    >abc>123<xyz<
358    >abc>1(2)3<xyz<
359    >abc>(1(2)3)<xyz<
360
361/^(?>a*)\d/
362    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
363    *** Failers
364    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
365
366/< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/x
367    <>
368    <abcd>
369    <abc <123> hij>
370    <abc <def> hij>
371    <abc<>def>
372    <abc<>
373    *** Failers
374    <abc
375
376/^(?(?=abc)\w{3}:|\d\d)$/
377    abc:
378    12
379    *** Failers
380    123
381    xyz
382
383/^(?(?!abc)\d\d|\w{3}:)$/
384    abc:
385    12
386    *** Failers
387    123
388    xyz
389
390/^(?=abc)\w{5}:$/
391    abcde:
392    *** Failers
393    abc..
394    123
395    vwxyz
396
397/^(?!abc)\d\d$/
398    12
399    *** Failers
400    abcde:
401    abc..
402    123
403    vwxyz
404
405/(?<=abc|xy)123/
406    abc12345
407    wxy123z
408    *** Failers
409    123abc
410
411/(?<!abc|xy)123/
412    123abc
413    mno123456
414    *** Failers
415    abc12345
416    wxy123z
417
418/abc(?C1)xyz/
419    abcxyz
420    123abcxyz999
421
422/(ab|cd){3,4}/C
423  ababab
424  abcdabcd
425  abcdcdcdcdcd
426
427/^abc/
428    abcdef
429    *** Failers
430    abcdef\B
431
432/^(a*|xyz)/
433    bcd
434    aaabcd
435    xyz
436    xyz\N
437    *** Failers
438    bcd\N
439
440/xyz$/
441    xyz
442    xyz\n
443    *** Failers
444    xyz\Z
445    xyz\n\Z
446
447/xyz$/m
448    xyz
449    xyz\n
450    abcxyz\npqr
451    abcxyz\npqr\Z
452    xyz\n\Z
453    *** Failers
454    xyz\Z
455
456/\Gabc/
457    abcdef
458    defabcxyz\>3
459    *** Failers
460    defabcxyz
461
462/^abcdef/
463    ab\P
464    abcde\P
465    abcdef\P
466    *** Failers
467    abx\P
468
469/^a{2,4}\d+z/
470    a\P
471    aa\P
472    aa2\P
473    aaa\P
474    aaa23\P
475    aaaa12345\P
476    aa0z\P
477    aaaa4444444444444z\P
478    *** Failers
479    az\P
480    aaaaa\P
481    a56\P
482
483/^abcdef/
484   abc\P
485   def\R
486
487/(?<=foo)bar/
488   xyzfo\P
489   foob\P\>2
490   foobar...\R\P\>4
491   xyzfo\P
492   foobar\>2
493   *** Failers
494   xyzfo\P
495   obar\R
496
497/(ab*(cd|ef))+X/
498    adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
499    lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
500    cdabbbbbbbb\P\R\B\Z
501    efabbbbbbbbbbbbbbbb\P\R\B\Z
502    bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
503
504/(a|b)/SF>testsavedregex
505<testsavedregex
506    abc
507    ** Failers
508    def
509
510/the quick brown fox/
511    the quick brown fox
512    The quick brown FOX
513    What do you know about the quick brown fox?
514    What do you know about THE QUICK BROWN FOX?
515
516/The quick brown fox/i
517    the quick brown fox
518    The quick brown FOX
519    What do you know about the quick brown fox?
520    What do you know about THE QUICK BROWN FOX?
521
522/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
523    abcd\t\n\r\f\a\e9;\$\\?caxyz
524
525/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
526    abxyzpqrrrabbxyyyypqAzz
527    abxyzpqrrrabbxyyyypqAzz
528    aabxyzpqrrrabbxyyyypqAzz
529    aaabxyzpqrrrabbxyyyypqAzz
530    aaaabxyzpqrrrabbxyyyypqAzz
531    abcxyzpqrrrabbxyyyypqAzz
532    aabcxyzpqrrrabbxyyyypqAzz
533    aaabcxyzpqrrrabbxyyyypAzz
534    aaabcxyzpqrrrabbxyyyypqAzz
535    aaabcxyzpqrrrabbxyyyypqqAzz
536    aaabcxyzpqrrrabbxyyyypqqqAzz
537    aaabcxyzpqrrrabbxyyyypqqqqAzz
538    aaabcxyzpqrrrabbxyyyypqqqqqAzz
539    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
540    aaaabcxyzpqrrrabbxyyyypqAzz
541    abxyzzpqrrrabbxyyyypqAzz
542    aabxyzzzpqrrrabbxyyyypqAzz
543    aaabxyzzzzpqrrrabbxyyyypqAzz
544    aaaabxyzzzzpqrrrabbxyyyypqAzz
545    abcxyzzpqrrrabbxyyyypqAzz
546    aabcxyzzzpqrrrabbxyyyypqAzz
547    aaabcxyzzzzpqrrrabbxyyyypqAzz
548    aaaabcxyzzzzpqrrrabbxyyyypqAzz
549    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
550    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
551    aaabcxyzpqrrrabbxyyyypABzz
552    aaabcxyzpqrrrabbxyyyypABBzz
553    >>>aaabxyzpqrrrabbxyyyypqAzz
554    >aaaabxyzpqrrrabbxyyyypqAzz
555    >>>>abcxyzpqrrrabbxyyyypqAzz
556    *** Failers
557    abxyzpqrrabbxyyyypqAzz
558    abxyzpqrrrrabbxyyyypqAzz
559    abxyzpqrrrabxyyyypqAzz
560    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
561    aaaabcxyzzzzpqrrrabbbxyyypqAzz
562    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
563
564/^(abc){1,2}zz/
565    abczz
566    abcabczz
567    *** Failers
568    zz
569    abcabcabczz
570    >>abczz
571
572/^(b+?|a){1,2}?c/
573    bc
574    bbc
575    bbbc
576    bac
577    bbac
578    aac
579    abbbbbbbbbbbc
580    bbbbbbbbbbbac
581    *** Failers
582    aaac
583    abbbbbbbbbbbac
584
585/^(b+|a){1,2}c/
586    bc
587    bbc
588    bbbc
589    bac
590    bbac
591    aac
592    abbbbbbbbbbbc
593    bbbbbbbbbbbac
594    *** Failers
595    aaac
596    abbbbbbbbbbbac
597
598/^(b+|a){1,2}?bc/
599    bbc
600
601/^(b*|ba){1,2}?bc/
602    babc
603    bbabc
604    bababc
605    *** Failers
606    bababbc
607    babababc
608
609/^(ba|b*){1,2}?bc/
610    babc
611    bbabc
612    bababc
613    *** Failers
614    bababbc
615    babababc
616
617/^\ca\cA\c[\c{\c:/
618    \x01\x01\e;z
619
620/^[ab\]cde]/
621    athing
622    bthing
623    ]thing
624    cthing
625    dthing
626    ething
627    *** Failers
628    fthing
629    [thing
630    \\thing
631
632/^[]cde]/
633    ]thing
634    cthing
635    dthing
636    ething
637    *** Failers
638    athing
639    fthing
640
641/^[^ab\]cde]/
642    fthing
643    [thing
644    \\thing
645    *** Failers
646    athing
647    bthing
648    ]thing
649    cthing
650    dthing
651    ething
652
653/^[^]cde]/
654    athing
655    fthing
656    *** Failers
657    ]thing
658    cthing
659    dthing
660    ething
661
662/^\�/
663664
665/^�/
666667
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/ab/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/^\R/
4713    \r\P
4714    \r\P\P
4715
4716/^\R{2,3}x/
4717    \r\P
4718    \r\P\P
4719    \r\r\P
4720    \r\r\P\P
4721    \r\r\r\P
4722    \r\r\r\P\P
4723    \r\rx
4724    \r\r\rx
4725
4726/^\R{2,3}?x/
4727    \r\P
4728    \r\P\P
4729    \r\r\P
4730    \r\r\P\P
4731    \r\r\r\P
4732    \r\r\r\P\P
4733    \r\rx
4734    \r\r\rx
4735
4736/^\R?x/
4737    \r\P
4738    \r\P\P
4739    x
4740    \rx
4741
4742/^\R+x/
4743    \r\P
4744    \r\P\P
4745    \r\n\P
4746    \r\n\P\P
4747    \rx
4748
4749/^a$/<CRLF>
4750    a\r\P
4751    a\r\P\P
4752
4753/^a$/m<CRLF>
4754    a\r\P
4755    a\r\P\P
4756
4757/^(a$|a\r)/<CRLF>
4758    a\r\P
4759    a\r\P\P
4760
4761/^(a$|a\r)/m<CRLF>
4762    a\r\P
4763    a\r\P\P
4764
4765/./<CRLF>
4766    \r\P
4767    \r\P\P
4768
4769/.{2,3}/<CRLF>
4770    \r\P
4771    \r\P\P
4772    \r\r\P
4773    \r\r\P\P
4774    \r\r\r\P
4775    \r\r\r\P\P
4776
4777/.{2,3}?/<CRLF>
4778    \r\P
4779    \r\P\P
4780    \r\r\P
4781    \r\r\P\P
4782    \r\r\r\P
4783    \r\r\r\P\P
4784
4785/-- Test simple validity check for restarts --/
4786
4787/abcdef/
4788   abc\R
4789
4790/<H((?(?!<H|F>)(.)|(?R))++)*F>/
4791    text <H more text <H texting more  hexA0-"\xA0"    hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
4792
4793/^(?>.{4})abc|^\w\w.xabcd/
4794    xxxxabcd
4795    xx\xa0xabcd
4796
4797/^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
4798    xxxxxxxxabcd
4799    xx\xa0xxxxxabcd
4800
4801/-- End of testinput8 --/
4802