正则表达式除逗号外的所有非空白字符的非空字符序列

时间:2013-07-11 07:33:16

标签: regex tcl

如何使用regexp将行拆分为列表(所有非空白字符的非空白字符序列都用逗号表示)。我试过了:

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

但它不起作用。

所以例如: 对于这样的界限:

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

XY是浮点数

结果应为:

NAME NAME2  X Y X Y X Y X Y

2 个答案:

答案 0 :(得分:1)

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

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

或者,使用来自tcllib

的splitx
package require textutil::split
set l [textutil::split::splitx $line {[,\s]+}]

答案 1 :(得分:1)

如果您想使用regexp-inline,只需使用:

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

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