如何使用 re2 获取部分匹配项的数量
How to get number of partial matches using re2
我想使用 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;
}
我想使用 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;
}