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

时间:2013-12-03 06:52:13

标签: python regex binaryfiles

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

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

但是如何概括搜索0xDEAD4xxx的搜索模式?似乎无法切入半个字节

3 个答案:

答案 0 :(得分:8)

正则表达式允许搜索范围。因此,要找到第一个半字节为“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].")

答案 1 :(得分:0)

我怀疑通过将二进制字符串转换为ASCII十六进制字符串并将正则表达式应用于此字符串,您将获得最佳服务。我不相信正则表达式打算用于二进制数据;你或许可以让它发挥作用,但如果一路上有惊喜,不要惊讶。

答案 2 :(得分:-2)

如果我在你的情况下,我会用grep尝试hexdump。