Я использую следующую строку в Tcl для анализа строки полей через запятую. Некоторые поля могут быть заключены в кавычки, поэтому они могут содержать запятые:
set line {12,"34","56"}
set fresult [regsub -all {(\")([^\"]+)(\",)|([^,\"]+),} $line {{\2\4} } fields]
puts $fields
{12} {34} "56"
(Немного странно, что последнее поле заключено в кавычки вместо фигурных скобок, но здесь проблема не в этом)
Однако, когда в кавычке есть запятая, она не работает:
set line {12,"34","56,78"}
set fresult [regsub -all {(\")([^\"]+)(\",)|([^,\"]+),} $line {{\2\4} } fields]
puts $fields
{12} {34} "{56} 78"
Я бы ожидал:
{12} {34} {56,78}
Что-то не так с моим регулярным выражением или что-то происходит в tcl-ish?