首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带ExpectJ的正则表达式

带ExpectJ的正则表达式
EN

Unix & Linux用户
提问于 2012-03-30 22:49:23
回答 2查看 1K关注 0票数 2

我已经使用了Linux库来自动化ExpectJ服务器上的一些作业,但是现在我需要自动化一个任务,它为每次执行发送一个不同的文本响应。这是输出:

代码语言:javascript
复制
Last unsuccessful login: Fri Mar 30 15:21:31 CST 2012 
********************************************************************************

********************************************************************************
[YOU HAVE NEW MAIL] 
local-login [/home/user]%

在我的代码中,我有以下内容:

代码语言:javascript
复制
s.expect("Login as:");
s.send("userlogin\n");
s.expect("userlogin@iphost's password:");
s.send("password\n");

我收到了显示的输出,但是我无法发送下一个命令,因为我不知道如何读取最后一个答案,我尝试使用正则表达式,但它不能工作。

EN

回答 2

Unix & Linux用户

发布于 2012-04-01 13:42:23

不需要处理前面的横幅文本。Expect将等待到满足其中一个条件(例如匹配字符串/regexp或超时)。文本之前的缓冲,供以后使用,但不属于匹配的一部分。需要处理的是查找提示符字符串:local-login [/home/user]%。如果您很清楚它可能是什么样子(例如,总是有'“目录”%',那么您可以编写一个正则表达式来匹配它:

代码语言:javascript
复制
.*\[(/[^/]+)+\]%

确保正则表达式中没有换行符/回车,因为输出不会有换行符/回车。

票数 0
EN

Unix & Linux用户

发布于 2013-01-21 10:32:16

我认为您无法在ExpectJ中使用正则表达式进行匹配。看起来就像他们依靠String.indexOf来找到匹配物一样

代码语言:javascript
复制
if (line.toString().trim().toUpperCase().indexOf(pattern.toUpperCase()) != -1)

其中,pattern是要期待的字符串。

因此,尝试匹配一个子字符串,看看它是否工作得更好。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/35412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档