/* Test whether ERE anchors work combined with subexpressions. */ #include "suite.h" int main(void) { cflags = REG_EXTENDED; reject("^(x(y))", ""); reject("^(x(y))", "x"); reject("^(x(y))", "y"); matches("^(x(y))", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); matches("^(x(y))", "xyz", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("^(x(y))", "zxy"); reject("(x(y))$", ""); reject("(x(y))$", "x"); reject("(x(y))$", "y"); matches("(x(y))$", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("(x(y))$", "xyz"); matches("(x(y))$", "zxy", 3, (M[]) { m(1, 3), m(1, 3), m(2, 3) }); reject("^(x(y))$", ""); reject("^(x(y))$", "x"); reject("^(x(y))$", "y"); matches("^(x(y))$", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("^(x(y))$", "xyz"); reject("^(x(y))$", "zxy"); reject("(^x(y))", ""); reject("(^x(y))", "x"); reject("(^x(y))", "y"); matches("(^x(y))", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); matches("(^x(y))", "xyz", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("(^x(y))", "zxy"); reject("(x(y$))", ""); reject("(x(y$))", "x"); reject("(x(y$))", "y"); matches("(x(y$))", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("(x(y$))", "xyz"); matches("(x(y$))", "zxy", 3, (M[]) { m(1, 3), m(1, 3), m(2, 3) }); reject("(^x(y$))", ""); reject("(^x(y$))", "x"); reject("(^x(y$))", "y"); matches("(^x(y$))", "xy", 3, (M[]) { m(0, 2), m(0, 2), m(1, 2) }); reject("(^x(y$))", "xyz"); reject("(^x(y$))", "zxy"); reject("(x(^y$))", ""); reject("(x(^y$))", "x"); reject("(x(^y$))", "y"); reject("(x(^y$))", "xy"); reject("(x(^y$))", "xyz"); reject("(x(^y$))", "zxy"); return 0; }