You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C++正则表达式匹配汇编指令及其地址?

提取反汇编文本中的地址与汇编指令

正则表达式构建思路

要匹配机器码部分,你可以用([a-f0-9]{2}\s+)*[a-f0-9]{2}来表示“一系列两位十六进制数”——这个表达式会匹配一个或多个以空格分隔的两位十六进制数,完全对应机器码的格式。

完整正则表达式

最终可使用的正则表达式如下:

^([a-f0-9]{8}):\s+(([a-f0-9]{2}\s+)*[a-f0-9]{2})\s+(.*)$

各分组对应内容:

  • 第1组:8位十六进制地址
  • 第2组:完整的机器码部分
  • 第4组:需要提取的汇编指令

匹配效果验证

用你提供的示例文本测试:

00000000: ae ee move $1, $2
00000004: c1 add $2, $2, $3
00000006: a2 aa e3 addi $1, $2, $4

匹配后可得到:

  • 第一行:地址00000000,指令move $1, $2
  • 第二行:地址00000004,指令add $2, $2, $3
  • 第三行:地址00000006,指令addi $1, $2, $4

简化版正则(仅提取地址与指令)

如果不需要机器码,可简化正则跳过该部分:

^([a-f0-9]{8}):\s+([a-f0-9]{2}\s+)*[a-f0-9]{2}\s+(.*)$

此时第1组对应地址,第3组对应指令。

内容的提问来源于stack exchange,提问作者余政倫

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:55