2010-01-05 38 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

相關問題