Механизм regex Tcl не поддерживает lookbehinds (которые ужасно дороги), поэтому он не может разобрать выражение.
Если вы знаете, что есть запятая, вы можете сделать то же самое проще by
string range $line [string last , $line]+1 end
или
regexp {[^,]+$} $line var
или
regexp {\w+=\w+$} $line var
Если может не быть запятой, и вы хотите получить строку, только если является запятой, используйте
if {[set idx [string last , $line]] >= 0} {
set var [string range $line $idx+1 end]
}
или
regexp {,([^,]+)$} $line -> var
Здесь вы получаете два результата: полное совпадение переходит в переменную ->
, и захваченный текст переходит в переменная var
. Ни одно из них не изменится, если нет совпадения.