【发布时间】:2010-12-10 12:42:49
【问题描述】:
我认为 $ 表示字符串的结尾。但是,下面的代码给出了“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 中轻松找到),但没有成功……有人能指出正确的方向吗?
问候, R.P.
【问题讨论】:
-
您使用的是哪种 tr1 实现?
-
我使用的是 Visual Studio 2008。
-
正如我在下面所说的 - 尝试 \z 而不是 $