gpt4 book ai didi

c++ - 正则表达式不可打印字节

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:18 25 4
gpt4 key购买 nike

如何获得与不可打印的 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”)。

最佳答案

这是解决方案:

std::regex r2e("[\x00-\x1F]\\{5\\}.*", 12, std::regex_constants::basic);

注意事项:

  1. 您需要在[ - ] 范围内插入文字字符。

  2. {需要在基本正则表达式中进行转义。

  3. (.?)*.* 效果相同。

  4. 您必须使用此构造函数,它需要字符串的长度作为另一个参数,因为 \x00 空字符将结束字符串。

关于c++ - 正则表达式不可打印字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com