PCRE不匹配

时间:2016-02-08 13:58:13

标签: c++ pcre

我认为这是非常愚蠢的事情,但这并不匹配,我不明白为什么。 我成功编译了所有内容,但它并不匹配。 我已经使用过RE(".*"),但它也不起作用。 系统是OS X(使用brew安装pcre。)

std::string s;
if (pcrecpp::RE("h.*o").FullMatch("hello", &s))
{
    std::cout << "Successful match " << s << std::endl;
}

1 个答案:

答案 0 :(得分:2)

您正在尝试提取一个子模式(在&amp; s中),但没有包含任何括号来捕获该子模式。试试这个(未经测试,注意括号)。

std::string s;
if (pcrecpp::RE("(h.*o)").FullMatch("hello", &s))
{
    std::cout << "Successful match " << s << std::endl;
}

http://www.pcre.org/original/doc/html/pcrecpp.html上的文档有一个类似的例子,说明:

  

示例:失败,因为没有足够的子模式:
  !pcrecpp :: RE(“\ w +:\ d +”)。FullMatch(“ruby:1234”,&amp; s);