std::regex_error 运行时抛出异常

std::regex_error exception thrown at runtime

鉴于此代码有效:

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 异常。初始化有什么问题?

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

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

应该是

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

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

您的正则表达式中有错字。改变这个:

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

收件人:

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