使用b'\x5e'搜索时出现奇怪的行为,但使用b'\x4e'搜索时出现奇怪的行为

2024-09-28 01:31:57 发布

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

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

为什么它们以不同的方式工作

我怎么修理它

谢谢


Tags: intestreobjformainasmatch

热门问题