python:二进制文件的正则表达式搜索模式(半字节)

2024-06-17 12:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下正则表达式模式在二进制文件中搜索0xDEAD4FAD:

my_pattern = re.compile(b"\xDE\xAD\x4F\xAD")

但是,如何将搜索0xDEAD4xxx的搜索模式推广?似乎无法切断半个字节


Tags: 文件re字节my二进制模式patterncompile
3条回答

我想最好的方法是将二进制字符串转换为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].")

相关问题 更多 >