#include #include #include int main() { char *line = NULL; int ret; /* * \b (backspace) is used to produce bold or underlined text. */ char *ref_regex = "[A-Za-z\b._-]+\\(..?\\)"; static regex_t *preg; regmatch_t pmatch[1]; char *line_ptr; size_t line_length; if (preg == NULL) { preg = calloc(sizeof(regex_t), 1); if (ret = regcomp(preg, ref_regex, REG_EXTENDED) != 0) { fprintf(stderr, "regcomp() failed: %d\n", ret); exit(1); } } while (1) { /* position to next non empty line */ while (1) { ret = getline(&line, &line_length, stdin); if (ret == -1) { regfree(preg); return 0; } if (line_length > 1) break; if (line_length < 1) { regfree(preg); return 0; } } printf("%s: while finished: %ld\n", __func__, line_length); line_ptr = line; while (1) { ret = regexec(preg, line_ptr, 1, pmatch, 0); if (ret != 0) break; printf("regexec match \"%s\"\n", line_ptr + pmatch[0].rm_so); line_ptr += pmatch[0].rm_eo; } } }