kregex.c

最終更新:2009/10/10

kregex.c

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: 
Copyright (C) KAKU PROJECT (2009)KAKU PROJECT (2009)