$ は文字列の終わりを示していると思いました。ただし、次のコードは結果として「testbbbccc」を返します。これは私にとって非常に驚くべきことです...これは、$ が実際には文字列全体ではなく行末と一致することを意味します。
#include <iostream>
#include <regex>
using namespace std;
int main()
{
tr1::regex r("aaa([^]*?)(ogr|$)");
string test("bbbaaatestbbbccc\nddd");
vector<int> captures;
captures.push_back(1);
const std::tr1::sregex_token_iterator end;
for (std::tr1::sregex_token_iterator iter(test.begin(), test.end(), r, captures); iter != end; )
{
string& t1 = iter->str();
iter++;
cout << t1;
}
}
「マルチライン」スイッチ (実際には PCRE で簡単に見つけることができます) を見つけようとしましたが、成功しませんでした... 誰かが私を正しい方向に向けることができますか?
よろしく、RP