import re
def main():
with open('test', 'wb') as f:
f.write(b'\x1e\x2e\x3e\x4e\x5e\x6e')
f.write(b'\x1e\x2e\x3e\x4e\x5e\x6e')
with open('test', 'rb') as f:
s = f.read()
for i in range((len(s)//8)+1):
print(' '.join(['{:02x}'.format(j) for j in s[i*8:(i+1)*8]]))
regex = re.compile(b'\x5e') # weird
for match_obj in regex.finditer(s):
start = match_obj.start()
end = match_obj.end()
print(start, end)
if __name__=='__main__':
main()
在使用模式b'\x5e'执行代码后,我得到
1e 2e 3e 4e 5e 6e 1e 2e
3e 4e 5e 6e
0 0
如果我将模式更改为b'\x4e'并再次运行,我将获得
1e 2e 3e 4e 5e 6e 1e 2e
3e 4e 5e 6e
3 4
9 10
为什么它们以不同的方式工作
我怎么修理它
谢谢
0x5e在ASCII中是“^”,这是一个正则表达式元字符。如果你想在一个模式中使用它,你将需要逃避它
相关问题 更多 >
编程相关推荐