Count number of matches

前端 未结 2 1033
刺人心
刺人心 2020-12-09 05:56

How do I count the number of matches using C++11\'s std::regex?

std::regex re(\"[^\\\\s]+\");
std::cout << re.matches(\"Harry Botter - The         


        
相关标签:
2条回答
  • 2020-12-09 06:35

    You can use regex_iterator to generate all of the matches, then use distance to count them:

    std::regex  const expression("[^\\s]+");
    std::string const text("Harry Botter - The robot who lived.");
    
    std::ptrdiff_t const match_count(std::distance(
        std::sregex_iterator(text.begin(), text.end(), expression),
        std::sregex_iterator()));
    
    std::cout << match_count << std::endl;
    
    0 讨论(0)
  • 2020-12-09 06:50

    You can use this:

    int countMatchInRegex(std::string s, std::string re)
    {
        std::regex words_regex(re);
        auto words_begin = std::sregex_iterator(
            s.begin(), s.end(), words_regex);
        auto words_end = std::sregex_iterator();
    
        return std::distance(words_begin, words_end);
    }
    

    Example usage:

    std::cout << countMatchInRegex("Harry Botter - The robot who lived.", "[^\\s]+");
    

    Output:

    7
    
    0 讨论(0)
提交回复
热议问题