我使用以下正则表达式模式在二进制文件中搜索0xDEAD4FAD:
my_pattern = re.compile(b"\xDE\xAD\x4F\xAD")
但是如何概括搜索0xDEAD4xxx的搜索模式?似乎无法切入半个字节
答案 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。