我正在尝试从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/

10-15 02:16