2017-09-12 55 views
0

我在尋找匹配「序列號:」然後將值存儲在變量中。到目前爲止,我有這個,但由於某種原因,它沒有找到它。使用正則表達式查找字符串

set value [regexp -line {^\s*Serial Number: (.*)$} $expect_out(buffer) store] 

這是輸出,我想匹配序列號和值存儲在一個變量:

Contents of Main Board IDPROM 
    Assy, NetNet6300  
    Serial Number:     091245076951  
    BoardRev:      03.00   
    PCB Family Type:    Main Board  
    Options:      0      
+2

冒號結束後,你不會只有一個空格,所以你應該使用'^ \ s +序列號:\ s +(\ d +)' – h2ooooooo

回答

1

你應該做的是:

^\s*Serial Number:[^\d]*(\d+) 

它看起來在你的例子中是這樣的:

set value [regexp -line {^\s*Serial Number:[^\d]*(\d+)} $expect_out(buffer) store] 
  • [^ \ d] *表示非數字(包括不含)的任何量的
  • (\ d +)將匹配也像h20000000的評論不過我更喜歡數字
  • 的任何非零量

我要使用我期望捕獲的負面字符類,要麼會奏效!

+1

這個工程!感謝您的幫助和解釋! – Channing

相關問題