gpt4 book ai didi

regex - 期望正则表达式数字模式

转载 作者:IT王子 更新时间:2023-10-29 00:38:56 25 4
gpt4 key购买 nike

我在 expect 脚本中遇到了这个问题。我想在命令输出为“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"

我有以下回应:

spawn bash
echo 0

number

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

-regexp {^0$} { send_user "\nzero\n" }

如果我把它改成:

-regexp {0} { send_user "\nzero\n" }

有效,但它也捕获“00”“10”“1000”等。

send "echo 100\n"
expect {
-regexp {0} { send_user "\nzero\n" }
-re {\d+} { send_user "\nnumber\n"}
}

结果:

spawn bash
echo 10

zero

我不知道自己做错了什么,也没有从谷歌的帮助中找到任何帮助。我还搜索了此处已解决的类似问题,但我无法在我的代码中解决这些问题。

更新:

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

#!/usr/bin/expect -f
set timeout 3
spawn bash
send "echo 0\n"
expect {
-regexp {\b0\b} { send_user "\nzero\n" }
-re {\d+} { send_user "\nnumber\n"}
}
send "exit\n"

但我仍然有这样的 react :

spawn bash
echo 0

number

更新 2

我也试过这一行:

 -regexp {"^0\n$"} { send_user "\nzero\n" }

但我仍然有相同的结果。

提前致谢

最佳答案

我可以解决这个问题:

#!/usr/bin/expect -f
set timeout 3

spawn bash
send "echo 0\n"
expect -re "(\\d+)" {
set result $expect_out(1,string)
}
if { $result == 0 } {
send_user "\nzero\n";
} else {
send_user "\nnumber\n";
}

send "exit\n"

关于regex - 期望正则表达式数字模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com