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

実装のバグのようです。同じ結果が得られますが、「?」を削除すると 一致する正規表現から。後者が成功したときに、「これらの1つ」ではなく「これらの0または1つ」と言って失敗する理由は考えられません。

于 2012-08-27T20:21:14.520 に答える