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
5 mat!(match_basic_3, r"abracadabra$", r"abracadabracadabra", Some((7, 18)));
6 mat!(match_basic_4, r"a...b", r"abababbb", Some((2, 7)));
7 mat!(match_basic_5, r"XXXXXX", r"..XXXXXX", Some((2, 8)));
8 mat!(match_basic_6, r"\)", r"()", Some((1, 2)));
9 mat!(match_basic_7, r"a]", r"a]a", Some((0, 2)));
10 mat!(match_basic_9, r"\}", r"}", Some((0, 1)));
11 mat!(match_basic_10, r"\]", r"]", Some((0, 1)));
12 mat!(match_basic_12, r"]", r"]", Some((0, 1)));
13 mat!(match_basic_15, r"^a", r"ax", Some((0, 1)));
14 mat!(match_basic_16, r"\^a", r"a^a", Some((1, 3)));
15 mat!(match_basic_17, r"a\^", r"a^", Some((0, 2)));
16 mat!(match_basic_18, r"a$", r"aa", Some((1, 2)));
17 mat!(match_basic_19, r"a\$", r"a$", Some((0, 2)));
18 mat!(match_basic_20, r"^$", r"", Some((0, 0)));
19 mat!(match_basic_21, r"$^", r"", Some((0, 0)));
20 mat!(match_basic_22, r"a($)", r"aa", Some((1, 2)), Some((2, 2)));
21 mat!(match_basic_23, r"a*(^a)", r"aa", Some((0, 1)), Some((0, 1)));
22 mat!(match_basic_24, r"(..)*(...)*", r"a", Some((0, 0)));
23 mat!(match_basic_25, r"(..)*(...)*", r"abcd", Some((0, 4)), Some((2, 4)));
24 mat!(
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 );
32 mat!(match_basic_27, r"(ab)c|abc", r"abc", Some((0, 3)), Some((0, 2)));
33 mat!(match_basic_28, r"a{0}b", r"ab", Some((1, 2)));
34 mat!(
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 );
43 mat!(
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 );
52 mat!(
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 );
60 mat!(
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 );
68 mat!(match_basic_34, r"a*(a.|aa)", r"aaaa", Some((0, 4)), Some((2, 4)));
69 mat!(
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 );
78 mat!(match_basic_36, r"(a|b)?.*", r"b", Some((0, 1)), Some((0, 1)));
79 mat!(match_basic_37, r"(a|b)c|a(b|c)", r"ac", Some((0, 2)), Some((0, 1)));
80 mat!(
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 );
88 mat!(match_basic_39, r"(a|b)*c|(a|ab)*c", r"abc", Some((0, 3)), Some((1, 2)));
89 mat!(match_basic_40, r"(a|b)*c|(a|ab)*c", r"xc", Some((1, 2)));
90 mat!(
91     match_basic_41,
92     r"(.a|.b).*|.*(.a|.b)",
93     r"xa",
94     Some((0, 2)),
95     Some((0, 2))
96 );
97 mat!(match_basic_42, r"a?(ab|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
98 mat!(match_basic_43, r"a?(ac{0}b|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
99 mat!(match_basic_44, r"ab|abab", r"abbabab", Some((0, 2)));
100 mat!(match_basic_45, r"aba|bab|bba", r"baaabbbaba", Some((5, 8)));
101 mat!(match_basic_46, r"aba|bab", r"baaabbbaba", Some((6, 9)));
102 mat!(
103     match_basic_47,
104     r"(aa|aaa)*|(a|aaaaa)",
105     r"aa",
106     Some((0, 2)),
107     Some((0, 2))
108 );
109 mat!(
110     match_basic_48,
111     r"(a.|.a.)*|(a|.a...)",
112     r"aa",
113     Some((0, 2)),
114     Some((0, 2))
115 );
116 mat!(match_basic_49, r"ab|a", r"xabc", Some((1, 3)));
117 mat!(match_basic_50, r"ab|a", r"xxabc", Some((2, 4)));
118 mat!(
119     match_basic_51,
120     r"(?i)(?-u)(Ab|cD)*",
121     r"aBcD",
122     Some((0, 4)),
123     Some((2, 4))
124 );
125 mat!(match_basic_52, r"[^-]", r"--a", Some((2, 3)));
126 mat!(match_basic_53, r"[a-]*", r"--a", Some((0, 3)));
127 mat!(match_basic_54, r"[a-m-]*", r"--amoma--", Some((0, 4)));
128 mat!(
129     match_basic_55,
130     r":::1:::0:|:::1:1:0:",
131     r":::0:::1:::1:::0:",
132     Some((8, 17))
133 );
134 mat!(
135     match_basic_56,
136     r":::1:::0:|:::1:1:1:",
137     r":::0:::1:::1:::0:",
138     Some((8, 17))
139 );
140 mat!(match_basic_57, r"[[:upper:]]", r"A", Some((0, 1)));
141 mat!(match_basic_58, r"[[:lower:]]+", r"`az{", Some((1, 3)));
142 mat!(match_basic_59, r"[[:upper:]]+", r"@AZ[", Some((1, 3)));
143 mat!(
144     match_basic_65,
145     r"
146 ",
147     r"
148 ",
149     Some((0, 1))
150 );
151 mat!(
152     match_basic_66,
153     r"
154 ",
155     r"
156 ",
157     Some((0, 1))
158 );
159 mat!(
160     match_basic_67,
161     r"[^a]",
162     r"
163 ",
164     Some((0, 1))
165 );
166 mat!(
167     match_basic_68,
168     r"
169 a",
170     r"
171 a",
172     Some((0, 2))
173 );
174 mat!(
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 );
183 mat!(match_basic_70, r"xxx", r"xxx", Some((0, 3)));
184 mat!(
185     match_basic_71,
186     r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
187     r"feb 6,",
188     Some((0, 6))
189 );
190 mat!(
191     match_basic_72,
192     r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
193     r"2/7",
194     Some((0, 3))
195 );
196 mat!(
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 );
202 mat!(
203     match_basic_74,
204     r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))",
205     r"x",
206     Some((0, 1)),
207     Some((0, 1)),
208     Some((0, 1))
209 );
210 mat!(
211     match_basic_75,
212     r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))*",
213     r"xx",
214     Some((0, 2)),
215     Some((1, 2)),
216     Some((1, 2))
217 );
218 mat!(
219     match_basic_76,
220     r"a?(ab|ba)*",
221     r"ababababababababababababababababababababababababababababababababababababababababa",
222     Some((0, 81)),
223     Some((79, 81))
224 );
225 mat!(
226     match_basic_77,
227     r"abaa|abbaa|abbbaa|abbbbaa",
228     r"ababbabbbabbbabbbbabbbbaa",
229     Some((18, 25))
230 );
231 mat!(
232     match_basic_78,
233     r"abaa|abbaa|abbbaa|abbbbaa",
234     r"ababbabbbabbbabbbbabaa",
235     Some((18, 22))
236 );
237 mat!(
238     match_basic_79,
239     r"aaac|aabc|abac|abbc|baac|babc|bbac|bbbc",
240     r"baaabbbabac",
241     Some((7, 11))
242 );
243 mat!(match_basic_80, r".*", r"", Some((0, 2)));
244 mat!(
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 );
250 mat!(match_basic_83, r"a*a*a*a*a*b", r"aaaaaaaaab", Some((0, 10)));
251 mat!(match_basic_84, r"^", r"", Some((0, 0)));
252 mat!(match_basic_85, r"$", r"", Some((0, 0)));
253 mat!(match_basic_86, r"^$", r"", Some((0, 0)));
254 mat!(match_basic_87, r"^a$", r"a", Some((0, 1)));
255 mat!(match_basic_88, r"abc", r"abc", Some((0, 3)));
256 mat!(match_basic_89, r"abc", r"xabcy", Some((1, 4)));
257 mat!(match_basic_90, r"abc", r"ababc", Some((2, 5)));
258 mat!(match_basic_91, r"ab*c", r"abc", Some((0, 3)));
259 mat!(match_basic_92, r"ab*bc", r"abc", Some((0, 3)));
260 mat!(match_basic_93, r"ab*bc", r"abbc", Some((0, 4)));
261 mat!(match_basic_94, r"ab*bc", r"abbbbc", Some((0, 6)));
262 mat!(match_basic_95, r"ab+bc", r"abbc", Some((0, 4)));
263 mat!(match_basic_96, r"ab+bc", r"abbbbc", Some((0, 6)));
264 mat!(match_basic_97, r"ab?bc", r"abbc", Some((0, 4)));
265 mat!(match_basic_98, r"ab?bc", r"abc", Some((0, 3)));
266 mat!(match_basic_99, r"ab?c", r"abc", Some((0, 3)));
267 mat!(match_basic_100, r"^abc$", r"abc", Some((0, 3)));
268 mat!(match_basic_101, r"^abc", r"abcc", Some((0, 3)));
269 mat!(match_basic_102, r"abc$", r"aabc", Some((1, 4)));
270 mat!(match_basic_103, r"^", r"abc", Some((0, 0)));
271 mat!(match_basic_104, r"$", r"abc", Some((3, 3)));
272 mat!(match_basic_105, r"a.c", r"abc", Some((0, 3)));
273 mat!(match_basic_106, r"a.c", r"axc", Some((0, 3)));
274 mat!(match_basic_107, r"a.*c", r"axyzc", Some((0, 5)));
275 mat!(match_basic_108, r"a[bc]d", r"abd", Some((0, 3)));
276 mat!(match_basic_109, r"a[b-d]e", r"ace", Some((0, 3)));
277 mat!(match_basic_110, r"a[b-d]", r"aac", Some((1, 3)));
278 mat!(match_basic_111, r"a[-b]", r"a-", Some((0, 2)));
279 mat!(match_basic_112, r"a[b-]", r"a-", Some((0, 2)));
280 mat!(match_basic_113, r"a]", r"a]", Some((0, 2)));
281 mat!(match_basic_114, r"a[]]b", r"a]b", Some((0, 3)));
282 mat!(match_basic_115, r"a[^bc]d", r"aed", Some((0, 3)));
283 mat!(match_basic_116, r"a[^-b]c", r"adc", Some((0, 3)));
284 mat!(match_basic_117, r"a[^]b]c", r"adc", Some((0, 3)));
285 mat!(match_basic_118, r"ab|cd", r"abc", Some((0, 2)));
286 mat!(match_basic_119, r"ab|cd", r"abcd", Some((0, 2)));
287 mat!(match_basic_120, r"a\(b", r"a(b", Some((0, 3)));
288 mat!(match_basic_121, r"a\(*b", r"ab", Some((0, 2)));
289 mat!(match_basic_122, r"a\(*b", r"a((b", Some((0, 4)));
290 mat!(
291     match_basic_123,
292     r"((a))",
293     r"abc",
294     Some((0, 1)),
295     Some((0, 1)),
296     Some((0, 1))
297 );
298 mat!(
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 );
306 mat!(match_basic_125, r"a+b+c", r"aabbabc", Some((4, 7)));
307 mat!(match_basic_126, r"a*", r"aaa", Some((0, 3)));
308 mat!(match_basic_128, r"(a*)*", r"-", Some((0, 0)), None);
309 mat!(match_basic_129, r"(a*)+", r"-", Some((0, 0)), Some((0, 0)));
310 mat!(match_basic_131, r"(a*|b)*", r"-", Some((0, 0)), None);
311 mat!(match_basic_132, r"(a+|b)*", r"ab", Some((0, 2)), Some((1, 2)));
312 mat!(match_basic_133, r"(a+|b)+", r"ab", Some((0, 2)), Some((1, 2)));
313 mat!(match_basic_134, r"(a+|b)?", r"ab", Some((0, 1)), Some((0, 1)));
314 mat!(match_basic_135, r"[^ab]*", r"cde", Some((0, 3)));
315 mat!(match_basic_137, r"(^)*", r"-", Some((0, 0)), None);
316 mat!(match_basic_138, r"a*", r"", Some((0, 0)));
317 mat!(match_basic_139, r"([abc])*d", r"abbbcd", Some((0, 6)), Some((4, 5)));
318 mat!(match_basic_140, r"([abc])*bcd", r"abcd", Some((0, 4)), Some((0, 1)));
319 mat!(match_basic_141, r"a|b|c|d|e", r"e", Some((0, 1)));
320 mat!(match_basic_142, r"(a|b|c|d|e)f", r"ef", Some((0, 2)), Some((0, 1)));
321 mat!(match_basic_144, r"((a*|b))*", r"-", Some((0, 0)), None, None);
322 mat!(match_basic_145, r"abcd*efg", r"abcdefg", Some((0, 7)));
323 mat!(match_basic_146, r"ab*", r"xabyabbbz", Some((1, 3)));
324 mat!(match_basic_147, r"ab*", r"xayabbbz", Some((1, 2)));
325 mat!(match_basic_148, r"(ab|cd)e", r"abcde", Some((2, 5)), Some((2, 4)));
326 mat!(match_basic_149, r"[abhgefdc]ij", r"hij", Some((0, 3)));
327 mat!(match_basic_150, r"(a|b)c*d", r"abcd", Some((1, 4)), Some((1, 2)));
328 mat!(match_basic_151, r"(ab|ab*)bc", r"abc", Some((0, 3)), Some((0, 1)));
329 mat!(match_basic_152, r"a([bc]*)c*", r"abc", Some((0, 3)), Some((1, 3)));
330 mat!(
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 );
338 mat!(
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 );
346 mat!(
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 );
354 mat!(match_basic_156, r"a[bcd]*dcdcde", r"adcdcde", Some((0, 7)));
355 mat!(match_basic_157, r"(ab|a)b*c", r"abc", Some((0, 3)), Some((0, 2)));
356 mat!(
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 );
366 mat!(match_basic_159, r"[A-Za-z_][A-Za-z0-9_]*", r"alpha", Some((0, 5)));
367 mat!(match_basic_160, r"^a(bc+|b[eh])g|.h$", r"abh", Some((1, 3)));
368 mat!(
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 );
375 mat!(
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 );
383 mat!(
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 );
390 mat!(
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 );
405 mat!(
406     match_basic_165,
407     r"multiple words",
408     r"multiple words yeah",
409     Some((0, 14))
410 );
411 mat!(
412     match_basic_166,
413     r"(.*)c(.*)",
414     r"abcde",
415     Some((0, 5)),
416     Some((0, 2)),
417     Some((3, 5))
418 );
419 mat!(match_basic_167, r"abcd", r"abcd", Some((0, 4)));
420 mat!(match_basic_168, r"a(bc)d", r"abcd", Some((0, 4)), Some((1, 3)));
421 mat!(match_basic_169, r"a[-]?c", r"ac", Some((0, 3)));
422 mat!(
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 );
430 mat!(
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 );
438 mat!(
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 );
446 mat!(
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 );
454 mat!(
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 );
462 mat!(
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 );
470 mat!(
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 );
478 mat!(
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 );
486 mat!(
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 );
494 mat!(
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 );
502 mat!(
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 );
510 mat!(
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 );
518 mat!(
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 );
526 mat!(
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 );
534 mat!(
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 );
542 mat!(
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 );
550 mat!(
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 );
558 mat!(match_basic_187, r"a+(b|c)*d+", r"aabcdd", Some((0, 6)), Some((3, 4)));
559 mat!(match_basic_188, r"^.+$", r"vivi", Some((0, 4)));
560 mat!(match_basic_189, r"^(.+)$", r"vivi", Some((0, 4)), Some((0, 4)));
561 mat!(
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 );
569 mat!(
570     match_basic_191,
571     r"^([^!]+!)?([^!]+)$",
572     r"bas",
573     Some((0, 3)),
574     None,
575     Some((0, 3))
576 );
577 mat!(
578     match_basic_192,
579     r"^([^!]+!)?([^!]+)$",
580     r"bar!bas",
581     Some((0, 7)),
582     Some((0, 4)),
583     Some((4, 7))
584 );
585 mat!(
586     match_basic_193,
587     r"^([^!]+!)?([^!]+)$",
588     r"foo!bas",
589     Some((0, 7)),
590     Some((0, 4)),
591     Some((4, 7))
592 );
593 mat!(
594     match_basic_194,
595     r"^.+!([^!]+!)([^!]+)$",
596     r"foo!bar!bas",
597     Some((0, 11)),
598     Some((4, 8)),
599     Some((8, 11))
600 );
601 mat!(
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 );
610 mat!(
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 );
619 mat!(
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 );
627 mat!(
628     match_basic_198,
629     r"((foo)|bar)!bas",
630     r"bar!bas",
631     Some((0, 7)),
632     Some((0, 3))
633 );
634 mat!(
635     match_basic_199,
636     r"((foo)|bar)!bas",
637     r"foo!bar!bas",
638     Some((4, 11)),
639     Some((4, 7))
640 );
641 mat!(
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 );
649 mat!(
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 );
657 mat!(
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 );
665 mat!(
666     match_basic_203,
667     r"(foo|(bar))!bas",
668     r"foo!bas",
669     Some((0, 7)),
670     Some((0, 3))
671 );
672 mat!(
673     match_basic_204,
674     r"(foo|bar)!bas",
675     r"bar!bas",
676     Some((0, 7)),
677     Some((0, 3))
678 );
679 mat!(
680     match_basic_205,
681     r"(foo|bar)!bas",
682     r"foo!bar!bas",
683     Some((4, 11)),
684     Some((4, 7))
685 );
686 mat!(
687     match_basic_206,
688     r"(foo|bar)!bas",
689     r"foo!bas",
690     Some((0, 7)),
691     Some((0, 3))
692 );
693 mat!(
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 );
704 mat!(
705     match_basic_208,
706     r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
707     r"bas",
708     Some((0, 3)),
709     None,
710     Some((0, 3))
711 );
712 mat!(
713     match_basic_209,
714     r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
715     r"bar!bas",
716     Some((0, 7)),
717     Some((0, 4)),
718     Some((4, 7))
719 );
720 mat!(
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 );
730 mat!(
731     match_basic_211,
732     r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
733     r"foo!bas",
734     Some((0, 7)),
735     Some((0, 4)),
736     Some((4, 7))
737 );
738 mat!(
739     match_basic_212,
740     r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
741     r"bas",
742     Some((0, 3)),
743     Some((0, 3)),
744     None,
745     Some((0, 3))
746 );
747 mat!(
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 );
756 mat!(
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 );
767 mat!(
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 );
776 mat!(match_basic_216, r".*(/XXX).*", r"/XXX", Some((0, 4)), Some((0, 4)));
777 mat!(match_basic_217, r".*(\\XXX).*", r"\XXX", Some((0, 4)), Some((0, 4)));
778 mat!(match_basic_218, r"\\XXX", r"\XXX", Some((0, 4)));
779 mat!(match_basic_219, r".*(/000).*", r"/000", Some((0, 4)), Some((0, 4)));
780 mat!(match_basic_220, r".*(\\000).*", r"\000", Some((0, 4)), Some((0, 4)));
781 mat!(match_basic_221, r"\\000", r"\000", Some((0, 4)));
782 
783 // Tests from nullsubexpr.dat
784 mat!(match_nullsubexpr_3, r"(a*)*", r"a", Some((0, 1)), Some((0, 1)));
785 mat!(match_nullsubexpr_5, r"(a*)*", r"x", Some((0, 0)), None);
786 mat!(match_nullsubexpr_6, r"(a*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
787 mat!(match_nullsubexpr_7, r"(a*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
788 mat!(match_nullsubexpr_8, r"(a*)+", r"a", Some((0, 1)), Some((0, 1)));
789 mat!(match_nullsubexpr_9, r"(a*)+", r"x", Some((0, 0)), Some((0, 0)));
790 mat!(match_nullsubexpr_10, r"(a*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
791 mat!(match_nullsubexpr_11, r"(a*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
792 mat!(match_nullsubexpr_12, r"(a+)*", r"a", Some((0, 1)), Some((0, 1)));
793 mat!(match_nullsubexpr_13, r"(a+)*", r"x", Some((0, 0)));
794 mat!(match_nullsubexpr_14, r"(a+)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
795 mat!(match_nullsubexpr_15, r"(a+)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
796 mat!(match_nullsubexpr_16, r"(a+)+", r"a", Some((0, 1)), Some((0, 1)));
797 mat!(match_nullsubexpr_17, r"(a+)+", r"x", None);
798 mat!(match_nullsubexpr_18, r"(a+)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
799 mat!(match_nullsubexpr_19, r"(a+)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
800 mat!(match_nullsubexpr_21, r"([a]*)*", r"a", Some((0, 1)), Some((0, 1)));
801 mat!(match_nullsubexpr_23, r"([a]*)*", r"x", Some((0, 0)), None);
802 mat!(match_nullsubexpr_24, r"([a]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
803 mat!(match_nullsubexpr_25, r"([a]*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
804 mat!(match_nullsubexpr_26, r"([a]*)+", r"a", Some((0, 1)), Some((0, 1)));
805 mat!(match_nullsubexpr_27, r"([a]*)+", r"x", Some((0, 0)), Some((0, 0)));
806 mat!(match_nullsubexpr_28, r"([a]*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
807 mat!(match_nullsubexpr_29, r"([a]*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
808 mat!(match_nullsubexpr_30, r"([^b]*)*", r"a", Some((0, 1)), Some((0, 1)));
809 mat!(match_nullsubexpr_32, r"([^b]*)*", r"b", Some((0, 0)), None);
810 mat!(match_nullsubexpr_33, r"([^b]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
811 mat!(
812     match_nullsubexpr_34,
813     r"([^b]*)*",
814     r"aaaaaab",
815     Some((0, 6)),
816     Some((0, 6))
817 );
818 mat!(match_nullsubexpr_35, r"([ab]*)*", r"a", Some((0, 1)), Some((0, 1)));
819 mat!(match_nullsubexpr_36, r"([ab]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
820 mat!(match_nullsubexpr_37, r"([ab]*)*", r"ababab", Some((0, 6)), Some((0, 6)));
821 mat!(match_nullsubexpr_38, r"([ab]*)*", r"bababa", Some((0, 6)), Some((0, 6)));
822 mat!(match_nullsubexpr_39, r"([ab]*)*", r"b", Some((0, 1)), Some((0, 1)));
823 mat!(match_nullsubexpr_40, r"([ab]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
824 mat!(
825     match_nullsubexpr_41,
826     r"([ab]*)*",
827     r"aaaabcde",
828     Some((0, 5)),
829     Some((0, 5))
830 );
831 mat!(match_nullsubexpr_42, r"([^a]*)*", r"b", Some((0, 1)), Some((0, 1)));
832 mat!(match_nullsubexpr_43, r"([^a]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
833 mat!(match_nullsubexpr_45, r"([^a]*)*", r"aaaaaa", Some((0, 0)), None);
834 mat!(
835     match_nullsubexpr_46,
836     r"([^ab]*)*",
837     r"ccccxx",
838     Some((0, 6)),
839     Some((0, 6))
840 );
841 mat!(match_nullsubexpr_48, r"([^ab]*)*", r"ababab", Some((0, 0)), None);
842 mat!(
843     match_nullsubexpr_50,
844     r"((z)+|a)*",
845     r"zabcde",
846     Some((0, 2)),
847     Some((1, 2))
848 );
849 mat!(
850     match_nullsubexpr_69,
851     r"(a*)*(x)",
852     r"x",
853     Some((0, 1)),
854     None,
855     Some((0, 1))
856 );
857 mat!(
858     match_nullsubexpr_70,
859     r"(a*)*(x)",
860     r"ax",
861     Some((0, 2)),
862     Some((0, 1)),
863     Some((1, 2))
864 );
865 mat!(
866     match_nullsubexpr_71,
867     r"(a*)*(x)",
868     r"axa",
869     Some((0, 2)),
870     Some((0, 1)),
871     Some((1, 2))
872 );
873 mat!(
874     match_nullsubexpr_73,
875     r"(a*)+(x)",
876     r"x",
877     Some((0, 1)),
878     Some((0, 0)),
879     Some((0, 1))
880 );
881 mat!(
882     match_nullsubexpr_74,
883     r"(a*)+(x)",
884     r"ax",
885     Some((0, 2)),
886     Some((0, 1)),
887     Some((1, 2))
888 );
889 mat!(
890     match_nullsubexpr_75,
891     r"(a*)+(x)",
892     r"axa",
893     Some((0, 2)),
894     Some((0, 1)),
895     Some((1, 2))
896 );
897 mat!(
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 );
905 mat!(
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 );
913 mat!(
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
923 mat!(match_repetition_10, r"((..)|(.))", r"", None);
924 mat!(match_repetition_11, r"((..)|(.))((..)|(.))", r"", None);
925 mat!(match_repetition_12, r"((..)|(.))((..)|(.))((..)|(.))", r"", None);
926 mat!(match_repetition_14, r"((..)|(.)){1}", r"", None);
927 mat!(match_repetition_15, r"((..)|(.)){2}", r"", None);
928 mat!(match_repetition_16, r"((..)|(.)){3}", r"", None);
929 mat!(match_repetition_18, r"((..)|(.))*", r"", Some((0, 0)));
930 mat!(
931     match_repetition_20,
932     r"((..)|(.))",
933     r"a",
934     Some((0, 1)),
935     Some((0, 1)),
936     None,
937     Some((0, 1))
938 );
939 mat!(match_repetition_21, r"((..)|(.))((..)|(.))", r"a", None);
940 mat!(match_repetition_22, r"((..)|(.))((..)|(.))((..)|(.))", r"a", None);
941 mat!(
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 );
950 mat!(match_repetition_25, r"((..)|(.)){2}", r"a", None);
951 mat!(match_repetition_26, r"((..)|(.)){3}", r"a", None);
952 mat!(
953     match_repetition_28,
954     r"((..)|(.))*",
955     r"a",
956     Some((0, 1)),
957     Some((0, 1)),
958     None,
959     Some((0, 1))
960 );
961 mat!(
962     match_repetition_30,
963     r"((..)|(.))",
964     r"aa",
965     Some((0, 2)),
966     Some((0, 2)),
967     Some((0, 2)),
968     None
969 );
970 mat!(
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 );
982 mat!(match_repetition_32, r"((..)|(.))((..)|(.))((..)|(.))", r"aa", None);
983 mat!(
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 );
992 mat!(
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 );
1001 mat!(match_repetition_36, r"((..)|(.)){3}", r"aa", None);
1002 mat!(
1003     match_repetition_38,
1004     r"((..)|(.))*",
1005     r"aa",
1006     Some((0, 2)),
1007     Some((0, 2)),
1008     Some((0, 2)),
1009     None
1010 );
1011 mat!(
1012     match_repetition_40,
1013     r"((..)|(.))",
1014     r"aaa",
1015     Some((0, 2)),
1016     Some((0, 2)),
1017     Some((0, 2)),
1018     None
1019 );
1020 mat!(
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 );
1032 mat!(
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 );
1047 mat!(
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 );
1056 mat!(
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 );
1065 mat!(
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 );
1074 mat!(
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 );
1083 mat!(
1084     match_repetition_52,
1085     r"((..)|(.))",
1086     r"aaaa",
1087     Some((0, 2)),
1088     Some((0, 2)),
1089     Some((0, 2)),
1090     None
1091 );
1092 mat!(
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 );
1104 mat!(
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 );
1119 mat!(
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 );
1128 mat!(
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 );
1137 mat!(
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 );
1146 mat!(
1147     match_repetition_61,
1148     r"((..)|(.))*",
1149     r"aaaa",
1150     Some((0, 4)),
1151     Some((2, 4)),
1152     Some((2, 4)),
1153     None
1154 );
1155 mat!(
1156     match_repetition_63,
1157     r"((..)|(.))",
1158     r"aaaaa",
1159     Some((0, 2)),
1160     Some((0, 2)),
1161     Some((0, 2)),
1162     None
1163 );
1164 mat!(
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 );
1176 mat!(
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 );
1191 mat!(
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 );
1200 mat!(
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 );
1209 mat!(
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 );
1218 mat!(
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 );
1227 mat!(
1228     match_repetition_75,
1229     r"((..)|(.))",
1230     r"aaaaaa",
1231     Some((0, 2)),
1232     Some((0, 2)),
1233     Some((0, 2)),
1234     None
1235 );
1236 mat!(
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 );
1248 mat!(
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 );
1263 mat!(
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 );
1272 mat!(
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 );
1281 mat!(
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 );
1290 mat!(
1291     match_repetition_83,
1292     r"((..)|(.))*",
1293     r"aaaaaa",
1294     Some((0, 6)),
1295     Some((4, 6)),
1296     Some((4, 6)),
1297     None
1298 );
1299 mat!(
1300     match_repetition_90,
1301     r"X(.?){0,}Y",
1302     r"X1234567Y",
1303     Some((0, 9)),
1304     Some((7, 8))
1305 );
1306 mat!(
1307     match_repetition_91,
1308     r"X(.?){1,}Y",
1309     r"X1234567Y",
1310     Some((0, 9)),
1311     Some((7, 8))
1312 );
1313 mat!(
1314     match_repetition_92,
1315     r"X(.?){2,}Y",
1316     r"X1234567Y",
1317     Some((0, 9)),
1318     Some((7, 8))
1319 );
1320 mat!(
1321     match_repetition_93,
1322     r"X(.?){3,}Y",
1323     r"X1234567Y",
1324     Some((0, 9)),
1325     Some((7, 8))
1326 );
1327 mat!(
1328     match_repetition_94,
1329     r"X(.?){4,}Y",
1330     r"X1234567Y",
1331     Some((0, 9)),
1332     Some((7, 8))
1333 );
1334 mat!(
1335     match_repetition_95,
1336     r"X(.?){5,}Y",
1337     r"X1234567Y",
1338     Some((0, 9)),
1339     Some((7, 8))
1340 );
1341 mat!(
1342     match_repetition_96,
1343     r"X(.?){6,}Y",
1344     r"X1234567Y",
1345     Some((0, 9)),
1346     Some((7, 8))
1347 );
1348 mat!(
1349     match_repetition_97,
1350     r"X(.?){7,}Y",
1351     r"X1234567Y",
1352     Some((0, 9)),
1353     Some((7, 8))
1354 );
1355 mat!(
1356     match_repetition_98,
1357     r"X(.?){8,}Y",
1358     r"X1234567Y",
1359     Some((0, 9)),
1360     Some((8, 8))
1361 );
1362 mat!(
1363     match_repetition_100,
1364     r"X(.?){0,8}Y",
1365     r"X1234567Y",
1366     Some((0, 9)),
1367     Some((8, 8))
1368 );
1369 mat!(
1370     match_repetition_102,
1371     r"X(.?){1,8}Y",
1372     r"X1234567Y",
1373     Some((0, 9)),
1374     Some((8, 8))
1375 );
1376 mat!(
1377     match_repetition_104,
1378     r"X(.?){2,8}Y",
1379     r"X1234567Y",
1380     Some((0, 9)),
1381     Some((8, 8))
1382 );
1383 mat!(
1384     match_repetition_106,
1385     r"X(.?){3,8}Y",
1386     r"X1234567Y",
1387     Some((0, 9)),
1388     Some((8, 8))
1389 );
1390 mat!(
1391     match_repetition_108,
1392     r"X(.?){4,8}Y",
1393     r"X1234567Y",
1394     Some((0, 9)),
1395     Some((8, 8))
1396 );
1397 mat!(
1398     match_repetition_110,
1399     r"X(.?){5,8}Y",
1400     r"X1234567Y",
1401     Some((0, 9)),
1402     Some((8, 8))
1403 );
1404 mat!(
1405     match_repetition_112,
1406     r"X(.?){6,8}Y",
1407     r"X1234567Y",
1408     Some((0, 9)),
1409     Some((8, 8))
1410 );
1411 mat!(
1412     match_repetition_114,
1413     r"X(.?){7,8}Y",
1414     r"X1234567Y",
1415     Some((0, 9)),
1416     Some((8, 8))
1417 );
1418 mat!(
1419     match_repetition_115,
1420     r"X(.?){8,8}Y",
1421     r"X1234567Y",
1422     Some((0, 9)),
1423     Some((8, 8))
1424 );
1425 mat!(
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 );
1433 mat!(
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 );
1441 mat!(
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 );
1449 mat!(
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 );
1457 mat!(match_repetition_130, r"(a|ab|c|bcd){4,}(d*)", r"ababcd", None);
1458 mat!(
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 );
1466 mat!(
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 );
1474 mat!(
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 );
1482 mat!(
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 );
1490 mat!(match_repetition_135, r"(a|ab|c|bcd){4,10}(d*)", r"ababcd", None);
1491 mat!(
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 );
1499 mat!(
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 );
1507 mat!(
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 );
1515 mat!(
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 );
1523 mat!(
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 );
1531 mat!(
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 );
1539 mat!(match_repetition_150, r"(ab|a|c|bcd){4,}(d*)", r"ababcd", None);
1540 mat!(
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 );
1548 mat!(
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 );
1556 mat!(
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 );
1564 mat!(
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 );
1572 mat!(match_repetition_159, r"(ab|a|c|bcd){4,10}(d*)", r"ababcd", None);
1573 mat!(
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 );
1581 mat!(
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