error_stack during regex_match
error_stack during regex_match
目标是: 这个 json:
{"secretWord1":"private", "something": ""secretWord2":"privateToo""}
通过regex_match转换为此内容:
{"secretWord1":"****", "something": ""secretWord2":"****""}
我有以下代码,其中包含三个正则表达式:
std::regex regex1(R"~((\"|")((?:[^\"]*)(?:secretWord1|secretWord2))1:1([^\"]*)1)~", std::regex_constants::icase);
std::regex regex2(R"~((\")((?:[^\"]*)(?:secretWord1|secretWord2))1:1([^\"]*)1)~", std::regex_constants::icase);
std::regex regex3(R"~((")((?:[^\"]*)(?:secretWord1|secretWord2))1:1([^\"]*)1)~", std::regex_constants::icase);
std::string replaced = someJsonData;
replaced = std::regex_replace(replaced, regex1, "$1$2$1:$1****$1");
replaced = std::regex_replace(std::regex_replace(replaced, regex2, "$1$2$1:$1****$1"), regex3, "$1$2$1:$1****$1");
我想替换秘密信息并将其隐藏在星星后面。第一个正则表达式在
error_stack: regex_error(error_stack): There was insufficient memory to determine whether the regular expression could match the specified character sequence.
第一个表达式有问题吗?因为其他两个表达式只是相互补充,最终,它像 regex1 一样做同样的工作,但当我运行它们时它们运行得很好。
在失败期间我无法弹出示例代码,但文件不是那么大(大约 30kB(。当我尝试使用 JSON 生成器时,正则表达式 1 显然比我组合正则表达式 2+正则表达式 3 时慢。
我对c ++和内存问题了解不多,但这似乎很匹配:
(\?"(secretword1|secretword2)\?":\?")(.*?)(\?")
https://regex101.com/r/T8pY0V/2
请注意,我强烈建议获取一个 JSON 库,但这个正则表达式可以在紧要关头工作。由您来找出它失败的所有边缘情况。
相关文章:
- 此模式的C++RegEx
- C++ std::regex 使用前瞻失败
- 错误消息:使用"string* +="后"no match for 'operator+='"
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 模板函数参数到模板函数的"candidate template ignored: could not match ..."
- 开放CV垫"Sizes of input arguments do not match"的问题
- 如何'Invalid conversion'和'no match for operator'更正这些 c++ 错误
- 为什么当我没有变量或其他任何命名的东西时"no match for 'operator==' "错误?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 你能防止 std::regex 在无效表达式上抛出异常吗?
- 使用Regex解析cpp中的字符串并创建映射
- C++:如何用split查找单词?Regex
- 在VC2015U3上,std::regex比boost::regex慢得多
- 是否有更有效的方法来生成日期的REGEX字符串
- 在C++中使用带有regex的捕获组
- 将std::regex设置为静态的好主意吗
- 为什么Regex(c++)需要指数时间
- std::regex and dual ABI
- 使用boost regex partial_match避免使用$ match结束缓冲区