0

如何使用正则表达式将行拆分到列表(所有非空白字符的非空序列,逗号除外)。我尝试过:

set list_  [regexp -inline -all {\S+\[,]} $line]

但它不起作用。

例如:对于这样的行:

NAME NAME2  X,Y X,Y X,Y X,Y  

X,Y是浮点数

结果应该是:

NAME NAME2  X Y X Y X Y X Y
4

2 回答 2

1

如果你想使用regexpand -inline,你可以简单地使用:

% set list_ [regexp -inline -all -- {[^\s,]+} $line]
NAME NAME2  X Y X Y X Y X Y

[^\s,]+匹配任何非空格字符和非逗号。

于 2013-07-11T10:25:37.230 回答
1

您可以将逗号更改为空格,然后在空格上拆分

set l [split [string map {, " "} $line]]

或者,使用 tcllib 中的 splitx

package require textutil::split
set l [textutil::split::splitx $line {[,\s]+}]
于 2013-07-11T09:37:14.237 回答