0
bool match=0;
string pattern, domain="sub1.example.org";
while(res->next())
{
   pattern.append("(.+\\.)?");
   pattern.append(res->getString(1));
   std::regex RE(pattern);
   cout << pattern << "-" << domain << endl;
   pattern.clear();
   if((match=regex_match(domain, RE)))
      break;
}

上面那个不匹配,尽管输出是这样的:

(.+\.)?example.org-sub1.example.org
(.+\.)?example.orgg-sub1.example.org
(.+\.)?sdasd.com-sub1.example.org

我想我太困了或其他什么,有人可以帮帮我吗?

编辑:gcc 4.6.3

4

2 回答 2

2

GNU libstdc++ 的实现<regex>不完整。请参阅手册

于 2012-08-27T20:29:18.490 回答
1

看起来像是实现中的一个错误。我得到了相同的结果,但是如果我删除了“?” 从它匹配的正则表达式。当后者成功时,我想不出任何理由说“其中的 0 或 1”而不是“其中的 1”会失败。

于 2012-08-27T20:21:14.520 回答