kregex.c
最終更新:2009/10/10
001: /* kregex.c 002: * 正規表現を用いたマッチの例 003: * REGEX: ap_regcomp / ap_regexec 004: */ 005: 006: #define USAGE "Usage kregex <string> <pattern>\n" 007: 008: #include "apr_general.h" 009: #include "apr_file_io.h" 010: 011: #include "httpd.h" 012: #include "ap_regex.h" 013: 014: #include "mystab.h" 015: 016: int apr_my_main (int ac, char **av, apr_file_t * astdin, apr_file_t * astdout, apr_file_t * astderr, apr_pool_t * pool) { 017: 018: if (ac < 3) { 019: apr_file_printf(astderr, USAGE); 020: goto _ERROR_; 021: } 022: 023: /* ap_regcomp / ap_regexec 024: * INCLUDE httpd.h / ap_regex.h 025: * LIB libhttpd.lib 026: */ 027: { 028: char *str=av[1]; 029: char *pattern = av[2]; 030: 031: ap_regex_t preg; 032: ap_regmatch_t regm[AP_MAX_REG_MATCH]; 033: 034: /* 正規表現のコンパイル */ 035: 036: if (0 == ap_regcomp(&preg, pattern, 0)) { 037: 038: /* 文字列のマッチング */ 039: if (0 == ap_regexec(&preg, str, AP_MAX_REG_MATCH, regm, 0)) { 040: apr_file_printf(astdout, "Matched.\n"); 041: } else { 042: apr_file_printf(astdout, "Not matched.\n"); 043: } 044: } else { 045: apr_file_printf(astdout, "Not Regular Expression: [%s]\n", pattern); 046: } 047: 048: /* 正規表現の開放 */ 049: ap_regfree(&preg); 050: } 051: 052: apr_file_printf(astdout, "\ndone.\n"); 053: return 0; /* 正常終了 */ 054: 055: _ERROR_: 056: apr_file_printf(astderr, "\nfailed.\n"); 057: return 0; /* 異常終了 */ 058: } 059:
KAKU PROJECT (2009) |