/* kregex.c * 正規表現を用いたマッチの例 * REGEX: ap_regcomp / ap_regexec */ #define USAGE "Usage kregex \n" #include "apr_general.h" #include "apr_file_io.h" #include "httpd.h" #include "ap_regex.h" #include "mystab.h" int apr_my_main (int ac, char **av, apr_file_t * astdin, apr_file_t * astdout, apr_file_t * astderr, apr_pool_t * pool) { if (ac < 3) { apr_file_printf(astderr, USAGE); goto _ERROR_; } /* ap_regcomp / ap_regexec * INCLUDE httpd.h / ap_regex.h * LIB libhttpd.lib */ { char *str=av[1]; char *pattern = av[2]; ap_regex_t preg; ap_regmatch_t regm[AP_MAX_REG_MATCH]; /* 正規表現のコンパイル */ if (0 == ap_regcomp(&preg, pattern, 0)) { /* 文字列のマッチング */ if (0 == ap_regexec(&preg, str, AP_MAX_REG_MATCH, regm, 0)) { apr_file_printf(astdout, "Matched.\n"); } else { apr_file_printf(astdout, "Not matched.\n"); } } else { apr_file_printf(astdout, "Not Regular Expression: [%s]\n", pattern); } /* 正規表現の開放 */ ap_regfree(&preg); } apr_file_printf(astdout, "\ndone.\n"); return 0; /* 正常終了 */ _ERROR_: apr_file_printf(astderr, "\nfailed.\n"); return 0; /* 異常終了 */ }