xref: /third_party/rust/crates/regex/tests/fowler.rs (revision c67d6573)
1// DO NOT EDIT. Automatically generated by 'scripts/regex-match-tests.py'
2// on 2019-09-02 11:07:37.849994.
3
4// Tests from basic.dat
5mat!(match_basic_3, r"abracadabra$", r"abracadabracadabra", Some((7, 18)));
6mat!(match_basic_4, r"a...b", r"abababbb", Some((2, 7)));
7mat!(match_basic_5, r"XXXXXX", r"..XXXXXX", Some((2, 8)));
8mat!(match_basic_6, r"\)", r"()", Some((1, 2)));
9mat!(match_basic_7, r"a]", r"a]a", Some((0, 2)));
10mat!(match_basic_9, r"\}", r"}", Some((0, 1)));
11mat!(match_basic_10, r"\]", r"]", Some((0, 1)));
12mat!(match_basic_12, r"]", r"]", Some((0, 1)));
13mat!(match_basic_15, r"^a", r"ax", Some((0, 1)));
14mat!(match_basic_16, r"\^a", r"a^a", Some((1, 3)));
15mat!(match_basic_17, r"a\^", r"a^", Some((0, 2)));
16mat!(match_basic_18, r"a$", r"aa", Some((1, 2)));
17mat!(match_basic_19, r"a\$", r"a$", Some((0, 2)));
18mat!(match_basic_20, r"^$", r"", Some((0, 0)));
19mat!(match_basic_21, r"$^", r"", Some((0, 0)));
20mat!(match_basic_22, r"a($)", r"aa", Some((1, 2)), Some((2, 2)));
21mat!(match_basic_23, r"a*(^a)", r"aa", Some((0, 1)), Some((0, 1)));
22mat!(match_basic_24, r"(..)*(...)*", r"a", Some((0, 0)));
23mat!(match_basic_25, r"(..)*(...)*", r"abcd", Some((0, 4)), Some((2, 4)));
24mat!(
25    match_basic_26,
26    r"(ab|a)(bc|c)",
27    r"abc",
28    Some((0, 3)),
29    Some((0, 2)),
30    Some((2, 3))
31);
32mat!(match_basic_27, r"(ab)c|abc", r"abc", Some((0, 3)), Some((0, 2)));
33mat!(match_basic_28, r"a{0}b", r"ab", Some((1, 2)));
34mat!(
35    match_basic_29,
36    r"(a*)(b?)(b+)b{3}",
37    r"aaabbbbbbb",
38    Some((0, 10)),
39    Some((0, 3)),
40    Some((3, 4)),
41    Some((4, 7))
42);
43mat!(
44    match_basic_30,
45    r"(a*)(b{0,1})(b{1,})b{3}",
46    r"aaabbbbbbb",
47    Some((0, 10)),
48    Some((0, 3)),
49    Some((3, 4)),
50    Some((4, 7))
51);
52mat!(
53    match_basic_32,
54    r"((a|a)|a)",
55    r"a",
56    Some((0, 1)),
57    Some((0, 1)),
58    Some((0, 1))
59);
60mat!(
61    match_basic_33,
62    r"(a*)(a|aa)",
63    r"aaaa",
64    Some((0, 4)),
65    Some((0, 3)),
66    Some((3, 4))
67);
68mat!(match_basic_34, r"a*(a.|aa)", r"aaaa", Some((0, 4)), Some((2, 4)));
69mat!(
70    match_basic_35,
71    r"a(b)|c(d)|a(e)f",
72    r"aef",
73    Some((0, 3)),
74    None,
75    None,
76    Some((1, 2))
77);
78mat!(match_basic_36, r"(a|b)?.*", r"b", Some((0, 1)), Some((0, 1)));
79mat!(match_basic_37, r"(a|b)c|a(b|c)", r"ac", Some((0, 2)), Some((0, 1)));
80mat!(
81    match_basic_38,
82    r"(a|b)c|a(b|c)",
83    r"ab",
84    Some((0, 2)),
85    None,
86    Some((1, 2))
87);
88mat!(match_basic_39, r"(a|b)*c|(a|ab)*c", r"abc", Some((0, 3)), Some((1, 2)));
89mat!(match_basic_40, r"(a|b)*c|(a|ab)*c", r"xc", Some((1, 2)));
90mat!(
91    match_basic_41,
92    r"(.a|.b).*|.*(.a|.b)",
93    r"xa",
94    Some((0, 2)),
95    Some((0, 2))
96);
97mat!(match_basic_42, r"a?(ab|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
98mat!(match_basic_43, r"a?(ac{0}b|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
99mat!(match_basic_44, r"ab|abab", r"abbabab", Some((0, 2)));
100mat!(match_basic_45, r"aba|bab|bba", r"baaabbbaba", Some((5, 8)));
101mat!(match_basic_46, r"aba|bab", r"baaabbbaba", Some((6, 9)));
102mat!(
103    match_basic_47,
104    r"(aa|aaa)*|(a|aaaaa)",
105    r"aa",
106    Some((0, 2)),
107    Some((0, 2))
108);
109mat!(
110    match_basic_48,
111    r"(a.|.a.)*|(a|.a...)",
112    r"aa",
113    Some((0, 2)),
114    Some((0, 2))
115);
116mat!(match_basic_49, r"ab|a", r"xabc", Some((1, 3)));
117mat!(match_basic_50, r"ab|a", r"xxabc", Some((2, 4)));
118mat!(
119    match_basic_51,
120    r"(?i)(?-u)(Ab|cD)*",
121    r"aBcD",
122    Some((0, 4)),
123    Some((2, 4))
124);
125mat!(match_basic_52, r"[^-]", r"--a", Some((2, 3)));
126mat!(match_basic_53, r"[a-]*", r"--a", Some((0, 3)));
127mat!(match_basic_54, r"[a-m-]*", r"--amoma--", Some((0, 4)));
128mat!(
129    match_basic_55,
130    r":::1:::0:|:::1:1:0:",
131    r":::0:::1:::1:::0:",
132    Some((8, 17))
133);
134mat!(
135    match_basic_56,
136    r":::1:::0:|:::1:1:1:",
137    r":::0:::1:::1:::0:",
138    Some((8, 17))
139);
140mat!(match_basic_57, r"[[:upper:]]", r"A", Some((0, 1)));
141mat!(match_basic_58, r"[[:lower:]]+", r"`az{", Some((1, 3)));
142mat!(match_basic_59, r"[[:upper:]]+", r"@AZ[", Some((1, 3)));
143mat!(
144    match_basic_65,
145    r"
146",
147    r"
148",
149    Some((0, 1))
150);
151mat!(
152    match_basic_66,
153    r"
154",
155    r"
156",
157    Some((0, 1))
158);
159mat!(
160    match_basic_67,
161    r"[^a]",
162    r"
163",
164    Some((0, 1))
165);
166mat!(
167    match_basic_68,
168    r"
169a",
170    r"
171a",
172    Some((0, 2))
173);
174mat!(
175    match_basic_69,
176    r"(a)(b)(c)",
177    r"abc",
178    Some((0, 3)),
179    Some((0, 1)),
180    Some((1, 2)),
181    Some((2, 3))
182);
183mat!(match_basic_70, r"xxx", r"xxx", Some((0, 3)));
184mat!(
185    match_basic_71,
186    r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
187    r"feb 6,",
188    Some((0, 6))
189);
190mat!(
191    match_basic_72,
192    r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
193    r"2/7",
194    Some((0, 3))
195);
196mat!(
197    match_basic_73,
198    r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
199    r"feb 1,Feb 6",
200    Some((5, 11))
201);
202mat!(
203    match_basic_74,
204    r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))",
205    r"x",
206    Some((0, 1)),
207    Some((0, 1)),
208    Some((0, 1))
209);
210mat!(
211    match_basic_75,
212    r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))*",
213    r"xx",
214    Some((0, 2)),
215    Some((1, 2)),
216    Some((1, 2))
217);
218mat!(
219    match_basic_76,
220    r"a?(ab|ba)*",
221    r"ababababababababababababababababababababababababababababababababababababababababa",
222    Some((0, 81)),
223    Some((79, 81))
224);
225mat!(
226    match_basic_77,
227    r"abaa|abbaa|abbbaa|abbbbaa",
228    r"ababbabbbabbbabbbbabbbbaa",
229    Some((18, 25))
230);
231mat!(
232    match_basic_78,
233    r"abaa|abbaa|abbbaa|abbbbaa",
234    r"ababbabbbabbbabbbbabaa",
235    Some((18, 22))
236);
237mat!(
238    match_basic_79,
239    r"aaac|aabc|abac|abbc|baac|babc|bbac|bbbc",
240    r"baaabbbabac",
241    Some((7, 11))
242);
243mat!(match_basic_80, r".*", r"", Some((0, 2)));
244mat!(
245    match_basic_81,
246    r"aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll",
247    r"XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa",
248    Some((53, 57))
249);
250mat!(match_basic_83, r"a*a*a*a*a*b", r"aaaaaaaaab", Some((0, 10)));
251mat!(match_basic_84, r"^", r"", Some((0, 0)));
252mat!(match_basic_85, r"$", r"", Some((0, 0)));
253mat!(match_basic_86, r"^$", r"", Some((0, 0)));
254mat!(match_basic_87, r"^a$", r"a", Some((0, 1)));
255mat!(match_basic_88, r"abc", r"abc", Some((0, 3)));
256mat!(match_basic_89, r"abc", r"xabcy", Some((1, 4)));
257mat!(match_basic_90, r"abc", r"ababc", Some((2, 5)));
258mat!(match_basic_91, r"ab*c", r"abc", Some((0, 3)));
259mat!(match_basic_92, r"ab*bc", r"abc", Some((0, 3)));
260mat!(match_basic_93, r"ab*bc", r"abbc", Some((0, 4)));
261mat!(match_basic_94, r"ab*bc", r"abbbbc", Some((0, 6)));
262mat!(match_basic_95, r"ab+bc", r"abbc", Some((0, 4)));
263mat!(match_basic_96, r"ab+bc", r"abbbbc", Some((0, 6)));
264mat!(match_basic_97, r"ab?bc", r"abbc", Some((0, 4)));
265mat!(match_basic_98, r"ab?bc", r"abc", Some((0, 3)));
266mat!(match_basic_99, r"ab?c", r"abc", Some((0, 3)));
267mat!(match_basic_100, r"^abc$", r"abc", Some((0, 3)));
268mat!(match_basic_101, r"^abc", r"abcc", Some((0, 3)));
269mat!(match_basic_102, r"abc$", r"aabc", Some((1, 4)));
270mat!(match_basic_103, r"^", r"abc", Some((0, 0)));
271mat!(match_basic_104, r"$", r"abc", Some((3, 3)));
272mat!(match_basic_105, r"a.c", r"abc", Some((0, 3)));
273mat!(match_basic_106, r"a.c", r"axc", Some((0, 3)));
274mat!(match_basic_107, r"a.*c", r"axyzc", Some((0, 5)));
275mat!(match_basic_108, r"a[bc]d", r"abd", Some((0, 3)));
276mat!(match_basic_109, r"a[b-d]e", r"ace", Some((0, 3)));
277mat!(match_basic_110, r"a[b-d]", r"aac", Some((1, 3)));
278mat!(match_basic_111, r"a[-b]", r"a-", Some((0, 2)));
279mat!(match_basic_112, r"a[b-]", r"a-", Some((0, 2)));
280mat!(match_basic_113, r"a]", r"a]", Some((0, 2)));
281mat!(match_basic_114, r"a[]]b", r"a]b", Some((0, 3)));
282mat!(match_basic_115, r"a[^bc]d", r"aed", Some((0, 3)));
283mat!(match_basic_116, r"a[^-b]c", r"adc", Some((0, 3)));
284mat!(match_basic_117, r"a[^]b]c", r"adc", Some((0, 3)));
285mat!(match_basic_118, r"ab|cd", r"abc", Some((0, 2)));
286mat!(match_basic_119, r"ab|cd", r"abcd", Some((0, 2)));
287mat!(match_basic_120, r"a\(b", r"a(b", Some((0, 3)));
288mat!(match_basic_121, r"a\(*b", r"ab", Some((0, 2)));
289mat!(match_basic_122, r"a\(*b", r"a((b", Some((0, 4)));
290mat!(
291    match_basic_123,
292    r"((a))",
293    r"abc",
294    Some((0, 1)),
295    Some((0, 1)),
296    Some((0, 1))
297);
298mat!(
299    match_basic_124,
300    r"(a)b(c)",
301    r"abc",
302    Some((0, 3)),
303    Some((0, 1)),
304    Some((2, 3))
305);
306mat!(match_basic_125, r"a+b+c", r"aabbabc", Some((4, 7)));
307mat!(match_basic_126, r"a*", r"aaa", Some((0, 3)));
308mat!(match_basic_128, r"(a*)*", r"-", Some((0, 0)), None);
309mat!(match_basic_129, r"(a*)+", r"-", Some((0, 0)), Some((0, 0)));
310mat!(match_basic_131, r"(a*|b)*", r"-", Some((0, 0)), None);
311mat!(match_basic_132, r"(a+|b)*", r"ab", Some((0, 2)), Some((1, 2)));
312mat!(match_basic_133, r"(a+|b)+", r"ab", Some((0, 2)), Some((1, 2)));
313mat!(match_basic_134, r"(a+|b)?", r"ab", Some((0, 1)), Some((0, 1)));
314mat!(match_basic_135, r"[^ab]*", r"cde", Some((0, 3)));
315mat!(match_basic_137, r"(^)*", r"-", Some((0, 0)), None);
316mat!(match_basic_138, r"a*", r"", Some((0, 0)));
317mat!(match_basic_139, r"([abc])*d", r"abbbcd", Some((0, 6)), Some((4, 5)));
318mat!(match_basic_140, r"([abc])*bcd", r"abcd", Some((0, 4)), Some((0, 1)));
319mat!(match_basic_141, r"a|b|c|d|e", r"e", Some((0, 1)));
320mat!(match_basic_142, r"(a|b|c|d|e)f", r"ef", Some((0, 2)), Some((0, 1)));
321mat!(match_basic_144, r"((a*|b))*", r"-", Some((0, 0)), None, None);
322mat!(match_basic_145, r"abcd*efg", r"abcdefg", Some((0, 7)));
323mat!(match_basic_146, r"ab*", r"xabyabbbz", Some((1, 3)));
324mat!(match_basic_147, r"ab*", r"xayabbbz", Some((1, 2)));
325mat!(match_basic_148, r"(ab|cd)e", r"abcde", Some((2, 5)), Some((2, 4)));
326mat!(match_basic_149, r"[abhgefdc]ij", r"hij", Some((0, 3)));
327mat!(match_basic_150, r"(a|b)c*d", r"abcd", Some((1, 4)), Some((1, 2)));
328mat!(match_basic_151, r"(ab|ab*)bc", r"abc", Some((0, 3)), Some((0, 1)));
329mat!(match_basic_152, r"a([bc]*)c*", r"abc", Some((0, 3)), Some((1, 3)));
330mat!(
331    match_basic_153,
332    r"a([bc]*)(c*d)",
333    r"abcd",
334    Some((0, 4)),
335    Some((1, 3)),
336    Some((3, 4))
337);
338mat!(
339    match_basic_154,
340    r"a([bc]+)(c*d)",
341    r"abcd",
342    Some((0, 4)),
343    Some((1, 3)),
344    Some((3, 4))
345);
346mat!(
347    match_basic_155,
348    r"a([bc]*)(c+d)",
349    r"abcd",
350    Some((0, 4)),
351    Some((1, 2)),
352    Some((2, 4))
353);
354mat!(match_basic_156, r"a[bcd]*dcdcde", r"adcdcde", Some((0, 7)));
355mat!(match_basic_157, r"(ab|a)b*c", r"abc", Some((0, 3)), Some((0, 2)));
356mat!(
357    match_basic_158,
358    r"((a)(b)c)(d)",
359    r"abcd",
360    Some((0, 4)),
361    Some((0, 3)),
362    Some((0, 1)),
363    Some((1, 2)),
364    Some((3, 4))
365);
366mat!(match_basic_159, r"[A-Za-z_][A-Za-z0-9_]*", r"alpha", Some((0, 5)));
367mat!(match_basic_160, r"^a(bc+|b[eh])g|.h$", r"abh", Some((1, 3)));
368mat!(
369    match_basic_161,
370    r"(bc+d$|ef*g.|h?i(j|k))",
371    r"effgz",
372    Some((0, 5)),
373    Some((0, 5))
374);
375mat!(
376    match_basic_162,
377    r"(bc+d$|ef*g.|h?i(j|k))",
378    r"ij",
379    Some((0, 2)),
380    Some((0, 2)),
381    Some((1, 2))
382);
383mat!(
384    match_basic_163,
385    r"(bc+d$|ef*g.|h?i(j|k))",
386    r"reffgz",
387    Some((1, 6)),
388    Some((1, 6))
389);
390mat!(
391    match_basic_164,
392    r"(((((((((a)))))))))",
393    r"a",
394    Some((0, 1)),
395    Some((0, 1)),
396    Some((0, 1)),
397    Some((0, 1)),
398    Some((0, 1)),
399    Some((0, 1)),
400    Some((0, 1)),
401    Some((0, 1)),
402    Some((0, 1)),
403    Some((0, 1))
404);
405mat!(
406    match_basic_165,
407    r"multiple words",
408    r"multiple words yeah",
409    Some((0, 14))
410);
411mat!(
412    match_basic_166,
413    r"(.*)c(.*)",
414    r"abcde",
415    Some((0, 5)),
416    Some((0, 2)),
417    Some((3, 5))
418);
419mat!(match_basic_167, r"abcd", r"abcd", Some((0, 4)));
420mat!(match_basic_168, r"a(bc)d", r"abcd", Some((0, 4)), Some((1, 3)));
421mat!(match_basic_169, r"a[-]?c", r"ac", Some((0, 3)));
422mat!(
423    match_basic_170,
424    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
425    r"Muammar Qaddafi",
426    Some((0, 15)),
427    None,
428    Some((10, 12))
429);
430mat!(
431    match_basic_171,
432    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
433    r"Mo'ammar Gadhafi",
434    Some((0, 16)),
435    None,
436    Some((11, 13))
437);
438mat!(
439    match_basic_172,
440    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
441    r"Muammar Kaddafi",
442    Some((0, 15)),
443    None,
444    Some((10, 12))
445);
446mat!(
447    match_basic_173,
448    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
449    r"Muammar Qadhafi",
450    Some((0, 15)),
451    None,
452    Some((10, 12))
453);
454mat!(
455    match_basic_174,
456    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
457    r"Muammar Gadafi",
458    Some((0, 14)),
459    None,
460    Some((10, 11))
461);
462mat!(
463    match_basic_175,
464    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
465    r"Mu'ammar Qadafi",
466    Some((0, 15)),
467    None,
468    Some((11, 12))
469);
470mat!(
471    match_basic_176,
472    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
473    r"Moamar Gaddafi",
474    Some((0, 14)),
475    None,
476    Some((9, 11))
477);
478mat!(
479    match_basic_177,
480    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
481    r"Mu'ammar Qadhdhafi",
482    Some((0, 18)),
483    None,
484    Some((13, 15))
485);
486mat!(
487    match_basic_178,
488    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
489    r"Muammar Khaddafi",
490    Some((0, 16)),
491    None,
492    Some((11, 13))
493);
494mat!(
495    match_basic_179,
496    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
497    r"Muammar Ghaddafy",
498    Some((0, 16)),
499    None,
500    Some((11, 13))
501);
502mat!(
503    match_basic_180,
504    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
505    r"Muammar Ghadafi",
506    Some((0, 15)),
507    None,
508    Some((11, 12))
509);
510mat!(
511    match_basic_181,
512    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
513    r"Muammar Ghaddafi",
514    Some((0, 16)),
515    None,
516    Some((11, 13))
517);
518mat!(
519    match_basic_182,
520    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
521    r"Muamar Kaddafi",
522    Some((0, 14)),
523    None,
524    Some((9, 11))
525);
526mat!(
527    match_basic_183,
528    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
529    r"Muammar Quathafi",
530    Some((0, 16)),
531    None,
532    Some((11, 13))
533);
534mat!(
535    match_basic_184,
536    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
537    r"Muammar Gheddafi",
538    Some((0, 16)),
539    None,
540    Some((11, 13))
541);
542mat!(
543    match_basic_185,
544    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
545    r"Moammar Khadafy",
546    Some((0, 15)),
547    None,
548    Some((11, 12))
549);
550mat!(
551    match_basic_186,
552    r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
553    r"Moammar Qudhafi",
554    Some((0, 15)),
555    None,
556    Some((10, 12))
557);
558mat!(match_basic_187, r"a+(b|c)*d+", r"aabcdd", Some((0, 6)), Some((3, 4)));
559mat!(match_basic_188, r"^.+$", r"vivi", Some((0, 4)));
560mat!(match_basic_189, r"^(.+)$", r"vivi", Some((0, 4)), Some((0, 4)));
561mat!(
562    match_basic_190,
563    r"^([^!.]+).att.com!(.+)$",
564    r"gryphon.att.com!eby",
565    Some((0, 19)),
566    Some((0, 7)),
567    Some((16, 19))
568);
569mat!(
570    match_basic_191,
571    r"^([^!]+!)?([^!]+)$",
572    r"bas",
573    Some((0, 3)),
574    None,
575    Some((0, 3))
576);
577mat!(
578    match_basic_192,
579    r"^([^!]+!)?([^!]+)$",
580    r"bar!bas",
581    Some((0, 7)),
582    Some((0, 4)),
583    Some((4, 7))
584);
585mat!(
586    match_basic_193,
587    r"^([^!]+!)?([^!]+)$",
588    r"foo!bas",
589    Some((0, 7)),
590    Some((0, 4)),
591    Some((4, 7))
592);
593mat!(
594    match_basic_194,
595    r"^.+!([^!]+!)([^!]+)$",
596    r"foo!bar!bas",
597    Some((0, 11)),
598    Some((4, 8)),
599    Some((8, 11))
600);
601mat!(
602    match_basic_195,
603    r"((foo)|(bar))!bas",
604    r"bar!bas",
605    Some((0, 7)),
606    Some((0, 3)),
607    None,
608    Some((0, 3))
609);
610mat!(
611    match_basic_196,
612    r"((foo)|(bar))!bas",
613    r"foo!bar!bas",
614    Some((4, 11)),
615    Some((4, 7)),
616    None,
617    Some((4, 7))
618);
619mat!(
620    match_basic_197,
621    r"((foo)|(bar))!bas",
622    r"foo!bas",
623    Some((0, 7)),
624    Some((0, 3)),
625    Some((0, 3))
626);
627mat!(
628    match_basic_198,
629    r"((foo)|bar)!bas",
630    r"bar!bas",
631    Some((0, 7)),
632    Some((0, 3))
633);
634mat!(
635    match_basic_199,
636    r"((foo)|bar)!bas",
637    r"foo!bar!bas",
638    Some((4, 11)),
639    Some((4, 7))
640);
641mat!(
642    match_basic_200,
643    r"((foo)|bar)!bas",
644    r"foo!bas",
645    Some((0, 7)),
646    Some((0, 3)),
647    Some((0, 3))
648);
649mat!(
650    match_basic_201,
651    r"(foo|(bar))!bas",
652    r"bar!bas",
653    Some((0, 7)),
654    Some((0, 3)),
655    Some((0, 3))
656);
657mat!(
658    match_basic_202,
659    r"(foo|(bar))!bas",
660    r"foo!bar!bas",
661    Some((4, 11)),
662    Some((4, 7)),
663    Some((4, 7))
664);
665mat!(
666    match_basic_203,
667    r"(foo|(bar))!bas",
668    r"foo!bas",
669    Some((0, 7)),
670    Some((0, 3))
671);
672mat!(
673    match_basic_204,
674    r"(foo|bar)!bas",
675    r"bar!bas",
676    Some((0, 7)),
677    Some((0, 3))
678);
679mat!(
680    match_basic_205,
681    r"(foo|bar)!bas",
682    r"foo!bar!bas",
683    Some((4, 11)),
684    Some((4, 7))
685);
686mat!(
687    match_basic_206,
688    r"(foo|bar)!bas",
689    r"foo!bas",
690    Some((0, 7)),
691    Some((0, 3))
692);
693mat!(
694    match_basic_207,
695    r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
696    r"foo!bar!bas",
697    Some((0, 11)),
698    Some((0, 11)),
699    None,
700    None,
701    Some((4, 8)),
702    Some((8, 11))
703);
704mat!(
705    match_basic_208,
706    r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
707    r"bas",
708    Some((0, 3)),
709    None,
710    Some((0, 3))
711);
712mat!(
713    match_basic_209,
714    r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
715    r"bar!bas",
716    Some((0, 7)),
717    Some((0, 4)),
718    Some((4, 7))
719);
720mat!(
721    match_basic_210,
722    r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
723    r"foo!bar!bas",
724    Some((0, 11)),
725    None,
726    None,
727    Some((4, 8)),
728    Some((8, 11))
729);
730mat!(
731    match_basic_211,
732    r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
733    r"foo!bas",
734    Some((0, 7)),
735    Some((0, 4)),
736    Some((4, 7))
737);
738mat!(
739    match_basic_212,
740    r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
741    r"bas",
742    Some((0, 3)),
743    Some((0, 3)),
744    None,
745    Some((0, 3))
746);
747mat!(
748    match_basic_213,
749    r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
750    r"bar!bas",
751    Some((0, 7)),
752    Some((0, 7)),
753    Some((0, 4)),
754    Some((4, 7))
755);
756mat!(
757    match_basic_214,
758    r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
759    r"foo!bar!bas",
760    Some((0, 11)),
761    Some((0, 11)),
762    None,
763    None,
764    Some((4, 8)),
765    Some((8, 11))
766);
767mat!(
768    match_basic_215,
769    r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
770    r"foo!bas",
771    Some((0, 7)),
772    Some((0, 7)),
773    Some((0, 4)),
774    Some((4, 7))
775);
776mat!(match_basic_216, r".*(/XXX).*", r"/XXX", Some((0, 4)), Some((0, 4)));
777mat!(match_basic_217, r".*(\\XXX).*", r"\XXX", Some((0, 4)), Some((0, 4)));
778mat!(match_basic_218, r"\\XXX", r"\XXX", Some((0, 4)));
779mat!(match_basic_219, r".*(/000).*", r"/000", Some((0, 4)), Some((0, 4)));
780mat!(match_basic_220, r".*(\\000).*", r"\000", Some((0, 4)), Some((0, 4)));
781mat!(match_basic_221, r"\\000", r"\000", Some((0, 4)));
782
783// Tests from nullsubexpr.dat
784mat!(match_nullsubexpr_3, r"(a*)*", r"a", Some((0, 1)), Some((0, 1)));
785mat!(match_nullsubexpr_5, r"(a*)*", r"x", Some((0, 0)), None);
786mat!(match_nullsubexpr_6, r"(a*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
787mat!(match_nullsubexpr_7, r"(a*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
788mat!(match_nullsubexpr_8, r"(a*)+", r"a", Some((0, 1)), Some((0, 1)));
789mat!(match_nullsubexpr_9, r"(a*)+", r"x", Some((0, 0)), Some((0, 0)));
790mat!(match_nullsubexpr_10, r"(a*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
791mat!(match_nullsubexpr_11, r"(a*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
792mat!(match_nullsubexpr_12, r"(a+)*", r"a", Some((0, 1)), Some((0, 1)));
793mat!(match_nullsubexpr_13, r"(a+)*", r"x", Some((0, 0)));
794mat!(match_nullsubexpr_14, r"(a+)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
795mat!(match_nullsubexpr_15, r"(a+)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
796mat!(match_nullsubexpr_16, r"(a+)+", r"a", Some((0, 1)), Some((0, 1)));
797mat!(match_nullsubexpr_17, r"(a+)+", r"x", None);
798mat!(match_nullsubexpr_18, r"(a+)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
799mat!(match_nullsubexpr_19, r"(a+)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
800mat!(match_nullsubexpr_21, r"([a]*)*", r"a", Some((0, 1)), Some((0, 1)));
801mat!(match_nullsubexpr_23, r"([a]*)*", r"x", Some((0, 0)), None);
802mat!(match_nullsubexpr_24, r"([a]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
803mat!(match_nullsubexpr_25, r"([a]*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
804mat!(match_nullsubexpr_26, r"([a]*)+", r"a", Some((0, 1)), Some((0, 1)));
805mat!(match_nullsubexpr_27, r"([a]*)+", r"x", Some((0, 0)), Some((0, 0)));
806mat!(match_nullsubexpr_28, r"([a]*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
807mat!(match_nullsubexpr_29, r"([a]*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
808mat!(match_nullsubexpr_30, r"([^b]*)*", r"a", Some((0, 1)), Some((0, 1)));
809mat!(match_nullsubexpr_32, r"([^b]*)*", r"b", Some((0, 0)), None);
810mat!(match_nullsubexpr_33, r"([^b]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
811mat!(
812    match_nullsubexpr_34,
813    r"([^b]*)*",
814    r"aaaaaab",
815    Some((0, 6)),
816    Some((0, 6))
817);
818mat!(match_nullsubexpr_35, r"([ab]*)*", r"a", Some((0, 1)), Some((0, 1)));
819mat!(match_nullsubexpr_36, r"([ab]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
820mat!(match_nullsubexpr_37, r"([ab]*)*", r"ababab", Some((0, 6)), Some((0, 6)));
821mat!(match_nullsubexpr_38, r"([ab]*)*", r"bababa", Some((0, 6)), Some((0, 6)));
822mat!(match_nullsubexpr_39, r"([ab]*)*", r"b", Some((0, 1)), Some((0, 1)));
823mat!(match_nullsubexpr_40, r"([ab]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
824mat!(
825    match_nullsubexpr_41,
826    r"([ab]*)*",
827    r"aaaabcde",
828    Some((0, 5)),
829    Some((0, 5))
830);
831mat!(match_nullsubexpr_42, r"([^a]*)*", r"b", Some((0, 1)), Some((0, 1)));
832mat!(match_nullsubexpr_43, r"([^a]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
833mat!(match_nullsubexpr_45, r"([^a]*)*", r"aaaaaa", Some((0, 0)), None);
834mat!(
835    match_nullsubexpr_46,
836    r"([^ab]*)*",
837    r"ccccxx",
838    Some((0, 6)),
839    Some((0, 6))
840);
841mat!(match_nullsubexpr_48, r"([^ab]*)*", r"ababab", Some((0, 0)), None);
842mat!(
843    match_nullsubexpr_50,
844    r"((z)+|a)*",
845    r"zabcde",
846    Some((0, 2)),
847    Some((1, 2))
848);
849mat!(
850    match_nullsubexpr_69,
851    r"(a*)*(x)",
852    r"x",
853    Some((0, 1)),
854    None,
855    Some((0, 1))
856);
857mat!(
858    match_nullsubexpr_70,
859    r"(a*)*(x)",
860    r"ax",
861    Some((0, 2)),
862    Some((0, 1)),
863    Some((1, 2))
864);
865mat!(
866    match_nullsubexpr_71,
867    r"(a*)*(x)",
868    r"axa",
869    Some((0, 2)),
870    Some((0, 1)),
871    Some((1, 2))
872);
873mat!(
874    match_nullsubexpr_73,
875    r"(a*)+(x)",
876    r"x",
877    Some((0, 1)),
878    Some((0, 0)),
879    Some((0, 1))
880);
881mat!(
882    match_nullsubexpr_74,
883    r"(a*)+(x)",
884    r"ax",
885    Some((0, 2)),
886    Some((0, 1)),
887    Some((1, 2))
888);
889mat!(
890    match_nullsubexpr_75,
891    r"(a*)+(x)",
892    r"axa",
893    Some((0, 2)),
894    Some((0, 1)),
895    Some((1, 2))
896);
897mat!(
898    match_nullsubexpr_77,
899    r"(a*){2}(x)",
900    r"x",
901    Some((0, 1)),
902    Some((0, 0)),
903    Some((0, 1))
904);
905mat!(
906    match_nullsubexpr_78,
907    r"(a*){2}(x)",
908    r"ax",
909    Some((0, 2)),
910    Some((1, 1)),
911    Some((1, 2))
912);
913mat!(
914    match_nullsubexpr_79,
915    r"(a*){2}(x)",
916    r"axa",
917    Some((0, 2)),
918    Some((1, 1)),
919    Some((1, 2))
920);
921
922// Tests from repetition.dat
923mat!(match_repetition_10, r"((..)|(.))", r"", None);
924mat!(match_repetition_11, r"((..)|(.))((..)|(.))", r"", None);
925mat!(match_repetition_12, r"((..)|(.))((..)|(.))((..)|(.))", r"", None);
926mat!(match_repetition_14, r"((..)|(.)){1}", r"", None);
927mat!(match_repetition_15, r"((..)|(.)){2}", r"", None);
928mat!(match_repetition_16, r"((..)|(.)){3}", r"", None);
929mat!(match_repetition_18, r"((..)|(.))*", r"", Some((0, 0)));
930mat!(
931    match_repetition_20,
932    r"((..)|(.))",
933    r"a",
934    Some((0, 1)),
935    Some((0, 1)),
936    None,
937    Some((0, 1))
938);
939mat!(match_repetition_21, r"((..)|(.))((..)|(.))", r"a", None);
940mat!(match_repetition_22, r"((..)|(.))((..)|(.))((..)|(.))", r"a", None);
941mat!(
942    match_repetition_24,
943    r"((..)|(.)){1}",
944    r"a",
945    Some((0, 1)),
946    Some((0, 1)),
947    None,
948    Some((0, 1))
949);
950mat!(match_repetition_25, r"((..)|(.)){2}", r"a", None);
951mat!(match_repetition_26, r"((..)|(.)){3}", r"a", None);
952mat!(
953    match_repetition_28,
954    r"((..)|(.))*",
955    r"a",
956    Some((0, 1)),
957    Some((0, 1)),
958    None,
959    Some((0, 1))
960);
961mat!(
962    match_repetition_30,
963    r"((..)|(.))",
964    r"aa",
965    Some((0, 2)),
966    Some((0, 2)),
967    Some((0, 2)),
968    None
969);
970mat!(
971    match_repetition_31,
972    r"((..)|(.))((..)|(.))",
973    r"aa",
974    Some((0, 2)),
975    Some((0, 1)),
976    None,
977    Some((0, 1)),
978    Some((1, 2)),
979    None,
980    Some((1, 2))
981);
982mat!(match_repetition_32, r"((..)|(.))((..)|(.))((..)|(.))", r"aa", None);
983mat!(
984    match_repetition_34,
985    r"((..)|(.)){1}",
986    r"aa",
987    Some((0, 2)),
988    Some((0, 2)),
989    Some((0, 2)),
990    None
991);
992mat!(
993    match_repetition_35,
994    r"((..)|(.)){2}",
995    r"aa",
996    Some((0, 2)),
997    Some((1, 2)),
998    None,
999    Some((1, 2))
1000);
1001mat!(match_repetition_36, r"((..)|(.)){3}", r"aa", None);
1002mat!(
1003    match_repetition_38,
1004    r"((..)|(.))*",
1005    r"aa",
1006    Some((0, 2)),
1007    Some((0, 2)),
1008    Some((0, 2)),
1009    None
1010);
1011mat!(
1012    match_repetition_40,
1013    r"((..)|(.))",
1014    r"aaa",
1015    Some((0, 2)),
1016    Some((0, 2)),
1017    Some((0, 2)),
1018    None
1019);
1020mat!(
1021    match_repetition_41,
1022    r"((..)|(.))((..)|(.))",
1023    r"aaa",
1024    Some((0, 3)),
1025    Some((0, 2)),
1026    Some((0, 2)),
1027    None,
1028    Some((2, 3)),
1029    None,
1030    Some((2, 3))
1031);
1032mat!(
1033    match_repetition_42,
1034    r"((..)|(.))((..)|(.))((..)|(.))",
1035    r"aaa",
1036    Some((0, 3)),
1037    Some((0, 1)),
1038    None,
1039    Some((0, 1)),
1040    Some((1, 2)),
1041    None,
1042    Some((1, 2)),
1043    Some((2, 3)),
1044    None,
1045    Some((2, 3))
1046);
1047mat!(
1048    match_repetition_44,
1049    r"((..)|(.)){1}",
1050    r"aaa",
1051    Some((0, 2)),
1052    Some((0, 2)),
1053    Some((0, 2)),
1054    None
1055);
1056mat!(
1057    match_repetition_46,
1058    r"((..)|(.)){2}",
1059    r"aaa",
1060    Some((0, 3)),
1061    Some((2, 3)),
1062    Some((0, 2)),
1063    Some((2, 3))
1064);
1065mat!(
1066    match_repetition_47,
1067    r"((..)|(.)){3}",
1068    r"aaa",
1069    Some((0, 3)),
1070    Some((2, 3)),
1071    None,
1072    Some((2, 3))
1073);
1074mat!(
1075    match_repetition_50,
1076    r"((..)|(.))*",
1077    r"aaa",
1078    Some((0, 3)),
1079    Some((2, 3)),
1080    Some((0, 2)),
1081    Some((2, 3))
1082);
1083mat!(
1084    match_repetition_52,
1085    r"((..)|(.))",
1086    r"aaaa",
1087    Some((0, 2)),
1088    Some((0, 2)),
1089    Some((0, 2)),
1090    None
1091);
1092mat!(
1093    match_repetition_53,
1094    r"((..)|(.))((..)|(.))",
1095    r"aaaa",
1096    Some((0, 4)),
1097    Some((0, 2)),
1098    Some((0, 2)),
1099    None,
1100    Some((2, 4)),
1101    Some((2, 4)),
1102    None
1103);
1104mat!(
1105    match_repetition_54,
1106    r"((..)|(.))((..)|(.))((..)|(.))",
1107    r"aaaa",
1108    Some((0, 4)),
1109    Some((0, 2)),
1110    Some((0, 2)),
1111    None,
1112    Some((2, 3)),
1113    None,
1114    Some((2, 3)),
1115    Some((3, 4)),
1116    None,
1117    Some((3, 4))
1118);
1119mat!(
1120    match_repetition_56,
1121    r"((..)|(.)){1}",
1122    r"aaaa",
1123    Some((0, 2)),
1124    Some((0, 2)),
1125    Some((0, 2)),
1126    None
1127);
1128mat!(
1129    match_repetition_57,
1130    r"((..)|(.)){2}",
1131    r"aaaa",
1132    Some((0, 4)),
1133    Some((2, 4)),
1134    Some((2, 4)),
1135    None
1136);
1137mat!(
1138    match_repetition_59,
1139    r"((..)|(.)){3}",
1140    r"aaaa",
1141    Some((0, 4)),
1142    Some((3, 4)),
1143    Some((0, 2)),
1144    Some((3, 4))
1145);
1146mat!(
1147    match_repetition_61,
1148    r"((..)|(.))*",
1149    r"aaaa",
1150    Some((0, 4)),
1151    Some((2, 4)),
1152    Some((2, 4)),
1153    None
1154);
1155mat!(
1156    match_repetition_63,
1157    r"((..)|(.))",
1158    r"aaaaa",
1159    Some((0, 2)),
1160    Some((0, 2)),
1161    Some((0, 2)),
1162    None
1163);
1164mat!(
1165    match_repetition_64,
1166    r"((..)|(.))((..)|(.))",
1167    r"aaaaa",
1168    Some((0, 4)),
1169    Some((0, 2)),
1170    Some((0, 2)),
1171    None,
1172    Some((2, 4)),
1173    Some((2, 4)),
1174    None
1175);
1176mat!(
1177    match_repetition_65,
1178    r"((..)|(.))((..)|(.))((..)|(.))",
1179    r"aaaaa",
1180    Some((0, 5)),
1181    Some((0, 2)),
1182    Some((0, 2)),
1183    None,
1184    Some((2, 4)),
1185    Some((2, 4)),
1186    None,
1187    Some((4, 5)),
1188    None,
1189    Some((4, 5))
1190);
1191mat!(
1192    match_repetition_67,
1193    r"((..)|(.)){1}",
1194    r"aaaaa",
1195    Some((0, 2)),
1196    Some((0, 2)),
1197    Some((0, 2)),
1198    None
1199);
1200mat!(
1201    match_repetition_68,
1202    r"((..)|(.)){2}",
1203    r"aaaaa",
1204    Some((0, 4)),
1205    Some((2, 4)),
1206    Some((2, 4)),
1207    None
1208);
1209mat!(
1210    match_repetition_70,
1211    r"((..)|(.)){3}",
1212    r"aaaaa",
1213    Some((0, 5)),
1214    Some((4, 5)),
1215    Some((2, 4)),
1216    Some((4, 5))
1217);
1218mat!(
1219    match_repetition_73,
1220    r"((..)|(.))*",
1221    r"aaaaa",
1222    Some((0, 5)),
1223    Some((4, 5)),
1224    Some((2, 4)),
1225    Some((4, 5))
1226);
1227mat!(
1228    match_repetition_75,
1229    r"((..)|(.))",
1230    r"aaaaaa",
1231    Some((0, 2)),
1232    Some((0, 2)),
1233    Some((0, 2)),
1234    None
1235);
1236mat!(
1237    match_repetition_76,
1238    r"((..)|(.))((..)|(.))",
1239    r"aaaaaa",
1240    Some((0, 4)),
1241    Some((0, 2)),
1242    Some((0, 2)),
1243    None,
1244    Some((2, 4)),
1245    Some((2, 4)),
1246    None
1247);
1248mat!(
1249    match_repetition_77,
1250    r"((..)|(.))((..)|(.))((..)|(.))",
1251    r"aaaaaa",
1252    Some((0, 6)),
1253    Some((0, 2)),
1254    Some((0, 2)),
1255    None,
1256    Some((2, 4)),
1257    Some((2, 4)),
1258    None,
1259    Some((4, 6)),
1260    Some((4, 6)),
1261    None
1262);
1263mat!(
1264    match_repetition_79,
1265    r"((..)|(.)){1}",
1266    r"aaaaaa",
1267    Some((0, 2)),
1268    Some((0, 2)),
1269    Some((0, 2)),
1270    None
1271);
1272mat!(
1273    match_repetition_80,
1274    r"((..)|(.)){2}",
1275    r"aaaaaa",
1276    Some((0, 4)),
1277    Some((2, 4)),
1278    Some((2, 4)),
1279    None
1280);
1281mat!(
1282    match_repetition_81,
1283    r"((..)|(.)){3}",
1284    r"aaaaaa",
1285    Some((0, 6)),
1286    Some((4, 6)),
1287    Some((4, 6)),
1288    None
1289);
1290mat!(
1291    match_repetition_83,
1292    r"((..)|(.))*",
1293    r"aaaaaa",
1294    Some((0, 6)),
1295    Some((4, 6)),
1296    Some((4, 6)),
1297    None
1298);
1299mat!(
1300    match_repetition_90,
1301    r"X(.?){0,}Y",
1302    r"X1234567Y",
1303    Some((0, 9)),
1304    Some((7, 8))
1305);
1306mat!(
1307    match_repetition_91,
1308    r"X(.?){1,}Y",
1309    r"X1234567Y",
1310    Some((0, 9)),
1311    Some((7, 8))
1312);
1313mat!(
1314    match_repetition_92,
1315    r"X(.?){2,}Y",
1316    r"X1234567Y",
1317    Some((0, 9)),
1318    Some((7, 8))
1319);
1320mat!(
1321    match_repetition_93,
1322    r"X(.?){3,}Y",
1323    r"X1234567Y",
1324    Some((0, 9)),
1325    Some((7, 8))
1326);
1327mat!(
1328    match_repetition_94,
1329    r"X(.?){4,}Y",
1330    r"X1234567Y",
1331    Some((0, 9)),
1332    Some((7, 8))
1333);
1334mat!(
1335    match_repetition_95,
1336    r"X(.?){5,}Y",
1337    r"X1234567Y",
1338    Some((0, 9)),
1339    Some((7, 8))
1340);
1341mat!(
1342    match_repetition_96,
1343    r"X(.?){6,}Y",
1344    r"X1234567Y",
1345    Some((0, 9)),
1346    Some((7, 8))
1347);
1348mat!(
1349    match_repetition_97,
1350    r"X(.?){7,}Y",
1351    r"X1234567Y",
1352    Some((0, 9)),
1353    Some((7, 8))
1354);
1355mat!(
1356    match_repetition_98,
1357    r"X(.?){8,}Y",
1358    r"X1234567Y",
1359    Some((0, 9)),
1360    Some((8, 8))
1361);
1362mat!(
1363    match_repetition_100,
1364    r"X(.?){0,8}Y",
1365    r"X1234567Y",
1366    Some((0, 9)),
1367    Some((8, 8))
1368);
1369mat!(
1370    match_repetition_102,
1371    r"X(.?){1,8}Y",
1372    r"X1234567Y",
1373    Some((0, 9)),
1374    Some((8, 8))
1375);
1376mat!(
1377    match_repetition_104,
1378    r"X(.?){2,8}Y",
1379    r"X1234567Y",
1380    Some((0, 9)),
1381    Some((8, 8))
1382);
1383mat!(
1384    match_repetition_106,
1385    r"X(.?){3,8}Y",
1386    r"X1234567Y",
1387    Some((0, 9)),
1388    Some((8, 8))
1389);
1390mat!(
1391    match_repetition_108,
1392    r"X(.?){4,8}Y",
1393    r"X1234567Y",
1394    Some((0, 9)),
1395    Some((8, 8))
1396);
1397mat!(
1398    match_repetition_110,
1399    r"X(.?){5,8}Y",
1400    r"X1234567Y",
1401    Some((0, 9)),
1402    Some((8, 8))
1403);
1404mat!(
1405    match_repetition_112,
1406    r"X(.?){6,8}Y",
1407    r"X1234567Y",
1408    Some((0, 9)),
1409    Some((8, 8))
1410);
1411mat!(
1412    match_repetition_114,
1413    r"X(.?){7,8}Y",
1414    r"X1234567Y",
1415    Some((0, 9)),
1416    Some((8, 8))
1417);
1418mat!(
1419    match_repetition_115,
1420    r"X(.?){8,8}Y",
1421    r"X1234567Y",
1422    Some((0, 9)),
1423    Some((8, 8))
1424);
1425mat!(
1426    match_repetition_126,
1427    r"(a|ab|c|bcd){0,}(d*)",
1428    r"ababcd",
1429    Some((0, 1)),
1430    Some((0, 1)),
1431    Some((1, 1))
1432);
1433mat!(
1434    match_repetition_127,
1435    r"(a|ab|c|bcd){1,}(d*)",
1436    r"ababcd",
1437    Some((0, 1)),
1438    Some((0, 1)),
1439    Some((1, 1))
1440);
1441mat!(
1442    match_repetition_128,
1443    r"(a|ab|c|bcd){2,}(d*)",
1444    r"ababcd",
1445    Some((0, 6)),
1446    Some((3, 6)),
1447    Some((6, 6))
1448);
1449mat!(
1450    match_repetition_129,
1451    r"(a|ab|c|bcd){3,}(d*)",
1452    r"ababcd",
1453    Some((0, 6)),
1454    Some((3, 6)),
1455    Some((6, 6))
1456);
1457mat!(match_repetition_130, r"(a|ab|c|bcd){4,}(d*)", r"ababcd", None);
1458mat!(
1459    match_repetition_131,
1460    r"(a|ab|c|bcd){0,10}(d*)",
1461    r"ababcd",
1462    Some((0, 1)),
1463    Some((0, 1)),
1464    Some((1, 1))
1465);
1466mat!(
1467    match_repetition_132,
1468    r"(a|ab|c|bcd){1,10}(d*)",
1469    r"ababcd",
1470    Some((0, 1)),
1471    Some((0, 1)),
1472    Some((1, 1))
1473);
1474mat!(
1475    match_repetition_133,
1476    r"(a|ab|c|bcd){2,10}(d*)",
1477    r"ababcd",
1478    Some((0, 6)),
1479    Some((3, 6)),
1480    Some((6, 6))
1481);
1482mat!(
1483    match_repetition_134,
1484    r"(a|ab|c|bcd){3,10}(d*)",
1485    r"ababcd",
1486    Some((0, 6)),
1487    Some((3, 6)),
1488    Some((6, 6))
1489);
1490mat!(match_repetition_135, r"(a|ab|c|bcd){4,10}(d*)", r"ababcd", None);
1491mat!(
1492    match_repetition_136,
1493    r"(a|ab|c|bcd)*(d*)",
1494    r"ababcd",
1495    Some((0, 1)),
1496    Some((0, 1)),
1497    Some((1, 1))
1498);
1499mat!(
1500    match_repetition_137,
1501    r"(a|ab|c|bcd)+(d*)",
1502    r"ababcd",
1503    Some((0, 1)),
1504    Some((0, 1)),
1505    Some((1, 1))
1506);
1507mat!(
1508    match_repetition_143,
1509    r"(ab|a|c|bcd){0,}(d*)",
1510    r"ababcd",
1511    Some((0, 6)),
1512    Some((4, 5)),
1513    Some((5, 6))
1514);
1515mat!(
1516    match_repetition_145,
1517    r"(ab|a|c|bcd){1,}(d*)",
1518    r"ababcd",
1519    Some((0, 6)),
1520    Some((4, 5)),
1521    Some((5, 6))
1522);
1523mat!(
1524    match_repetition_147,
1525    r"(ab|a|c|bcd){2,}(d*)",
1526    r"ababcd",
1527    Some((0, 6)),
1528    Some((4, 5)),
1529    Some((5, 6))
1530);
1531mat!(
1532    match_repetition_149,
1533    r"(ab|a|c|bcd){3,}(d*)",
1534    r"ababcd",
1535    Some((0, 6)),
1536    Some((4, 5)),
1537    Some((5, 6))
1538);
1539mat!(match_repetition_150, r"(ab|a|c|bcd){4,}(d*)", r"ababcd", None);
1540mat!(
1541    match_repetition_152,
1542    r"(ab|a|c|bcd){0,10}(d*)",
1543    r"ababcd",
1544    Some((0, 6)),
1545    Some((4, 5)),
1546    Some((5, 6))
1547);
1548mat!(
1549    match_repetition_154,
1550    r"(ab|a|c|bcd){1,10}(d*)",
1551    r"ababcd",
1552    Some((0, 6)),
1553    Some((4, 5)),
1554    Some((5, 6))
1555);
1556mat!(
1557    match_repetition_156,
1558    r"(ab|a|c|bcd){2,10}(d*)",
1559    r"ababcd",
1560    Some((0, 6)),
1561    Some((4, 5)),
1562    Some((5, 6))
1563);
1564mat!(
1565    match_repetition_158,
1566    r"(ab|a|c|bcd){3,10}(d*)",
1567    r"ababcd",
1568    Some((0, 6)),
1569    Some((4, 5)),
1570    Some((5, 6))
1571);
1572mat!(match_repetition_159, r"(ab|a|c|bcd){4,10}(d*)", r"ababcd", None);
1573mat!(
1574    match_repetition_161,
1575    r"(ab|a|c|bcd)*(d*)",
1576    r"ababcd",
1577    Some((0, 6)),
1578    Some((4, 5)),
1579    Some((5, 6))
1580);
1581mat!(
1582    match_repetition_163,
1583    r"(ab|a|c|bcd)+(d*)",
1584    r"ababcd",
1585    Some((0, 6)),
1586    Some((4, 5)),
1587    Some((5, 6))
1588);
1589