我使用 regex101 创建并测试了 JavasScript 正则表达式。将其转换为 C++ (Visual Studio 2013) 后,std::regex_search() 返回 false。
我的错误是什么?
有效的 JavaScript 正则表达式:
struct[\s]+([\w]+).+?public[\s]+([\w]+)[\s\S]+?\{([\s\S]+?)\};
失败的 C++ 正则表达式(具有相同的字符串):
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);
最佳答案
在 πάντα ῥεῖ 指出此失败是由 Visual Studio 2013 中的错误引起的后,我切换到提供与 STL 相同功能的 boost 正则表达式库。只需将命名空间从 std 更改为 boost 即可解决该问题。
关于c++ - JavaScript 正则表达式在 C++ 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39583659/