1、使用类及函数
2、正则表达式
自己定义的一些简单的正则表达式
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; //默认语法 + 忽略大小写
3、正则使用示例
(1)sregex_iterator 使用示例
void Data(CString mSectName)
{
vector<string> 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++;
}
}
}
(2)regex_match 使用示例
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<string::const_iterator> match;
bool bMatch = regex_match(str, match, rx);
return bMatch;
}