1 int match(char r, char t)
3 return r == '.' || r == t;
5 int matchstr(const char *r, const char *t)
7 int state = 0, i = (r[0] == '^' ? 1 : 0), j = 0;
12 if (r[i] == '$' && r[i + 1] == '\0')
17 if (state == 0) // base case
21 else if (match(r[i], t[j]))
28 if (state == 1) // star
30 if (!match(r[i], t[j]) || match(r[i + 2], t[j]))
41 int main(int argc, char **argv)
45 printf("Usage: %s <regex> <text>\n", argv[0]);
48 return !matchstr(argv[1], argv[2]);