greta一些简单实用的字符串匹配

本文提供了多个正则表达式匹配示例,包括整数、正整数、浮点数和字母等不同类型的字符串匹配,并展示了如何进行替换、计算出现次数及切分字符串等操作。
ExpandedBlockStart.gif代码
#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

 其他一些实用代码

 

ExpandedBlockStart.gif代码
#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/archive/2011/02/09/1950222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值