【发布时间】:2016-11-03 23:26:42
【问题描述】:
如何获得与不可打印的 Unicode 或 ASCII 字节匹配的正则表达式?
char cData[1024] = { 0 };
memcpy(cData, "\x00\x04\x02\x08\x00hello thats it", 19);
std::regex r2e("([\\x00-\\x1F]){5}(.?)*", std::regex_constants::basic);
if (std::regex_search((char*)cData, cData+19, r2e))
printf("ok");
else
printf("nok");
我的示例不起作用(打印“nok”)。
【问题讨论】:
-
它以什么方式“不起作用”?
-
打印“nok”!如果我是赖特。前 5 个字节将在第一组匹配,所以“你好,就是这样”在其他组?! (当然,如果匹配的话)
-
您确定要使用八进制字符文字吗?我最初认为不是,但后来我看到了
\010以及其他 2 位数字在十六进制 (\xnn) 中相同的事实,所以也许你做到了。 -
如何忽略前 5 个字节?我改变了我的例子。