我的代码:
f = open("file.bin", 'rb')
s = f.read()
str1 = ''.join(re.findall( b'\x00\x00\x00\x12\x00\x00\x00(.*?)\x00\x01\x00\x00', s )[0])
我有一些二进制文件,我想从中提取信息(字符串)。此文件中的信息/字符串看起来像" [DELIMITER] String1 [DELIMITER] STRING2" ...这些文件中使用的分隔符总是不同的但是00总是相同的,所以一个好的解决方法是告诉正则表达式\x12
和\x01
可以是任何东西。
所以我需要的是
str1 = ''.join(re.findall( b'\x00\x00\x00\x[ANYTHING]\x00\x00\x00(.*?)\x00\x[ANYTHING]\x00\x00', s )[0])
如何在正则表达式中执行此操作?
答案 0 :(得分:1)
你可以尝试
str1 = ''.join(re.findall(b'\x00\x00\x00.\x00\x00\x00(.*?)\x00.\x00\x00', s)[0], re.S)
re.S
需要.
才能匹配任何字符(在这种情况下为字节),包括\n
(又名\x0a
)。
(请注意,对于正则表达式引擎,每个\xnn
只有1个字符,因此您无法在此类转义中使用任何运算符。