2016-07-19 18 views
-1
regsub -all "\\\\033" $cmd "\033" cmd 
[regsub -all "\\\\c" $cmd "" cmd] 
regsub -all "\\\\$i" $cmd [lindex $exp_out $i] cmd 

誰かがこれら3つのステートメントの意味を説明できますか? 3つの異なるステートメントです。regsubの呼び出しを説明してください

+0

[Tcl構文](http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm)および[regsubコマンド](http://www.tcl.tk/)のマニュアルを参照してください。 man/tcl8.5/TclCmd/regsub.htm)。 – pynexj

答えて

1

regsub -all "\\\\033" $cmd "\033" cmd

これはASCII ESC文字で033が続くバックスラッシュのすべてのインスタンスを置き換えます。処理する文字列をcmd変数から読み取り、その変数に書き戻します。

[regsub -all "\\\\c" $cmd "" cmd]

これは、空の文字列(効果的に削除)してcバックスラッシュのすべてのインスタンスを置換します。変数cmdを更新します。これは、実行された置換の数をその呼び出しコンテキストに代入します。

regsub -all "\\\\$i" $cmd [lindex $exp_out $i] cmd

この1つは少し複雑です。 i変数に格納されている特定の数値インデックスの場合、バックスラッシュのすべてのインスタンスの後に、exp_outのリストのi番目の要素(0から数えて)のインデックスが置き換えられます。変数cmdを更新します。

+0

これらの正規表現にはバックスラッシュが4つあります。これは、Tclの場合は1回、REエンジンの場合は1回です。 –

+0

これは、バックスラッシュのすべてのインスタンスに続いて033がASCII ESC文字で置き換えられます。 cmd変数から処理する文字列を読み取り、その変数に書き戻します。あなたはこれを明確にすることはできますか?私のcmdに033がありません – user6569320

+0

expect_out($ j、string)、これについてはっきりしていますか?以前に一致した出力はいくつまで保存されますか? – user6569320

関連する問題