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

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.h25 行で定義されています。


列挙型

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.h39 行で定義されています。

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.h71 行で定義されています。

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.c74 行で定義されています。

参照先 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.c993 行で定義されています。

参照先 dkcFree(), と free_RegNFA().

参照元 dkcRegularExpressionSearch().

00993                                       {
00994     free_RegNFA((*p)->re_);
00995     return dkcFree(p);
00996 }

DKC_EXTERN int WINAPI dkcFreeReplace DKC_REPLACE **   ) 
 

dkcRegex.c92 行で定義されています。

参照先 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.c1062 行で定義されています。

参照先 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の1個後ろ
戻り値:
マッチしたかどうか
下方向サーチオブジェクトの場合、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.c101 行で定義されています。

00104                                                                           {
00105     return edk_SUCCEEDED;
00106 }


dkutil_cに対してSat Sep 10 09:24:49 2005に生成されました。  doxygen 1.4.4