根据python,Regex不匹配

2024-09-27 23:00:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个程序,需要匹配一些字节到正则表达式。 因为我使用的是字节,所以regex和data都是python类型bytes。 我不确定下一部分是否相关,因此您可以跳到最后3行,帮助我找出正则表达式与16字节不匹配的原因。谢谢你

我的正则表达式是:

regex = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.{16}\x17\x00\x00\x00\x1f\x00\x00\x00WalkDown'

我知道它可以短一些,以实现相同的结果,但这个正则表达式是自动生成的程序本身,所以我不能改变它

我正在尝试将此正则表达式与以下数据匹配:

data = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`,z\x11#\x00\x00\x00k\x004\x00\r\x00\n\x00\x17\x00\x00\x00\x1f\x00\x00\x00WalkDown'

这是我用来匹配它们的python代码:

import re
print(re.match(regex, data))

这会打印出None,因此我认为正则表达式与数据不匹配

因为我不是测试字符串而是测试字节,所以我不能使用任何在线regex调试器,因为它们只支持字符串regex

我试图用“1”替换数据中的16个未知字节,如下所示,它与regex匹配:

data = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001111111111111111\x17\x00\x00\x00\x1f\x00\x00\x00WalkDown'

我认为这表明错误在{16}部分。所以我用python检查了相应部分的长度:

len(b'`,z\x11#\x00\x00\x00k\x004\x00\r\x00\n\x00')

返回16。应该是16岁

那么为什么这16个字节与regex b'.{16}'不匹配呢

谢谢你


Tags: 数据字符串程序redata字节regexx17

热门问题