Regex 正则表达式正则表达式帮助;忽略随机数据块

Regex 正则表达式正则表达式帮助;忽略随机数据块,regex,Regex,我正在对二进制文件进行正则表达式搜索,我刚刚发现了一个问题,经常会使用64字节的校验和,这会使我的搜索失败。我想知道的是;有没有办法忽略这些64字节,不管它们在我的数据中出现在哪里 我的正则表达式是\x18\xC0\x40[\x42\x43][\x00\x01]\x00\x00\x00 我的问题如下所示 0230000000FF45198085B918C0404301 FFFFFFFFFFFF C03CCFFFFFFFFFFFFFFF FFFFFFFFFFFF 3C0CFFFFFFFFFFFFF

我正在对二进制文件进行正则表达式搜索,我刚刚发现了一个问题,经常会使用64字节的校验和,这会使我的搜索失败。我想知道的是;有没有办法忽略这些64字节,不管它们在我的数据中出现在哪里

我的正则表达式是
\x18\xC0\x40[\x42\x43][\x00\x01]\x00\x00\x00

我的问题如下所示

0230000000FF45198085B918C0404301

FFFFFFFFFFFF C03CCFFFFFFFFFFFFFFF

FFFFFFFFFFFF 3C0CFFFFFFFFFFFFFFF

FFFFFFFFFFFF 0300F0FFFFFFFFFFFF

FFFFFFFFFFFF 030F0FFFFFFFFF4700

000000b900000003c8085b9eddf0000

在我的示例中,我的正则表达式(需要粗体显示的值)显然无法识别模式匹配。这也可能发生在所需数据的任何点上

校验和数据的一个观察结果是它总是以4700结尾,并且它总是8字节的FF,后面是3-4字节的值,然后是4-5字节的FF

任何帮助都将不胜感激,谢谢
詹姆斯

你可能应该使用两个通行证进行搜索。在第一个过程中删除所有这些校验和块,这应该很容易识别,在第二个过程中进行实际搜索

否则,您必须在表达式的每个字母后面都有一个校验和块,这将导致一个非常长且难以读取的校验和块。

尝试以下方法:

\x18\xC0\x40[\x42\x43][\x00\x01](?:\x00{8}[\x00-\xFF]*?\x47\x00)\x00{3}
更新后,如果校验和无处不在,这将起作用。为了便于阅读,我插入了换行符

\x18(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\xC0(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x40(?:\x00{8}[\x00-\xFF]*?\x47\x00)
[\x42\x43](?:\x00{8}[\x00-\xFF]*?\x47\x00)
[\x00\x01](?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00

不匹配事物通常很难与regexp匹配;在使用regexp的上下文中进行否定可能会容易得多。你是怎么用的?从一个程序?用哪种语言编写?从delphi 7,加载到文件中并在其中搜索。我正在使用DIregex组件。您使用的是哪种语言/RegExpParser?
[^\x00\x00\x00]*
-您希望它做什么?[]-组标记/[^]匹配除以下序列之外的任何内容/[]*从不匹配或一次匹配=>因此:[^\x00\x00\x00]*应该匹配除“\x00\x00\x00”之外的任何内容。[]是字符类吗[^\x00\x00\x00]相当于[^\x00]@Erik-你需要一个消极的前瞻:
(?:(?!\x00\x00\x00)。*)*
(我想)这是有效的,谢谢。问题是,只有当校验和落在数据中的某一点时,它才会起作用。我需要考虑数据中任何一点发生的校验和。我想我要么会有一个非常大的正则表达式,要么像Jens说的那样在第一次通过时记住校验和。嗯,这不能起作用。我会继续调整它。用你的例子,我t需要很长时间才能运行,所以我认为它不可用。我尝试了如下改进校验和搜索部分(注意,第一部分是8ff而不是800)(?:\xFF{8}[\x00-\xFF]{54}\x47\x00)这在power grep中独立工作,并找到所有校验和,但当我完成搜索时,我没有得到任何结果。
\x18(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\xC0(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x40(?:\x00{8}[\x00-\xFF]*?\x47\x00)
[\x42\x43](?:\x00{8}[\x00-\xFF]*?\x47\x00)
[\x00\x01](?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00(?:\x00{8}[\x00-\xFF]*?\x47\x00)
\x00