メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

# dkcRegex.h

正規表現ライブラリ？ [詳細]

`#include "dkcStream.h"`
`#include "dkcOSIndependent.h"`

dkcRegex.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

## 構成
struct | dkc_Replace
struct | dkcRegularExpression
| 正規表現オブジェクト [詳細]
## 型定義
typedef dkc_Replace | DKC_REPLACE
typedef wchar_t | DKC_UNICODE
typedef dkcRegularExpression | DKC_Regular_EXPRESSION
| 正規表現オブジェクト
typedef dkcRegularExpression | DKC_REX
| 正規表現オブジェクト
typedef dkcRegularExpression | DKC_REGEX
| 正規表現オブジェクト
## 列挙型
enum | edkcRegToken { R_Char, R_Any, R_Lcl, R_Rcl, R_Ncl, R_Range, R_Lbr, R_Rbr, R_Bar, R_Star, R_Plus, R_Quest, R_End }
| 文字の種類 [詳細]
enum | edkcRegType { N_Char, N_Class, N_Concat, N_Or, N_Closure, N_Closure1, N_01, N_Empty }
| 構文木のノードに振られる値の種類 [詳細]
## 関数
DKC_EXTERN DKC_REPLACE *WINAPI | dkcAllocReplace ()
DKC_EXTERN int WINAPI | dkcFreeReplace (DKC_REPLACE **)
DKC_EXTERN int WINAPI | dkcReplaceRun (const BYTE *src, size_t srcsize, const BYTE *target_data, size_t target_data_size, const BYTE *replace_data, size_t replace_data_size)
DKC_EXTERN DKC_REGEX *WINAPI | dkcAllocRegex (const DKC_UNICODE *key, BOOL caseS, BOOL down)
DKC_EXTERN int WINAPI | dkcFreeRegex (DKC_REGEX **)
DKC_EXTERN BOOL WINAPI | dkcRegexSearch (DKC_REGEX *p, const DKC_UNICODE *str, ULONG len, ULONG stt, ULONG *mbg, ULONG *med)
DKC_EXTERN BOOL WINAPI | dkcRegularExpressionSearch (const DKC_UNICODE *key, BOOL caseS, BOOL down, const DKC_UNICODE *str, ULONG len, ULONG stt, ULONG *mbg, ULONG *med)
| 検索を行う
DKC_EXTERN BOOL WINAPI | dkcRegularExpressionMatch (const DKC_UNICODE *pat, const DKC_UNICODE *str, BOOL caseS)
| Gp.Search 超簡易正規表現マッチング関数。

## 説明

正規表現ライブラリ？

作者:
  d金魚

から:
  2004/09/01

覚え書き:
  C++で正規表現はboostregexを使うのがイイかも？ またはyaneSDK3rdのDLL。

dkcRegex.cおよびdkcRegex.hはGreenPadの実装をC言語に移植しています。 dkcRegex.h で定義されています。

## 型定義

typedef struct dkcRegularExpression DKC_REGEX

| 正規表現オブジェクト

typedef struct dkcRegularExpression DKC_Regular_EXPRESSION

| 正規表現オブジェクト

typedef struct dkc_Replace DKC_REPLACE

typedef struct dkcRegularExpression DKC_REX

| 正規表現オブジェクト

typedef wchar_t DKC_UNICODE

| dkcRegex.h の 25 行で定義されています。

## 列挙型

enum edkcRegToken

  | 文字の種類 列挙型の値:
  R_Char | 普通の文字
  R_Any | '.'
  R_Lcl | '['
  R_Rcl | ']'
  R_Ncl | '^'
  R_Range | '-'
  R_Lbr | '('
  R_Rbr | ')'
  R_Bar | '|'
  R_Star | '*'
  R_Plus | '+'
  R_Quest | '?'
  R_End | ''
dkcRegex.h の 39 行で定義されています。
    00040 {
    00042     R_Char,
    00044     R_Any,
    00046     R_Lcl,
    00048     R_Rcl,
    00050     R_Ncl,
    00052     R_Range,
    00054     R_Lbr,
    00056     R_Rbr,
    00058     R_Bar,
    00060     R_Star,
    00062     R_Plus,
    00064     R_Quest,
    00066     R_End,
    00067 };

enum edkcRegType

  | 構文木のノードに振られる値の種類 列挙型の値:
  N_Char |
  N_Class |
  N_Concat |
  N_Or |
  N_Closure |
  N_Closure1 |
  N_01 |
  N_Empty |
dkcRegex.h の 71 行で定義されています。
    00072 {
    00073     N_Char,     // 普通の文字 (ch)
    00074     N_Class,    // [...] など (cls)
    00075     N_Concat,   // 連接       (left, right)
    00076     N_Or,       // |          (left, right)
    00077     N_Closure,  // *          (left)
    00078     N_Closure1, // +          (left)
    00079     N_01,       // ?          (left)
    00080     N_Empty     // 空         (--)
    00081 };

## 関数

DKC_EXTERN DKC_REGEX* WINAPI dkcAllocRegex | ( | const DKC_UNICODE * | key,
|  | BOOL | caseS,
|  | BOOL | down
| ) |

  | 引数:
  | key[in] | キー
  | caseS[in] | 大文字小文字を区別しないのであればTRUE
  | down[in] | 下から検索の場合はTRUE

DKC_EXTERN DKC_REPLACE* WINAPI dkcAllocReplace | ( |  | ) |

| dkcRegex.c の 74 行で定義されています。 参照先 dkcAllocate(), dkcAllocStream(), dkcFree(), dkcFreeStream(), edkcStreamInitMemory, dkc_Replace::mStream, と NULL.
    00074                                      {
    00075
    00076     DKC_REPLACE *p = dkcAllocate(sizeof(DKC_REPLACE));
    00077     if(NULL==p){
    00078         return NULL;
    00079     }
    00080     p->mStream = dkcAllocStream(edkcStreamInitMemory,NULL,5012,NULL,NULL);
    00081     if(NULL==p->mStream){
    00082         goto Error;
    00083     }
    00084     return p;
    00085 Error:
    00086     dkcFreeStream(&(p->mStream));
    00087     dkcFree((void **)&p);
    00088     return NULL;
    00089 }

DKC_EXTERN int WINAPI dkcFreeRegex | ( | DKC_REGEX ** |  | ) |

| dkcRegex.c の 993 行で定義されています。 参照先 dkcFree(), と free_RegNFA(). 参照元 dkcRegularExpressionSearch().
    00993                                       {
    00994     free_RegNFA((*p)->re_);
    00995     return dkcFree(p);
    00996 }

DKC_EXTERN int WINAPI dkcFreeReplace | ( | DKC_REPLACE ** |  | ) |

| dkcRegex.c の 92 行で定義されています。 参照先 dkcFree(), dkcFreeStream(), と NULL.
    00092                                            {
    00093     if(NULL==pp){
    00094         return edk_ArgumentException;
    00095     }
    00096     dkcFreeStream(&(*pp)->mStream);
    00097     return dkcFree((void **)pp);
    00098 }

DKC_EXTERN BOOL WINAPI dkcRegexSearch | ( | DKC_REGEX * | p,
|  | const DKC_UNICODE * | str,
|  | ULONG | len,
|  | ULONG | stt,
|  | ULONG * | mbg,
|  | ULONG * | med
| ) |

DKC_EXTERN BOOL WINAPI dkcRegularExpressionMatch | ( | const DKC_UNICODE * | pat,
|  | const DKC_UNICODE * | str,
|  | BOOL | caseS
| ) |

| Gp.Search 超簡易正規表現マッチング関数。 patとstr全体がマッチするならtrue、ダメならfalseを返す dkcRegex.c の 1062 行で定義されています。 参照先 FALSE, my_lstrlenW, RegNFA_Construct(), RegNFA_Destruct(), と RegNFA_match_a4().
    01063 {
    01064     int len = my_lstrlenW(str);
    01065     RegNFA re;
    01066     BOOL r;
    01067     if(FALSE==RegNFA_Construct(&re,pat))
    01068         return FALSE;
    01069
    01070     r = (len == RegNFA_match_a4(&re, str, len, caseS ));
    01071
    01072     RegNFA_Destruct(&re);
    01073
    01074     return r;
    01075 }

DKC_EXTERN BOOL WINAPI dkcRegularExpressionSearch | ( | const DKC_UNICODE * | key,
|  | BOOL | caseS,
|  | BOOL | down,
|  | const DKC_UNICODE * | str,
|  | ULONG | len,
|  | ULONG | stt,
|  | ULONG * | mbg,
|  | ULONG * | med
| ) |

  | 検索を行う 引数:
  | str | 対象文字列
  | len | 対象文字列の長さ
  | stt | 検索開始index。0なら先頭から
  | mbg | マッチ結果の先頭index
  | med | マッチ結果の終端indexの１個後ろ
戻り値: マッチしたかどうか 下方向サーチオブジェクトの場合、stt <= *beg の範囲 上方向サーチオブジェクトの場合、*beg <= stt の範囲を検索

DKC_EXTERN int WINAPI dkcReplaceRun | ( | const BYTE * | src,
|  | size_t | srcsize,
|  | const BYTE * | target_data,
|  | size_t | target_data_size,
|  | const BYTE * | replace_data,
|  | size_t | replace_data_size
| ) |

| dkcRegex.c の 101 行で定義されています。
    00104                                                                           {
    00105     return edk_SUCCEEDED;
    00106 }