$ expect_out如何在TCL/EXPECT中工作?

8 regex tcl expect

如果我想DEF_23使用以下正则表达式进行匹配:

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

为什么它说数组中没有这样的元素?这个$ expect_out如何运作?如果我想将结果分配为no such element in array,如何使用regexp获取DEF并分配给变量结果?

gle*_*man 13

您正在寻找expect_out(0,string)- 1,string如果您在正则表达式中捕获括号,则会填充数组元素.

预期联机帮助文件使用 expect_out的的文档中预期的命令:

在匹配模式(或eof或full_buffer)时,任何匹配和先前不匹配的输出都保存在变量expect_out(buffer)中.最多9个regexp子串匹配保存在变量expect_out(1,string)expect_out(9,string)中.如果-indices标志图案,所述起始和结束索引(在适合的形式之前使用lrange)的10个字符串存储在变量expect_out(X,启动)expect_out(X,结束),其中X是digit,对应于缓冲区中的子字符串位置.0表示与整个模式匹配的字符串,为glob模式和regexp模式生成.

手册页中有一个说明性示例.