C ++ファジー文字列マッチング

  もちろん、C ++には基本的に、Boostで提供される規則性のような正規表現関数はありません。この記事はブロガーによる記事からのものです
  
  。C/ C ++文字列のあいまい一致
  
  はこの記事をずっと前に読んでおり、元の作者のニーズは非常に明確で、コードの実装も非常に優れています。
  
  この記事をもう一度書いたのは、元の作者が、Windowsでの使用を考慮せずにLinuxシステムでシステム関数fnmatchを直接呼び出すことによってのみ実現できることを紹介したためです。
  
  今週Google-glogコードを調べたところ、たまたまfnmatchに似た単純な実装を見つけたので、クロスプラットフォームのインターフェースが提供されました。
  
  :例えば、直接作者のニーズ(再び元の作者ビッグブルーインのおかげで、私のISM a)に乗り
  
  :需要
  
  これをSYS |製品|アクセス認証プロファイル時々分け、いくつかの構成された寸法、例えば、会社を形式の構成:
  
  1.「sina | weibo | pusher」を構成して、sina会社のweibo製品プッシャーシステムを許可できることを示し、「sina | weibo | sign」はアクセスを許可しません
  
  。2.「sina | * | pusher」を構成してsina会社を示します
  
  すべての製品のプッシャーシステム  許可できます。3。「* | * |プッシャー」を構成すると、すべての会社のすべての製品のプッシャーシステムを許可できます
  
  コードの実装は次のとおりです:
  
