C++正则表达式

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<list>
#include<tuple>
#include<bitset>
#include<regex>


using namespace  std;


bool valid(const smatch &m)
{
    if(m[1].matched)
    {
        return m[3].matched && (m[4].matched==0 ||m[4].str()==" ");
    }
    else
        return !m[3].matched && m[4].str() == m[6].str();

}




int main(int agrn,char** args)
{

    string phone ="(\\()?(\\d{3})(\\))?([-. ]?)(\\d{3})([-. ]?)(\\d{4})";

    regex r(phone);
    smatch m;
    string s ;
    while(getline(cin,s))
    {
        for(sregex_iterator it(s.begin(),s.end(),r),end_it;it!=end_it;++it)
        {
            if(valid(*it))
            {
                cout<<"valid: "<<it->str()<<endl;

            }
            else
               cout<<"not valid:"<< it->str()<<endl;


        }

    }




//    string pattern("[^c]ei");
//    pattern  = "[[:alpha:]]*" +pattern +"[[:alpha:]]*";

//    regex r(pattern,regex_constants::icase);
//    smatch results;
//    string text_str ="receipt freInd theif receive";

//    for(sregex_iterator it(text_str.begin(),text_str.end(),r),end_it;
//        it!=end_it;it++)
//    {
//            std::cout<<it->str()<<std::endl;

//    }




}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值