c++ - JavaScript 正则表达式在 C++ 中不匹配

标签 c++ regex c++11 visual-studio-2013

我使用 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/

相关文章:

c++ - 未启用 SSE 指令集

javascript - 使用javascript替换开始和结束多个html标签

c++ - std::to_string(double) 的精度

c++ - 无法使用嵌套的 lambda 捕获静态成员

c++ - 为什么我不能删除字符串的数字字符?

c++ - 如何在 C++ 中解析包含 -0x1.0c7474fp+8 形式的十六进制文件?

c++ - 双指针的 bool 值(存在/是否为空)

使用正则表达式的 Python XML 重建

html - 使用 R 提取 html 标签中的内容

c++ - lambda 签名 for_each + unordered_map