Enter的特殊含义:expect -re"按\ [Enter \]继续:"不起作用

时间:2016-11-29 00:35:35

标签: regex tcl expect

我对expect脚本中的正则表达式处理感到有些困惑。我生成的可执行文件将发回几条带有Press [Enter] to continue:等文本的消息。我认为处理应该如下:

spawn /tmp/install.run --prefix /opt --mode text

expect {
    timeout { send_user "\nFailure to initiate license view\n"; exit 1 }
    eof { send_user "\nGeneral error\n"; exit 1 }
    -re "Press \[Enter\] to continue:" { send "\r" }
}

但是,脚本拒绝识别回来的文本。它仅在使用此正则表达式时才有效:"Press .Enter\] to continue:"

期望脚本中的Enter关键字是否有特殊之处?

1 个答案:

答案 0 :(得分:3)

由于您使用了# urls = list of strings containing URLs. with current_app.test_client() as tc: not_found = [u for u in urls if tc.get(u).status_code == 404] 引号而不是include guard括号,因此TCL在字符串到达​​正则表达式引擎之前处理反斜杠,从而生成一个没有反斜杠的字符串。这意味着""被视为字符类{}

为正则表达式使用大括号:

\[Enter\]