我正在尝试从Visual Studio中通过/ Fa标志生成的列表文件中提取二进制操作码。格式如下:
00040 8b 45 bc mov eax, DWORD PTR _i$2535[ebp]
00043 3b 45 c8 cmp eax, DWORD PTR _code_section_size$[ebp]
00046 73 19 jae SHORT $LN1@unpacker_m
当第一个数字是地址时,那么我们有操作码,然后有指令助记符,在这种情况下,我想获取一个数组:
8b 45 bc 3b 45 c8 73 19
首先,我分割线,然后运行以下正则表达式以获取字节:
HEX_BYTE = re.compile("\s*[\da-fA-F]{2}\s*", re.IGNORECASE)
但是这个正则表达式可以匹配所有内容,有人知道如何以一种简单的方式做到这一点?
谢谢
大卫
最佳答案
忘记正则表达式,它过于复杂,无法从固定字段中提取数据。陈述
line = ' 00043 3b 45 c8 cmp eax,'
print(line[7:19].split())
让
['3b', '45', 'c8']
您可能需要
line = line.expandtabs()
首先,如果输入字符串中包含Tab字符。
关于python - python正则表达式,从列表输出中提取字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35149262/