2024-06-17 12:42:47 发布
网友
我使用以下正则表达式模式在二进制文件中搜索0xDEAD4FAD:
my_pattern = re.compile(b"\xDE\xAD\x4F\xAD")
但是,如何将搜索0xDEAD4xxx的搜索模式推广?似乎无法切断半个字节
我想最好的方法是将二进制字符串转换为ASCII十六进制字符串,并对其应用regex。我不相信regex的目的是为了处理二进制数据;你也许可以让它工作,但如果有惊喜的话,不要惊讶。
如果我在你的情况下,我会和格雷普一起试试hexdump。
正则表达式允许在范围内搜索。因此,要查找第一个半字节为“4”的字节,请使用:
pattern = re.compile(b"[\x40-\x4F]")
下面的测试表明它产生了所需的输出:
>>> for byte in ('\x3f', '\x40', '\x42', '\x4f', '\x50'): print bool(pattern.search(byte)) ... False True True True False
要回答有关搜索0xDEAD4xxx的特定问题,请使用:
my_pattern = re.compile(b"\xDE\xAD[\x40-\x4F].")
我想最好的方法是将二进制字符串转换为ASCII十六进制字符串,并对其应用regex。我不相信regex的目的是为了处理二进制数据;你也许可以让它工作,但如果有惊喜的话,不要惊讶。
如果我在你的情况下,我会和格雷普一起试试hexdump。
正则表达式允许在范围内搜索。因此,要查找第一个半字节为“4”的字节,请使用:
下面的测试表明它产生了所需的输出:
要回答有关搜索0xDEAD4xxx的特定问题,请使用:
相关问题 更多 >
编程相关推荐