正常的 std::regex_search 会导致“抛出‘std::regex_error’实例后终止调用”

问题描述 投票:0回答:1
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 库来实现我想要的结果。

c++ regex std
1个回答
0
投票

我刚刚偶然发现了这个答案。

在形成原始字符串时,您只需要包含额外的左大括号和右大括号即可。用

R"(([^()\s\w.&=])|([^=]=[^=])|([^&]&[^&]))"
替换代码中的模式为我解决了这个问题。

这对我有用。不确定对其他人是否有效。如果有人比我更有背景,请回答。

© www.soinside.com 2019 - 2024. All rights reserved.