1

我使用pcrecpp c++​​(PCRE lib)
并且我需要循环获取所有匹配项。我该怎么做?

例如模式:
“你好”

和主题:
“你好你好你好”

循环应该循环 3 次(因为 3 个匹配)
1 hello
2 hello
3 hello

伪代码

pcrecpp::RE pPattern ( "hello" );  
std::string strBase = "hello hello hello";  
// ...  
int iMatches = // Match count 
for ( int i = 1; i < iMatches; i++ )   
{  
    printf( "%d %s", i, pPattern[ i ].c_str () );  
}

请给我一些示例代码如何使用 pcrecpp.h 进行操作。
对不起,我的英语不好。

4

1 回答 1

4

尽管这个问题已经有几个月的历史了,但我会在这里提供一个解决方案:

#include <pcrecpp.h>
#include <iostream>

int main(void)
{
  pcrecpp::RE regex("(hello)");  
  std::string strBase = "hello hello hello";  

  pcrecpp::StringPiece input(strBase);

  std::string match;

  int count = 0;
  while (regex.FindAndConsume(&input, &match)) {
    count++;
    std::cout << count << " " << match << std::endl;
  }
}

有关更多信息,此站点可能会有所帮助。

于 2013-06-28T12:32:50.503 回答