我正在学习 Nand-2-Tetris 课程。我们被要求编写和汇编程序。C 命令的类型是dest=comp;jump
每个部分都是可选的。
我试图编写一个正则表达式以使一切变得更容易 - 我希望能够编译给定行上的表达式,并且仅通过组号,知道我正在使用表达式的哪一部分。例如,对于表达式:I A=M+1;JMP
want to getgroup(1) = A
和。group(2) = M
group(3) = JMP
我的问题是每个部分都是可选的,所以我不知道如何编写这个正则表达式。到目前为止,我想出了:
(A?M?D?)\s=([^;\s]*)\s?(?=;[\s]*([a-zA-Z]{1,4})|$)
这适用于大多数情况,但它不像我预期的那样工作。例如,缺少补偿将不起作用(D;JGT
)。我已经尝试过积极的前瞻,但它没有奏效。