greta一些简单实用的字符串匹配
代码
#if 0//整数
match_results results;
tstring str("f34");
rpattern pat("^[+|-]?\\d+\\d*$");
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//正整数
match_results results;
tstring str("+323f444");
rpattern pat("^[+]?\\d+\\d*$");
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//浮点数
match_results results;
tstring str("-3.23444");
rpattern pat("^[+|-]?[0-9]+\\.?[0-9]+$");//^\-?[0-9]*\.?[0-9]*$
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//字母
match_results results;
tstring str(".asdf");
rpattern pat("^[a-z]*$");//^\-?[0-9]*\.?[0-9]*$
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
match_results results;
tstring str("f34");
rpattern pat("^[+|-]?\\d+\\d*$");
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//正整数
match_results results;
tstring str("+323f444");
rpattern pat("^[+]?\\d+\\d*$");
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//浮点数
match_results results;
tstring str("-3.23444");
rpattern pat("^[+|-]?[0-9]+\\.?[0-9]+$");//^\-?[0-9]*\.?[0-9]*$
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
#if 0//字母
match_results results;
tstring str(".asdf");
rpattern pat("^[a-z]*$");//^\-?[0-9]*\.?[0-9]*$
match_results::backref_type br = pat.match(str, results);
if (br.matched)
{
tcout << "match" << std::endl;
}
else
{
tcout << "not match" << std::endl;
}
#endif
其他一些实用代码
代码
#if 1//subsitute 替换
subst_results results;
tstring str("a43sdf");
REGEX_FLAGS dw = GLOBAL | NOCASE;
rpattern pat("[0-9]","d",dw);
int cnts = pat.substitute(str,results);
subst_results::backref_vector vec = results.all_backrefs();
subst_results::backref_vector::iterator iter;
std::string m_strResult = "";
for( iter = vec.begin(); iter != vec.end(); iter++ )
{
string _str = (*iter).str();
m_strResult += _str.c_str();
}
#endif
#if 0//count 计算正则表达式在串中出现的次数
tstring str("asdf");
rpattern pat("[a-z]");
int cnts = pat.count(str);
#endif
#if 0//split 用正则表达式作为分隔符来切分串
split_results results;
tstring str("asdf");
rpattern pat("[a-z]");
int cnts = pat.split(str, results);
#endif
subst_results results;
tstring str("a43sdf");
REGEX_FLAGS dw = GLOBAL | NOCASE;
rpattern pat("[0-9]","d",dw);
int cnts = pat.substitute(str,results);
subst_results::backref_vector vec = results.all_backrefs();
subst_results::backref_vector::iterator iter;
std::string m_strResult = "";
for( iter = vec.begin(); iter != vec.end(); iter++ )
{
string _str = (*iter).str();
m_strResult += _str.c_str();
}
#endif
#if 0//count 计算正则表达式在串中出现的次数
tstring str("asdf");
rpattern pat("[a-z]");
int cnts = pat.count(str);
#endif
#if 0//split 用正则表达式作为分隔符来切分串
split_results results;
tstring str("asdf");
rpattern pat("[a-z]");
int cnts = pat.split(str, results);
#endif