Sds wcmatch

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
int sds_wcmatch (const char *string, const char *match);


機能
文字列のパターン マッチングを行う。sds_wcmatch は大文字と小文字の区別ができ、ワイルドカードによるマッチングができる。(ワイルドカードについては下表参照。)


引数
  • *string : マッチング対象の文字列
  • *match : 検索パターンの文字列。
戻り値
文字列がマッチすれば RTNORM、そうでないなら RTERROR を返す。


ワイルドカード
ワイルドカード文字 意味
` (逆シングルクオート) 特殊文字をエスケープする(次の文字を文字どおりに読む)
~ (チルダ) パターンの先頭の文字の場合、パターン以外の任意の文字にマッチする。
* 空文字列を含む任意の文字シーケンスにマッチする。検索パターンのどこでも使用できる。
? 任意の 1 文字にマッチ
# @ シングルキャラクタータイプの文字にマッチする。
@ (アット) 1 つのアルファベット文字 (A-Z) にマッチ
- (ハイフン) 角括弧内で使用され、文字の範囲を指定する。 例: sds_wcmatch(3-7).
, (カンマ 2 つのパターンを区切る。or の役割
# (シャープ) 1 つの数字 (0-9) にマッチ
. (ピリオド) 1 つの非英数字にマッチする。 (&,%,+, etc.)
[...] 囲まれた文字のいずれか 1 文字にマッチする
[~...] 囲まれた文字以外の 1 文字にマッチする


サンプル

次の例は string: char *doesthis = "1A2B3C"; の文字列をマッチさせたものである。

sds_wcmatch(doesthis,"[CAT],[~DOG]"); 

この例では、最初のセットC、A、T にマッチするので RTNORM を返す。"," は or を表すので、2番目のパターンにマッチしていたか否かに関係なく、RTNORMを返す。


sds_wcmatch(doesthis,"1a2b3c"); 

この例では、大文字小文字のケースがマッチしないので、RTERRORを返す。


sds_wcmatch(doesthis,"#@#@??"); 

この例では、1A2B3C が他のどのパターンにマッチするので RTNORMを返す。