T2("(.?.?){2}", "xxx", 0,3, 2,3);
T4("(.?.?)(.?.?)(.?.?)", "xxx", 0,3, 0,2, 2,3, 3,3);
T2("(.?.?){3}", "xxx", 0,3, 3,3);
+ T2("(.?.?)*", "xx", 0,2, 0,2);
T2("(.?.?)*", "xxx", 0,3, 2,3);
+ T2("(.?.?)*", "xxxx", 0,4, 2,4);
T4("a?((ab)?)(b?)", "ab", 0,2, 1,1, -1,-1, 1,2);
T4("(a?)((ab)?)b?", "ab", 0,2, 0,1, 1,1, -1,-1);
T3("a?((ab)?)b?", "ab", 0,2, 1,1, -1,-1);
T2("(y?){2}", "y", 0,1, 1,1);
T2("(y?){2}", "yy", 0,2, 1,2);
T2("(y?){0,2}", "NULL", 0,0, 0,0);
+ T3("(y?){0,2}|(y?)", "y", 0,1, 0,1, -1,-1);
T2("(y?){0,2}", "y", 0,1, 0,1);
T2("(y?){0,2}", "yy", 0,2, 1,2);
T2("(y?){1,2}", "NULL", 0,0, 0,0);
else if (!(flags & REG_SLOWPREC)) {
T3("((a?){1,1000})*", "aaaa", 0,4, 0,4, 3,4);
}
+ T6("((((a?)+)|(aa))+)", "aaa", 0,3, 0,3, 0,3, 0,3, 2,3, -1,-1);
+ T6("(((aa)|((a?)+))+)", "aaa", 0,3, 0,3, 0,3, -1,-1, 0,3, 2,3);
+ T4("((a?){1,2}|(a)*)*", "aaaa", 0,4, 0,4, -1,-1, 3,4);
+ T5("(((a?){2,3}|(a)*))*", "aaaaa", 0,5, 0,5, 0,5, -1,-1, 4,5);
+ T5("(((a?)|(a?a?))+)", "aa", 0,2, 0,2, 0,2, -1,-1, 0,2);
+ T9("((((a)*))*|((((a))*))+)*", "aa", 0,2, 0,2, 0,2, 0,2, 1,2, -1,-1, -1,-1, -1,-1, -1,-1);
+ T6("(((a)*)*|((a)*)+)*", "aa", 0,2, 0,2, 0,2, 1,2, -1,-1, -1,-1);
+ T7("(((a)+)|(((a)+)?))+", "aa", 0,2, 0,2, 0,2, 1,2, -1,-1, -1,-1, -1,-1);
+ T3("(a*|(a)*)*", "aa", 0,2, 0,2, -1,-1);
return e;
}
#undef T5
#undef T6
#undef T7
+#undef T8
+#undef T9
+#undef T10
int main()
{