C++ JavaScript正则表达式在C++;

C++ JavaScript正则表达式在C++;,c++,regex,c++11,visual-studio-2013,C++,Regex,C++11,Visual Studio 2013,我已经用regex101创建并测试了一个JavasScript正则表达式。将它翻译成C++(VisualStudio 2013)之后,STD::ReExxSexChar()返回false。 我犯了什么错 工作JavaScript正则表达式: struct[\s]+([\w]+).+?public[\s]+([\w]+)[\s\S]+?\{([\s\S]+?)\}; 失败C++ +正则表达式(同一字符串): 我犯了什么错 这不是你的错。VS2013std::regex实现似乎有缺陷。以下是参考资

我已经用regex101创建并测试了一个JavasScript正则表达式。将它翻译成C++(VisualStudio 2013)之后,STD::ReExxSexChar()返回false。 我犯了什么错

工作JavaScript正则表达式:

struct[\s]+([\w]+).+?public[\s]+([\w]+)[\s\S]+?\{([\s\S]+?)\};

失败C++ +正则表达式(同一字符串):

我犯了什么错

这不是你的错。VS2013
std::regex
实现似乎有缺陷。以下是参考资料:


正如其他人在评论中提到的,正则表达式在较新版本的Visual Studio或GCC中运行良好。

在πάντα之后ῥεῖ 指出此故障是由Visual Studio 2013中的一个bug引起的,我切换到了boost regex库,该库提供了与STL相同的功能。只需将名称空间从std更改为boost即可解决此问题。

是否尝试了原始字符串文字,如
R“rx(struct[\s]+([\w]+).+?public[\s]+([\w]+)[\s]+?\{([\s\s]+)\})rx”
?另外,请解释它到底是如何失败的。@πάνταῥεῖ 那是什么语法?@qxz@πάνταῥεῖ 它只是返回false。我还尝试了你的文字字符串,有ECMA常量和没有ECMA常量,结果还是一样的。这意味着您的正则表达式很好。这是编译器的问题。谢谢!我切换到boost正则表达式库,问题是solved@siskat你可以加上这个作为另一个答案(更详细一点)。我认为这将为未来的研究增加价值。
std::regex rgxGetStructs("struct[\\s]+([\\w]+).+?public[\\s]+([\\w]+)[\\s\\S]+?\\{([\\s\\S]+?)\\};", std::regex_constants::ECMAScript);
const char* test = "struct mySTruct : public boss { int test; };";
bool chk = std::regex_search(std::string(test), rgxGetStructs);