【发布时间】:2012-07-05 21:40:49
【问题描述】:
我有以下代码,我试图通过 regexp 函数将单行上的数据匹配到不同的变量中。 regexp 函数中的数据数量(在输入行上)和变量名称可能会有所不同,这就是我使用 $varLine (之前在我的真实代码中处理过)的原因。
set in_stim "13 1 1 0 1 0 0 0 2 03"
set regex {^(\d+)\s([01])\s([01])\s([01])\s([01])\s([01])\s([01])\s([01])\s(\d+)\s(\d+)}
set varLine "sig1 sig2 sig3 sig4 sig5 sig6 sig7 sig8 sig8"
regexp $regex $in_stim whole sig0 $varLine
puts "sig0: $sig0"
puts $sig1
当我执行它时,我得到以下错误($sig0 正确显示):
sig0: 13
can't read "sig1": no such variable
while executing
"puts $sig1"
如果我手动将 $varLine 替换为正则表达式行,错误就会消失:
set in_stim "13 1 1 0 1 0 0 0 2 03"
set regex {^(\d+)\s([01])\s([01])\s([01])\s([01])\s([01])\s([01])\s([01])\s(\d+)\s(\d+)}
regexp $regex $in_stim whole sig0 sig1 sig2 sig3 sig4 sig5 sig6 sig7 sig8 sig8
puts $sig0
puts $sig1
我得到以下正确的输出:
13
1
有没有人看到我的代码中的错误或可以提供帮助? 谢谢!
【问题讨论】:
标签: regex tcl substitution