Tcl 如何使用regexp在while循环中执行lappend

Tcl 如何使用regexp在while循环中执行lappend,tcl,Tcl,当我使用while循环使用regexp匹配变量时,我希望匹配的变量使用lappend形成一个列表。代码是 set file_name [open filename.txt r] set newlist [list] while {[gets $file_name line] >= 0} { regexp {cell \(\"(.*)\"} $line match cell_name if {[info exists cell_name] &

当我使用while循环使用regexp匹配变量时,我希望匹配的变量使用lappend形成一个列表。代码是

set file_name [open filename.txt r]   
set newlist [list]     
while {[gets $file_name line] >= 0} {    
    regexp {cell \(\"(.*)\"} $line match cell_name  
    if {[info exists cell_name] && $cell_name != ""} { 
        puts "$cell_name"   
        lappend $newlist $cell_name   
        unset cell_name    
    }      
}

foreach item $newlist {puts $item}    
close $file_name    

它匹配的文本类似于单元格(“aabbcc”),其中引号内的值正在更改。此代码将捕获这些值,但追加后不会创建列表。我需要所有的值作为一个列表。你能告诉我哪里出了问题吗

A
$
太多了

换线

lappend $newlist $cell_name_matched

否则,您将在
${}
中找到结果

您还应该检查regexp是否找到了以下内容:

if {[regexp {cell \(\"(.*)\"} $line match cell_name_matched]} {
    puts "$cell_name_matched"   
    lappend newlist $cell_name_matched
}

unset可能也会抛出一个错误,让它自己处理并删除它。

A
$
太多了

换线

lappend $newlist $cell_name_matched

否则,您将在
${}
中找到结果

您还应该检查regexp是否找到了以下内容:

if {[regexp {cell \(\"(.*)\"} $line match cell_name_matched]} {
    puts "$cell_name_matched"   
    lappend newlist $cell_name_matched
}

unset可能也会抛出一个错误,请别管它并将其删除。

我收到一个错误,错误是:无法读取“cell\u name\u matched”:没有这样的变量。有关详细信息,请使用error\u info。(CMD-013)@Johnnes KuhnI错过了一行,并对代码进行了一些更改。你现在可以检查一下,告诉我删除$a是否可以@Johannes KuhnI收到一个错误,错误是:无法读取“cell\u name\u matched”:没有这样的变量使用error\u info获取更多信息。(CMD-013)@Johnnes KuhnI错过了一行,并对代码进行了一些更改。你现在可以检查一下,告诉我删除$a是否可以@约翰内斯库恩