zoukankan      html  css  js  c++  java
  • C++基础-正则实战(日期拆分regex_match ,符号拆分sregex_token_iterator, 邮箱的查找 regex_search)

    1.日期拆分 由于日期是固定格式的,如1994/01/08 因此使用regex_match 可以进行结果的匹配

    int main3()
    {
        //1999 12 25
        regex reg("^(\d{4})/(0?[1-9]|1[0-2]])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
        string str1;
        //cin >> str1;
        getline(cin, str1); //遇到斜跨n结束
        cout << str1;
        smatch m; //帮助转换
        if(regex_match(str1, m, reg))
        {
            //m[0]忽略
            int year = atoi(m[1].str().c_str()); //把字符串转换为整数
            int month = atoi(m[2].str().c_str());
            int day = atoi(m[3].str().c_str());
            cout << "
    
    ";
            cout << year << month << day <<endl;
            cout << "OK";
        }else{
            cout << "NO";
        }
        cin.get();
        return 0;
    }

    2.符号的拆分,如sregex_token_iterator 可以进行循环的拆分

    int main()
    {
        regex reg("\s*[,#,:]+\s*");
        //char str[100] = {0};
        string str; //123, 123, 123,
        getline(cin, str);
        //迭代器
        sregex_token_iterator end; //拆分字符串
    
        vector<string>myv;
        for(sregex_token_iterator it(str.begin(), str.end(), reg,-1); it != end; it++) {
            myv.push_back(*it);
            cout << *it << endl;
        }
        for(auto i : myv)
        {
            cout << i << endl;
        }
    }

    3.根据匹配循环查找里面的邮箱信息

    //查找
    int main2()
    {
        regex reg("\w+([-+.]w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*");
        //char str[100] = {0};
        string mystr("未认证暂不开发 3023476735@qq.com 未认证 123456@qq.com");
        //迭代器
        smatch m;
        if(regex_search(mystr, m, reg))
        {
            for(int i = 0; i != m.size(); i++) {
                cout << m[i].str().c_str() << endl;
            }
            cout << "can find";
        } else {
            cout << "can not find";
        }
        cin.get();
    }
  • 相关阅读:
    dotnet core 3.0 linux 部署小贴士
    Akka.net 性能测试兼使用小技巧
    如何给小学生讲清楚ECC椭圆曲线加密
    Typescript骚操作,在TS里面直接插入HTML
    源自于NEO的KeyValue 数据库面世啦
    编译ROCKSDB总结
    Windows linux子系统 使用说明
    dotnetcore http服务器研究(二)性能分析
    dotnetcore Http服务器研究(一)
    使用信号量来 限制无边界池子与队列
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/15063947.html
Copyright © 2011-2022 走看看