繁体   English   中英

在特定模式匹配中使用正则表达式通配符

[英]using a regex wildcard within a specific pattern match

我的代码:

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始终相同,因此一个好的解决方法是告诉regex \\x12\\x01可以是任何值。

所以我需要的是

str1 = ''.join(re.findall( b'\x00\x00\x00\x[ANYTHING]\x00\x00\x00(.*?)\x00\x[ANYTHING]\x00\x00', s )[0])

我该如何在正则表达式中执行此操作?

可以试试

str1 = ''.join(re.findall(b'\x00\x00\x00.\x00\x00\x00(.*?)\x00.\x00\x00', s)[0], re.S)

re.S是需要. 绝对匹配任何字符(在这种情况下为字节),包括\\n (aka \\x0a )。

(请注意,对于正则表达式引擎,每个\\xnn都是1个字符,因此您不能在此类转义符内使用任何运算符)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM