【发布时间】:2020-11-12 13:17:05
【问题描述】:
我的配置文件(例如,.ini 文件)的以下部分已损坏,我正在开发一个 C++ 应用程序,该应用程序使用正则表达式检测文件损坏,检测配置文件中的无效字符:
当我通过使用 istream 并存储到字符串(示例)中读取此文件时,我在 myexpr 处的正则表达式实现存在问题,不知何故未检测到文件损坏。在这段代码中,我预先存储了读取的文件内容。
TEST(Concept, RegexUnicode1Sample)
{
regex myexpr (R"(/[^\u0020-\u007E]|(\b.*(Mensagem|Antes|Loop|Movimentar|\|).*)|\\[0-9]{3,4}/g)");
string sample = R"(\025\003\003\000\032\347\061\f\002\002\207\351H\346\353\037B\341\177\250\264\202\004\236\227\265
\261;\227\346ocolPortSecure=0\nMultiProtocolPort=0\n\n[TCP]\nTYPE=TCPIP\nPort=6800\n\n)";
bool status = regex_match(sample,myexpr);
EXPECT_TRUE(status);
}
这个单元测试在我运行时失败了,这里可能有什么问题?我在https://regexr.com/ 测试了我的正则表达式,它可以检测到损坏的字符。
【问题讨论】: