Regex exp与测试字符串不匹配

时间:2018-05-15 17:26:37

标签: regex tcl

我有一个看起来像这样的文件:

    0 1.6e-10 4.47e-10 7.94e-10 0.082080 rad:12 zzz_yy_x2 name/123 A1=0
    0 1.6e-10 0 7.94e-10 0.0 taa:12 yy_x2 name/540

然而,正则表达式似乎与前7列匹配

if {[regexp {\s+?(.*?)\s+?(.*?)\s+?(.*?)\s+?(.*?)\s+?(.*?)\s+?(.*?)\s+?(.*?)} $line -> i s l t a c l n]} {
        echo $i $s $l $t $a $c $l $n
    }

1 个答案:

答案 0 :(得分:1)

这个怎么样?

lassign $line i s l t a c l n

假设你的字符串中没有奇怪的标点符号(花括号等),大多数期望列表参数的TCL函数也会使用以空格分隔的项目的字符串,并将其视为列表。 “lassign”函数接受列表中的每个项目并将其分配给变量。

另外,我不知道你是否打算重用“l”变量。我认为regexp和lassign都会将第三个项目存储在“l”中,并立即用列表中的第七项覆盖它。