You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expect脚本中匹配[yes/NO]:的正则表达式失效问题排查

expect正则匹配[yes/NO:]失败的原因分析

在使用expect自动处理easyrsa init-pki的交互时,第二个规则失效的问题,根源出在正则表达式的语法错误上:

原规则中的-re {[yes/NO]:},这里的[]是正则表达式的特殊元字符,用来定义「字符集合」——它会被解释为匹配y、e、s、/、N、O中的任意单个字符,再加上冒号。但实际控制台输出的是完整的[yes/NO]:字符串(包含方括号),所以这个正则根本匹配不到目标内容。

修正方案

有两种可行的解决方式:

  1. 转义正则中的方括号:把方括号用反斜杠转义,让正则把它们当作普通字符匹配:
expect {
    -re {Confirm removal:} {send "yes\r" ; exp_continue}
    -re {\[yes/NO]:} {send "yes\r" ; exp_continue}
}
  1. 改用精确字符串匹配:因为这个提示是固定的,不需要正则,直接用字符串匹配更可靠(注意要包含前面的空格):
expect {
    -re {Confirm removal:} {send "yes\r" ; exp_continue}
    "    [yes/NO]: " {send "yes\r" ; exp_continue}
}

内容的提问来源于stack exchange,提问作者stackbiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:52:42