运行时抛出std :: regex_error异常

时间:2015-03-30 17:23:19

标签: c++ regex c++11 visual-c++ vs-2015-preview

鉴于此代码有效:

regex r1{ "fish"s };
smatch m1;
if (regex_search("I love fish and chips"s, m1, r1))
    cout << m1[0] << endl;

我相信VS2015支持正则表达式。但是,初始化此正则表达式对象:

regex r{ R"(\d{2,3}(-\d\d) { 2 })" };

抛出std::regex_error个异常。初始化有什么问题?

2 个答案:

答案 0 :(得分:3)

所以,是的,正如评论中提到的那样:

(\d{2,3}(-\d\d) { 2 })

应该是

(\d{2,3}(-\d\d){2})

否则{2}与空间而不是(-\d\d)相关,其他奇怪的事情也可能发生......

答案 1 :(得分:2)

你的正则表达式中有拼写错误。改变这个:

regex r{ R"(\d{2,3}(-\d\d) { 2 })" };

要:

regex r{ R"(\d{2,3}(-\d\d){2})" };