Im работает в парсе анализаторов mips, используя yacc и lex, и мне нужно распознать регистры в данных инструкциях. Это регистры могут быть:Регуляторы MIPS regex
$t0,$t1,...$t31
$zero
r0,r1,...,r31
R0,R1,...,R31
Я попытался сделать первую часть ($t0,...,$t31
и R0,...$R31
), но это не сработало. Моим регулярным выражением является (\$t|R)([1|2][0-9]|3[0-1]|[0-9])
. Как видно из изображения 1, регулярное выражение соответствует R5
в регистре R56
, и это нежелательно. Как я могу решить эту проблему?
вам нужно слово-граница '\ b': - ** [' (\ $ t | \ bR) ([1 | 2] [0-9] | 3 [0-1] | [0-9]) \ b'] (https://regex101.com/r/rK6bA0/1) ** – rock321987