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

 其他一些实用代码

代码
#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
原文地址:https://www.cnblogs.com/lancidie/p/1950222.html