Я не уверен, что вы имеете в виду под строкой, заканчивающейся запятой.Насколько я могу судить, вы можете просто написать @"\$t[0-9],"
.
Ваше регулярное выражение памяти не соответствует, потому что у вас есть [s-t]\b[0-9]
.Поскольку s и t, а также от 0 до 9 - все символы слова, между ними не может быть границы слова.Также у вас есть неэкранированная закрывающая скобка.Это @"\d+\(\$[st][0-9]\)"
будет работать.
Если ваш список операндов просто разделен запятыми, то разбейте строку на запятые и проверьте каждую
string command = "$t7,248($t2)";
string [] operands = command.Split(new Char [] {','});
, и ваши регулярные выражения должны быть привязаны вначало и конец, вот так
if (Regex.IsMatch(source, @"^\$t[0-9]$"))
return OperandType.Temporary;
if (Regex.IsMatch(source, @"^\$s[0-9]$"))
return OperandType.Store;
и т. д.