zoukankan      html  css  js  c++  java
  • regex_search

             在regex_match()里边只能看到regex和输入的字符串是不是全部匹配上了,匹配上了就返回true,否则false。然而他不能返回匹配到的子字符串;regex_search()和regex_match()参数类型是一样的;返回的也是bool类型;但是它还可以查找到匹配的子字符串;将捕捉到的结果会保存在std::smatch里边;比如:

    Std::smatch match;  用过调用match[1] 和 match[2]来查看捕获到的第一个和第二个捕获组;

    #include <iostream>
    #include <regex>
    int main() {
        std::regex r("//(.+)(\d{4})");
        std::string str;
        while(true)
        {
            if(!std::getline(std::cin,str) || str == "q")
            {
                break;
            } else
            {
                std::smatch match;
                if(std::regex_search(str,match,r))
                {
                    std::cout << "find this str : " << match[1] << "***" << match[2]<< std::endl;
                }else
                {
                    std::cout << "invaild argument"  << std::endl;
                }
                std::cout << "prefix() :" << match.prefix() << std::endl;
                std::cout << "suffix() :" << match.suffix() << std::endl;
            }
        }
        return 0;
    }

    输入:

    kslkf//kfskl89438sd

    结果:

    find this str : kfskl8***9438
    prefix() :kslkf
    suffix() :sd

    其中std::smatch.prefix()返回的是匹配到的捕获组之前的部分

      std::smatch.suffix()返回的是匹配到捕获组之后的部分;

  • 相关阅读:
    C#之类和对象
    uml中关联与依赖
    uml中的各个关系
    数据挖掘聚类算法分类(转)
    (转)Client http persistent connection limit
    牛客网NOIP赛前集训营提高组(第七场)Solution
    训练题表
    CF1000赛后总结
    UVA3983 Robotruck 题解
    CF1034A Enlarge GCD
  • 原文地址:https://www.cnblogs.com/boost/p/10425663.html
Copyright © 2011-2022 走看看