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

如何修改正则表达式以匹配汇编代码操作数中的括号?

解决汇编操作数正则匹配括号的问题

首先得说你的原正则([$\(\),#])\w+/g的问题在哪:它只能匹配**[$(),#]这些符号紧跟字母数字下划线**的情况(比如$123、#45),但遇到像(后面跟$(不属于\w范围的字符),或者单独的括号/逗号时,就匹配不到了——这就是LDA行里的括号没被识别的核心原因。

根据汇编常见的寻址模式,我给你两个调整方向,你可以根据实际需求选:

方向1:匹配完整的操作数单元(比如整个($80,X))

如果你想把($80,X)、#$FF、$123,X这类完整的操作数作为单个匹配项,用这个正则:

(#\$?\w+|\$?\w+(?:,\w+)?|\(\$?\w+(?:,\w+)?\)|\(|\)|,)

各部分作用拆解:

  • #\$?\w+:匹配立即数(比如#123、#$FF)
  • \$?\w+(?:,\w+)?:匹配直接寻址或变址寻址(比如$80、123、$80,X)
  • \(\$?\w+(?:,\w+)?\):匹配带/不带变址的间接寻址(比如($80)、($80,X))
  • \(|\)|,:单独匹配括号和逗号(如果需要拆分这些符号的话)

方向2:拆分匹配操作数的每个组成元素(比如(、$80、,、X、))

如果你需要把操作数里的每个元素都单独识别出来(比如括号、十六进制前缀、寄存器、逗号),用这个更简单的正则就够了:

(#|\$|\w+|\(|\)|,)

它会把所有操作数相关元素拆分开匹配,比如对LDA ($80,X),会依次匹配(、$80、,、X、),完全覆盖你需要的括号。

你可以选其中一个测试,应该就能解决括号匹配不到的问题了。

内容的提问来源于stack exchange,提问作者user9351718

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:47:21