小编Ded*_*alo的帖子

期待正则表达式数字模式

我有一个带有期望脚本的问题.我希望在命令输出为"0"时捕获并区别于其他数字或链,如"000"或"100"

我的代码是:

#!/usr/bin/expect -f
set timeout 3
spawn bash send "echo 0\n" 
expect {
-regexp {^0$} { send_user "\nzero\n" }  
-re {\d+} { send_user "\number\n"}
}
send "exit\n"
Run Code Online (Sandbox Code Playgroud)

我有以下回应:

spawn bash
echo 0

number
Run Code Online (Sandbox Code Playgroud)

但是以下正则表达式不起作用:

-regexp {^0$} { send_user "\nzero\n" }
Run Code Online (Sandbox Code Playgroud)

如果我改为:

-regexp {0} { send_user "\nzero\n" }
Run Code Online (Sandbox Code Playgroud)

工作,但它也捕获"00""10""1000"等.

send "echo 100\n"
expect {
    -regexp {0} { send_user "\nzero\n" }
    -re {\d+} { send_user "\nnumber\n"}
}
Run Code Online (Sandbox Code Playgroud)

结果:

spawn bash
echo 10

zero
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么,我没有在谷歌上找到任何帮助.我也搜索了在这里解决的类似问题,我无法对我的代码进行任何操作.

更新:

我尝试了建议的修复代码:

#!/usr/bin/expect -f
set timeout …
Run Code Online (Sandbox Code Playgroud)

regex unix linux expect

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

expect ×1

linux ×1

regex ×1

unix ×1