Simple Regex in C
Some breathtakingly beautiful programming from an early implementation of Regex
int matchhere(char *, char *);
int matchstar(int c, char *re, char *text) {
do {
if (matchhere(re, text)) return 1;
} while (*text && (*text++ == c || c == '.'));
return 0;
}
int matchhere(char *re, char *text) {
if (re[0] == '\0') return 1;
if (re[1] == '*')
return matchstar(re[0], re + 2, text);
if (re[0] == '$' && re[1] == '\0')
return *text == '\0';
if (*text && (re[0] == '.' || re[0] == *text))
return matchhere(re + 1, text + 1);
return 0;
}
int match(char *re, char *text) {
if (re[0] == '^')
return matchhere(re + 1, text);
for (;;) {
if (matchhere(re, text)) return 1;
if (*text++ == '\0') return 0;
}
}

