2010-01-05 56 views
1

我试图找到一个合适匹配的转义字符的字符串(预计响应,见this question)正则表达式和一个六位数字(与字母数字的第一个字符)。正则表达式查找字符串中的期待缓冲

这里是整个字符串我需要确定:

\r\n\u001b[1;14HX76196 

最后,我需要提取的字符串:

X76196 

这是我已经:

interact { 
     #... 
     #... 
     #this expression does not identify the screen location 
     #I need to find "\r\n\u001b[1;14H" AND "([a-zA-Z0-9]{1})[0-9]{5}$" 
     #This regex was what I was using before. 
     -nobuffer -re {^([a-zA-Z0-9]{1})?[0-9]{5}$} { 
       set number $interact_out(0,string) 
     } 

我需要识别转义字符以验证它是该屏幕区域中的字段。所以我需要一个正则表达式,其中包括第一部分,但反斜杠让我感到困惑...

另外,一旦我在$ number变量中有完整的字符串,如何隔离Tcl中另一个变量的数字?

回答

0

我发现了一些事情,一些更多的挖掘。首先,我没有看到程序的输出,而是看用户的输入。我需要添加“-o”标志来查看程序输出。我也缩短了正则表达式的必要部分。

来自@rikh的正则表达式示例让我看看他或我自己的正则表达式失败的原因,这是由于我没有查看输出而是查看输入。所以,我尝试了全新的正则表达式是没有错,但正在研究的(缺少“O”标志)

下面是完整的回答我的问题的数据。

interact { 
#... 
    -o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} { 
      #get number in place 
      set numraw $interact_out(0,string) 
      #get just number out 
      set num [string range $numraw 6 11] 
      #switch to lowercase 
      set num [string tolower $num] 
      send_user " stored number: $num" 
    } 
} 

我是一个小白与期待和Tcl所以如果这个没有意义,或者如果您有任何更多的分析上市公司互动的标志,请将我直。

1

如果你只是想在最后的数字,那么这应该是足够了...

[0-9]{6} 

用新信息更新

假设\ n是一个换行符,而不是字面上\后跟一个字面n,你可以做到这一点...

\r\n\u001B\[1;14H(X[0-9]{5}) 
+0

这正则表达式是在Expect脚本,搜索在SSH会话的响应。我需要正则表达式匹配整个字符串\ r \ n \ u001b [1; 14HX76196。 “\ r \ n \ u001b [1; 14H”部分将始终相同。 “X76196”部分将始终是不同的编号。 – jjclarkson 2010-01-05 16:20:13

+0

我编辑了我的问题以更好地定义它。这不仅仅是获取号码本身,还有更多。 – jjclarkson 2010-01-05 16:32:00

+0

我已更新我的答案以匹配。方括号可以让你从其余的字符串中得到字符串的Xxxxxx部分。 – 2010-01-05 16:39:23

相关问题