C++ 如何使用re2获得部分匹配数

C++ 如何使用re2获得部分匹配数,c++,re2,C++,Re2,我想使用re2获得给定字符串的子字符串匹配数 我已经阅读了re2的代码:但是没有一个简单的方法可以做到这一点 我有以下示例代码: std::string regexPunc=“[\\p{p}]”;//匹配任何标点符号; re2::re2 re2Punc(regexPunc); std::string sampleString=“test…test”; if(re2::re2::PartialMatch(sampleString,re2Punc)){ std::cout使用查找和消费,并自己计算匹

我想使用re2获得给定字符串的子字符串匹配数

我已经阅读了re2的代码:但是没有一个简单的方法可以做到这一点

我有以下示例代码:

std::string regexPunc=“[\\p{p}]”;//匹配任何标点符号;
re2::re2 re2Punc(regexPunc);
std::string sampleString=“test…test”;
if(re2::re2::PartialMatch(sampleString,re2Punc)){

std::cout使用
查找和消费
,并自己计算匹配项。这不会低效,因为为了知道匹配项的数量,无论如何都必须执行和计算这些匹配项

例如:

std::string regexPunc = "[\\p{P}]"; // matches any punctuations; 
re2::RE2 re2Punc(regexPunc);
std::string sampleString = "test...test";
StringPiece input(sampleString);
int numberOfMatches = 0;
while(re2::RE2::FindAndConsume(&input, re2Punc)) {
    ++numberOfMatches;
}