拆分为多个空格和列表

Split with multiple spaces and lists

我有这样的台词:

AA      BB  CC dd {ee ff} gg

我想拆分这一行,但要保持列表如下:

AA BB CC dd {ee ff} gg

所以我尝试了 split 但我得到了多个 {} 因为 AABB

之间有多个 space

我也试过

set splitted_line [regexp -all -inline {\S+} $list]

但是此命令将列表拆分为 {eeff}

我应该怎么做才能正确分割我的线?

如果你的行中确实有 {brace-quoted} 单词,你可能可以直接将它作为 Tcl 列表来处理。在这种情况下,“清理它”的第一个停靠点是使用 lrange:

set splitted_line [lrange $list 0 end]

这也会转换一些其他的东西,比如"双引号"字;不知道是不是你想要的
示例会话:

% set example {A   BB  CCC  {dd    ee} "ff $gg"    }
A   BB  CCC  {dd    ee} "ff $gg"    
% lrange $example 0 end
A BB CCC {dd    ee} {ff $gg}