
- 自己定义的一些简单的正则表达式
- namespace nsCrvt
- {
- const string rxNameModel = "TotalFlrModelInfo\\.ini" ; // 模型信息文件名
- const string rxModelinf = "\\[模型信息\\]" ; // 模型信息文件内
- const string rxModelStdF = "\\[第(([0-9]){1,3})标准层\\]" ; // 模型信息文件内 最多支持999层
-
- const string rxNameStdFType = "_第(([0-9]){1,3})标准层yjkbimmodel\\.txt" ; // 标椎层文件名 最多支持999层
- const string rxStdFType = "(类型\\:)" ; // 类型:***
-
-
- const string rxData = "(([0-9]){1,10})";
- const string rxAdd = "(\\*|x|X)";
- const string rxData0 = "(([0-9]){0,10})";
- const string rxAdd0 = "((\\*|x|X){0,1})";
-
- }
-
- // 这个很好玩
- regex::flag_type flag = regex::ECMAScript | regex::icase; //默认语法 + 忽略大小写
- void Data(CString mSectName)
- {
- vector
vctData; - string strRx = rxData;
- string str = CW2A(mSectName);
- regex::flag_type flag = regex::ECMAScript /*| regex::icase*/; //默认语法
- regex rx(strRx, flag);
- {
- sregex_iterator iter(str.begin(), str.end(), rx);
- std::sregex_iterator end;
- while (iter != end)
- {
- size_t nSize = iter->size();
- if (nSize >= 1)
- {
- string csstr = (*iter)[0];
- vctData.push_back(csstr);
- }
- iter++;
- }
- }
- }
- bool bMatch(CString mSectName)
- {
- regex::flag_type flag = regex::ECMAScript /*| regex::icase*/; //默认语法
- string strRx = rxH + rxData + rxAdd + rxData + rxAdd + rxData + rxAdd + rxData + rxAdd0 + rxData0 + rxAdd0 + rxData0;
- regex rx(strRx, flag);
- string str = CW2A(mSectName);
- match_results
match; - bool bMatch = regex_match(str, match, rx);
- return bMatch;
- }