bool checkConditionValidity(std::string str){
std::regex pattern(R"([^()\s\w.&=])|([^=]=[^=])|([^&]&[^&])");
return std::regex_search(str, pattern);
}
在使用默认编译器的全新 VS Code 安装中,上述函数会导致编译时错误“抛出‘std::regex_error’实例后终止调用 What(): regex_error”。
正则表达式模式最初包含向前查找和向后查找运算符。在完成之前的问题后,我消除了它们并继续上面的简单模式。但仍然没有任何改进。我仅限于使用自定义代码或 std::regex 等 std 库来实现我想要的结果。
我刚刚偶然发现了这个答案。
在形成原始字符串时,您只需要包含额外的左大括号和右大括号即可。用
R"(([^()\s\w.&=])|([^=]=[^=])|([^&]&[^&]))"
替换代码中的模式为我解决了这个问题。
这对我有用。不确定对其他人是否有效。如果有人比我更有背景,请回答。