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

我已经阅读了re2的代码:https://github.com/google/re2/blob/master/re2/re2.h,但是看不到一种简单的方法。

我有以下示例代码:

std::string regexPunc = "[\\p{P}]"; // matches any punctuations;
re2::RE2 re2Punc(regexPunc);
std::string sampleString = "test...test";
if (re2::RE2::PartialMatch(sampleString, re2Punc)) {
    std::cout << re2Punc.numOfMatches();
}

我希望它输出3,因为字符串中有三个标点符号。

最佳答案

使用FindAndConsume,然后自己计算匹配项。它不会是低效率的,因为为了知道比赛的数量,无论如何都必须执行并计算那些比赛。

例:

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;
}

关于c++ - 如何使用re2获取部分匹配的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56418122/

10-10 22:48