首页 > 解决方案 > tcl 期望正则表达式不起作用?

问题描述

我试图期待不同类型的网络设备,但我无法制作更复杂的正则表达式。

对于 Cisco 设备,我有:

expect {"*>"}

* 工作正常

但对于 Fortinet 设备,我想这样做

expect {"^[a-zA-Z0-9_.-\s]+[#]"}

它不起作用。我检查了一个正则表达式“检查器”以确保表达式是正确的并且它似乎有效。所以基本上,我想过滤以“NAME_OF_DEVICE #”开头的行,因为这是你第一次连接到 Fortinet shell 时的样子

知道为什么它不起作用吗?

标签: tclexpect

解决方案


来自手册:“正则表达式样式遵循 Tcl 的正则表达式(“正则表达式”的缩写)命令定义的语法。正则表达式模式是通过标志 -re 引入的。”

你的例子:

expect -re {^[a-zA-Z0-9_.-\s]+#} ...


推荐阅读