int regex_check(const char *regex_string, const char *word) { int res = 0; // tRegex *regex = regex_new(regex_string); if(!regex) return 0; res = regex_check_re(regex, word); regex_destroy(regex); return res; }
int main() { //regex_log_func = printf; char *regex_string = "(a+";// "(http://)?(.)*,com(,br)?";//"ab(a)+(ab)*"; char *word = "ab";//"google,com,br,br";//"abaababab"; tRegex *regex = regex_new(regex_string); printf("regex: %s\n",regex_string); printf("word: %s\n",word); printf("base: %s\n",regex->base); printf("incond: %d\ncond_count: %d\n",regex->incond, regex->cond_count); int i; for(i=0;i<regex->cond_count;i++) { tCond *cond = regex->cond_list[i]; printf("cond #%d:\n",i); printf("\tsimbolos_count: %d\n",cond->simbolos_count); printf("\tsimbolos: %s\n",cond->simbolos); printf("\toperador: %c\n",cond->operador); printf("\tbase_index: %d\n",cond->base_index); } for(i=0;i<regex->cond_count;i++) printf("cond #%d start count: %d\n",i,regex->case_list[i]); char *try = regex_next_try(regex, strlen(word)); while(try) { printf("try: %s - res: ",try); printf("%s!\n", (regex_compare(try,word) ? "match!" : "doesn't match!" ) ); free(try); //exit(1); try = regex_next_try(regex, strlen(word)); } regex_destroy(regex); return 0; }
/* * Create new Regex struct for string */ static Regex *regex_parse_line(char *s) { Regex *p; int err; /* New regex entry */ p = regex_new(); p->re_s = strsave(s); err = regcomp(&p->re_c, p->re_s, REG_EXTENDED|REG_ICASE); if(err) { fglog("WARNING: error compiling regex %s", p->re_s); xfree(p); return NULL; } debug(15, "regex: pattern=%s", p->re_s); return p; }