1

while ループを使用して正規表現を使用して変数を照合する場合、一致した変数が 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」) のようなものです。値はこのコードによってキャプチャされていますが、追加後にリストを作成していません。すべての値がリストとして必要です。どこが間違っているのか教えてください。

4

1 に答える 1

1

$すぎる。

行を変更する

lappend $newlist $cell_name_matched

lappend newlist $cell_name_matched

それ以外の場合は、結果が にあり${}ます。

正規表現が何かを見つけたかどうかも確認する必要があります。

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

unset もおそらくエラーをスローし、そのままにして削除します。

于 2013-07-09T22:49:32.690 に答える