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) |