mamicode.com、code fan
  
  1 #ifdef OS_WINDOWS
  
  2 / *ビットFLAGS引数で `fnmatch 'に設定しますfnmatch.hからコピー(linux)* /
  
  3 #define FNM_PATHNAME(1 << 0)/ *「/」にワイルドカードを一致させることはできません。* /
  
  4 #define FNM_NOESCAPE(1 << 1)/ *バックスラッシュは特殊文字を引用しません。* /
  
  5 #define FNM_PERIOD(1 << 2)/ *先頭の `。 ' 明示的にのみ一致します。* /
  
  6 #define FNM_NOMATCH 1
  
  7
  
  8 #define fnmatch fnmatch_win
  
  9
  
  10 / ** copy from Google-
  
  glog * / 11 bool SafeFNMatch(const char * pattern、size_t patt_len、const char * str、size_t str_len)
  
  12 {
  
  13 size_t p = 0;
  
  14 size_t s = 0;
  
  15 while(1)
  
  16 {
  
  17 if(p == patt_len && s == str_len)
  
  18 return true;
  
  19 if(p == patt_len)
  
  20はfalseを返します。
  
  21 if(s == str_len)
  
  22 return p + 1 == patt_len && pattern [p] == '*';
  
  23 if(pattern [p] == str [s] || pattern [p] == '?')
  
  24 {
  
  25 p + = 1;
  
  26 s + = 1;
  
  27 continue;
  
  28}
  
  29 if(pattern [p] == '*')
  
  30 {
  
  31 if(p + 1 == patt_len)return true;
  
  32 do
  
  33 {
  
  34 if(SafeFNMatch( pattern +(p + 1)、patt_len-(p + 1)、str + s、str_len-s))
  
  35 {
  
  36 return true;
  
  37}
  
  38 s + = 1;
  
  39} while(s!= str_len);
  
  40
  
  41 return false;
  
  42}
  
  43
  
  44 return false;
  
  45}
  
  46}
  
  47
  
  48 / **注:最後のパラメーターフラグ関数はWindowsプラットフォームに実装されていません。* /
  
  49 int fnmatch_win(const char * pattern、const char * name、int flags = 0)
  
  50 {
  
  51 if(SafeFNMatch(pattern、strlen(pattern)、name、strlen(name)))
  
  52 return 0;
  
  53、その他
  
  54、FNM_NOMATCHを返します。
  
  55}
  
  56
  
  57
  
  #else 58 #include <fnmatch.h>
  
  59 #endif
  
  60
  
  61 int main()
  
  62 {
  
  63 const char * orgin_str = "sina | weibo | pusher";
  
  64文字のpattern_arr [] [20] = {
  
  65 {"sina | * | pusher"}、
  
  66 {"sina | * | *"}、
  
  67 {"* | weibo | *"}、
  
  68 //不可被一致適合的
  
  69 {"sina | pic | *"}、
  
  70 {"* | * | sign"}、
  
  71 {"* | weibo | sign"}、
  
  72 {"
  

  
  74
  
  75 {"* | * | *"}
  
  76};
  
  77 static int pattern_arr_size = sizeof(pattern_arr)/ sizeof(pattern_arr [0]);
  
  78
  
  79 vector <char *> vec_str;
  
  80 for(int i = 0; i <pattern_arr_size; i ++)
  
  81 {
  
  82 vec_str.push_back(pattern_arr [i]);
  
  83}
  
  84
  
  85 std :: cout << "Origin Str:" << orgin_str << "\ n \ n";
  
  86 int ret;
  
  87 for(int i = 0; i <vec_str.size(); i ++)
  
  88 {
  
  89 ret = fnmatch(vec_str.at(i)、orgin_str、FNM_PATHNAME);
  
  90 if(ret == FNM_NOMATCH)
  
  91 {
  
  92 cout << "申し訳ありませんが、失敗しました:[" << vec_str.at(i)<< "] \ n";
  

  

  

  
  96 cout << "OK、I's success:[" << vec_str.at(i)<< "] \ n";
  
  97}
  
  98}
  
  99
  
  100 return 0;
  
  101}
  
  mamicode.com、ファン
  
  のコードを完成させてください参照:文字列のあいまい一致(fnmatch).cpp。出力は次のとおりです
  
  。mamicode.com、コードファン

 

 

https://www.cnblogs.com/zhenhua1618/category/1731527.html
https://www.cnblogs.com/zhenhua1618/category/1731528.html
https://www.cnblogs.com/zhenhua1618/category/1731531。 html
https://www.cnblogs.com/zhenhua1618/category/1731532.html
https://www.cnblogs.com/zhenhua1618/category/1731533.html
https://www.cnblogs.com/zhenhua1618/category/1731534 .html
https://www.cnblogs.com/zhenhua1618/category/1731536.html
https://www.cnblogs.com/zhenhua1618/category/1731538.html
https://www.cnblogs.com/zhenhua1618/category/ 1731540.html
https://www.cnblogs.com/zhenhua1618/category/1731543.html
https://www.cnblogs.com/zhenhua1618/category/1731545.html
https://www.cnblogs.com/zhenhua1618/category /1731547.html
https://www.cnblogs.com/zhenhua1618/category/1731550.html
https://www.cnblogs.com/zhenhua1618/category/1731552.html
https://www.cnblogs.com/zhenhua1618/category/1731555。 html
https://www.cnblogs.com/zhenhua1618/category/1731557.html
https://www.cnblogs.com/zhenhua1618/category/1731560.html
https://www.cnblogs.com/zhenhua1618/category/1731562 .html
https://www.cnblogs.com/zhenhua1618/category/1731564.html
https://www.cnblogs.com/zhenhua1618/category/1731567.html
https://www.cnblogs.com/zhenhua1618/category/ 1731569.html
https://www.cnblogs.com/zhenhua1618/category/1731571.html
https://www.cnblogs.com/zhenhua1618/category/1731574.html
https://www.cnblogs.com/zhenhua1618/category /1731576.html
https://www.cnblogs.com/zhenhua1618/category/1731579.html
https://www.cnblogs.com/zhenhua1618/category/1731580.html
https://www.cnblogs.com/zhenhua1618/category/1731582。 html
https://www.cnblogs.com/zhenhua1618/category/1731586.html
https://www.cnblogs.com/zhenhua1618/category/1731589.html
https://www.cnblogs.com/zhenhua1618/category/1731591 .html
https://www.cnblogs.com/zhenhua1618/category/1731594.html
https://www.cnblogs.com/zhenhua1618/category/1731596.html
https://www.cnblogs.com/zhenhua1618/category/ 1731600.html
https://www.cnblogs.com/zhenhua1618/category/1731602.html
https://www.cnblogs.com/zhenhua1618/category/1731604.html
https://www.cnblogs.com/zhenhua1618/category /1731607.html
https://www.cnblogs.com/zhenhua1618/category/1731609.html
https://www.cnblogs.com/zhenhua1618/category/1731611.html
https://www.cnblogs.com/zhenhua1618/category/1731614。 html
https://www.cnblogs.com/zhenhua1618/category/1731616.html
https://www.cnblogs.com/zhenhua1618/category/1731620.html
https://www.cnblogs.com/zhenhua1618/category/1731622 .html
https://www.cnblogs.com/zhenhua1618/category/1731624.html
https://www.cnblogs.com/zhenhua1618/category/1731627.html
https://www.cnblogs.com/zhenhua1618/category/ 1731629.html
https://www.cnblogs.com/zhenhua1618/category/1731631.html
https://www.cnblogs.com/zhenhua1618/category/1731634.html
https://www.cnblogs.com/zhenhua1618/category /1731636.html
https://www.cnblogs.com/zhenhua1618/category/1731638.html
https://www.cnblogs.com/zhenhua1618/category/1731641.html
https://www.cnblogs.com/zhenhua1618/category/1731643。 html
https://www.cnblogs.com/zhenhua1618/category/1731646.html
https://www.cnblogs.com/zhenhua1618/category/1731648.html
https://www.cnblogs.com/zhenhua1618/category/1731651 .html
https://www.cnblogs.com/zhenhua1618/category/1731654.html
https://www.cnblogs.com/zhenhua1618/category/1731656.html
https://www.cnblogs.com/zhenhua1618/category/ 1731660.html
https://www.cnblogs.com/zhenhua1618/category/1731662.html
https://www.cnblogs.com/zhenhua1618/category/1731665.html
https://www.cnblogs.com/zhenhua1618/category /1731667.html
https://www.cnblogs.com/zhenhua1618/category/1731669.html
https://www.cnblogs.com/zhenhua1618/category/1731672.html
https://www.cnblogs.com/zhenhua1618/category/1731674。 html
https://www.cnblogs.com/zhenhua1618/category/1731677.html
https://www.cnblogs.com/zhenhua1618/category/1731679.html
https://www.cnblogs.com/zhenhua1618/category/1731681 .html
https://www.cnblogs.com/zhenhua1618/category/1731683.html
https://www.cnblogs.com/zhenhua1618/category/1731686.html
https://www.cnblogs.com/zhenhua1618/category/ 1731688.html
https://www.cnblogs.com/zhenhua1618/category/1731691.html
https://www.cnblogs.com/zhenhua1618/category/1731694.html
https://www.cnblogs.com/zhenhua1618/category /1731696.html
https://www.cnblogs.com/zhenhua1618/category/1731698.html
https://www.cnblogs.com/zhenhua1618/category/1731701.html
https://www.cnblogs.com/zhenhua1618/category/1731703。 html
https://www.cnblogs.com/zhenhua1618/category/1731706.html
https://www.cnblogs.com/zhenhua1618/category/1731708.html
https://www.cnblogs.com/zhenhua1618/category/1731710 .html
https://www.cnblogs.com/zhenhua1618/category/1731712.html
https://www.cnblogs.com/zhenhua1618/category/1731715.html
https://www.cnblogs.com/zhenhua1618/category/ 1731717.html
https://www.cnblogs.com/zhenhua1618/category/1731719.html
https://www.cnblogs.com/zhenhua1618/category/1731754.html
https://www.cnblogs.com/zhenhua1618/category /1731755.html
https://www.cnblogs.com/zhenhua1618/category/1731756.html
https://www.cnblogs.com/zhenhua1618/category/1731758.html
https://www.cnblogs.com/zhenhua1618/category/1731759。 html
https://www.cnblogs.com/zhenhua1618/category/1731760.html
https://www.cnblogs.com/zhenhua1618/category/1731762.html
https://www.cnblogs.com/zhenhua1618/category/1731763 .html
https://www.cnblogs.com/zhenhua1618/category/1731765.html
https://www.cnblogs.com/zhenhua1618/category/1731766.html
https://www.cnblogs.com/zhenhua1618/category/ 1731767.html
https://www.cnblogs.com/zhenhua1618/category/1731768.html
https://www.cnblogs.com/zhenhua1618/category/1731770.html
https://www.cnblogs.com/zhenhua1618/category /1731771.html
https://www.cnblogs.com/zhenhua1618/category/1731772.html
https://www.cnblogs.com/zhenhua1618/category/1731773.html
https://www.cnblogs.com/zhenhua1618/category/1731775。 html
https://www.cnblogs.com/zhenhua1618/category/1731776.html
https://www.cnblogs.com/zhenhua1618/category/1731777.html
https://www.cnblogs.com/zhenhua1618/category/1731779 .html
https://www.cnblogs.com/zhenhua1618/category/1731780.html
https://www.cnblogs.com/zhenhua1618/category/1731782.html
https://www.cnblogs.com/zhenhua1618/category/ 1731783.html
https://www.cnblogs.com/zhenhua1618/category/1731785.html
https://www.cnblogs.com/zhenhua1618/category/1731786.html
https://www.cnblogs.com/zhenhua1618/category /1731787.html
https://www.cnblogs.com/zhenhua1618/category/1731788.html
https://www.cnblogs.com/zhenhua1618/category/1731790.html
https://www.cnblogs.com/zhenhua1618/category/1731791。 html
https://www.cnblogs.com/zhenhua1618/category/1731793.html
https://www.cnblogs.com/zhenhua1618/category/1731794.html
https://www.cnblogs.com/zhenhua1618/category/1731795 .html
https://www.cnblogs.com/zhenhua1618/category/1731797.html
https://www.cnblogs.com/zhenhua1618/category/1731798.html
https://www.cnblogs.com/zhenhua1618/category/ 1731800.html
https://www.cnblogs.com/zhenhua1618/category/1731802.html
https://www.cnblogs.com/zhenhua1618/category/1731804.html
https://www.cnblogs.com/zhenhua1618/category /1731807.html
https://www.cnblogs.com/zhenhua1618/category/1731808.html
https://www.cnblogs.com/zhenhua1618/category/1731811.html
https://www.cnblogs.com/zhenhua1618/category/1731812。 html
https://www.cnblogs.com/zhenhua1618/category/1731814.html
https://www.cnblogs.com/zhenhua1618/category/1731816.html
https://www.cnblogs.com/zhenhua1618/category/1731818 .html
https://www.cnblogs.com/zhenhua1618/category/1731821.html
https://www.cnblogs.com/zhenhua1618/category/1731822.html
https://www.cnblogs.com/zhenhua1618/category/ 1731825.html
https://www.cnblogs.com/zhenhua1618/category/1731826.html
https://www.cnblogs.com/zhenhua1618/category/1731828.html
https://www.cnblogs.com/zhenhua1618/category /1731831.html
https://www.cnblogs.com/zhenhua1618/category/1731832.html
https://www.cnblogs.com/zhenhua1618/category/1731834.html
https://www.cnblogs.com/zhenhua1618/category/1731837。 html
https://www.cnblogs.com/zhenhua1618/category/1731839.html
https://www.cnblogs.com/zhenhua1618/category/1731841.html
https://www.cnblogs.com/zhenhua1618/category/1731843 .html
https://www.cnblogs.com/zhenhua1618/category/1731846.html
https://www.cnblogs.com/zhenhua1618/category/1731848.html
https://www.cnblogs.com/zhenhua1618/category/ 1731850.html
https://www.cnblogs.com/zhenhua1618/category/1731852.html
https://www.cnblogs.com/zhenhua1618/category/1731856.html
https://www.cnblogs.com/zhenhua1618/category /1731857.html
https://www.cnblogs.com/zhenhua1618/category/1731859.html
https://www.cnblogs.com/zhenhua1618/category/1731863.html
https://www.cnblogs.com/zhenhua1618/category/1731864。 html
https://www.cnblogs.com/zhenhua1618/category/1731866.html
https://www.cnblogs.com/zhenhua1618/category/1731868.html
https://www.cnblogs.com/zhenhua1618/category/1731870 .html
https://www.cnblogs.com/zhenhua1618/category/1731871.html
https://www.cnblogs.com/zhenhua1618/category/1731874.html
https://www.cnblogs.com/zhenhua1618/category/ 1731876.html
https://www.cnblogs.com/zhenhua1618/category/1731878.html
https://www.cnblogs.com/zhenhua1618/category/1731880.html
https://www.cnblogs.com/zhenhua1618/category /1731881.html
https://www.cnblogs.com/zhenhua1618/category/1731884.html
https://www.cnblogs.com/zhenhua1618/category/1731886.html
https://www.cnblogs.com/zhenhua1618/category/1731887。 html
https://www.cnblogs.com/zhenhua1618/category/1731890.html
https://www.cnblogs.com/zhenhua1618/category/1731891.html
https://www.cnblogs.com/zhenhua1618/category/1731893 .html
https://www.cnblogs.com/zhenhua1618/category/1731895.html
https://www.cnblogs.com/zhenhua1618/category/1731896.html
https://www.cnblogs.com/zhenhua1618/category/ 1731898.html
https://www.cnblogs.com/zhenhua1618/category/1731899.html
https://www.cnblogs.com/zhenhua1618/category/1731901.html
https://www.cnblogs.com/zhenhua1618/category /1731903.html
https://www.cnblogs.com/zhenhua1618/category/1731904.html
https://www.cnblogs.com/zhenhua1618/category/1731906.html
https://www.cnblogs.com/zhenhua1618/category/1731907。 html
https://www.cnblogs.com/zhenhua1618/category/1731909.html
https://www.cnblogs.com/zhenhua1618/category/1731911.html
https://www.cnblogs.com/zhenhua1618/category/1731912 .html
https://www.cnblogs.com/zhenhua1618/category/1731914.html
https://www.cnblogs.com/zhenhua1618/category/1731915.html
https://www.cnblogs.com/zhenhua1618/category/ 1731917.html
https://www.cnblogs.com/zhenhua1618/category/1731919.html
https://www.cnblogs.com/zhenhua1618/category/1731920.html
https://www.cnblogs.com/zhenhua1618/category /1731922.html
https://www.cnblogs.com/zhenhua1618/category/1731923.html
https://www.cnblogs.com/zhenhua1618/category/1731925.html
https://www.cnblogs.com/zhenhua1618/category/1731927。 html
https://www.cnblogs.com/zhenhua1618/category/1731928.html
https://www.cnblogs.com/zhenhua1618/category/1731930.html
https://www.cnblogs.com/zhenhua1618/category/1731932 .html
https://www.cnblogs.com/zhenhua1618/category/1731933.html
https://www.cnblogs.com/zhenhua1618/category/1731935.html
https://www.cnblogs.com/zhenhua1618/category/ 1731936.html
https://www.cnblogs.com/zhenhua1618/category/1731938.html
https://www.cnblogs.com/zhenhua1618/category/1731940.html
https://www.cnblogs.com/zhenhua1618/category /1731941.html
https://www.cnblogs.com/zhenhua1618/category/1731943.html
https://www.cnblogs.com/zhenhua1618/category/1731945.html
https://www.cnblogs.com/zhenhua1618/category/1731946。 html
https://www.cnblogs.com/zhenhua1618/category/1731948.html
https://www.cnblogs.com/zhenhua1618/category/1731949.html
https://www.cnblogs.com/zhenhua1618/category/1731951 .html
https://www.cnblogs.com/zhenhua1618/category/1731954.html
https://www.cnblogs.com/zhenhua1618/category/1731956.html
https://www.cnblogs.com/zhenhua1618/category/ 1731958.html
https://www.cnblogs.com/zhenhua1618/category/1731960.html
https://www.cnblogs.com/zhenhua1618/category/1731963.html
https://www.cnblogs.com/zhenhua1618/category /1731966.html

おすすめ

転載: www.cnblogs.com/zhenhua1618/p/12729385.html
おすすめ