1. ホーム
  2. regex

[解決済み] TCL/EXPECTで$expect_outを使用して変数を割り当てるにはどうすればよいですか?

2022-03-12 04:33:52

質問

をマッチングさせたい場合 DEF_23 を以下の正規表現で使用します。

expect {
    -re "DEF_\[0-9]*"
    set result $expect_out(1,string)
}

なぜ no such element in array ? どのように $expect_out はどのように動作し、どのようにすれば DEF を正規表現で定義し、それを変数 result ?

解決方法は?

あなたが探しているのは expect_out(0,string) -- 配列要素 1,string は、正規表現で括弧をキャプチャしていた場合に入力されます。

マニュアルページを期待する の使用方法を説明します。 期待値 のドキュメントで 期待する コマンドを使用します。

パターン(またはeofやfull_buffer)にマッチすると、マッチした出力とそれ以前にマッチしなかった出力が、変数 expect_out(buffer) . 最大 9 個の正規表現による部分文字列のマッチは,変数 expect_out(1,string) を通して expect_out(9,文字列) . もし -インデックス フラグがパターンの前に使われた場合、開始と終了のインデックス (このフラグに適した形式は レンジ という変数に格納される。 expect_out(X,start) expect_out(X,end) ここでXは数字で、バッファ内の部分文字列の位置に対応する。0はパターン全体にマッチした文字列を指し、正規表現パターンだけでなくグロブパターンに対しても生成されます。

man ページに説明例があります。