2015-01-20 116 views
-2

好吧,我已經閱讀了幾個小時,無法讓我的正則表達式工作。 我無法使用組或處理返回的文本,所以它必須在第一次拉正確的東西。字符串和換行符之間的字符串的正則表達式

我需要從這段文字拉編號:

Hardware Version     : 0600 
Serial Number      : FOC145183BA 
Product ID       : CTS-CODEC-PRI-G2 

我曾嘗試:(Serial Number.*[:])(.*) 但是這給了我「序列號」到文本的末尾。我試過了?的東西,但它只是錯誤。我通過telnet使用這個思科編解碼器,它沒有給我任何靈活性。

+0

感謝您的編輯。起初我並沒有意識到它是如何切斷它的。 – schumacherj 2015-01-20 21:58:33

+0

什麼正則表達式版本?非常不同的'sed'和'Perl' – dawg 2015-01-20 22:06:12

+0

不確定,我正在使用Pexpect,一個Python模塊。我查看了文檔,它只提到它接受正則表達式,但不是它如何編譯它。 – schumacherj 2015-01-20 22:09:18

回答

1

沒有組這可能是不可能的,但如果允許替換,那麼您可以嘗試索姆ething怪異像

s/^Serial Number\s*:\s*$|^[^S].*$//g 

刪除線的起點,而不是開始S.不驚人的優雅的任何其他線路,但可能完成這項工作

+0

這樣做,但你是對的,乍看起來很混亂。 – schumacherj 2015-01-20 22:35:07

0

您錯過了試圖使用「0或更多」的特殊字符,即*或「一個或多個」,即+。嘗試Serial Number.*: (.+)$

0

結果是第一組中的捕獲(\ 1)

Serial Number\s*:\s*(.*) 
+0

我無法使用羣組。 – schumacherj 2015-01-20 21:59:48

0

取決於正則表達式引擎和

(Serial Number.*[:])(.*)$ 

元是否貪婪等應匹配線的端部,但在一些發動機可能匹配模式空間的末尾,如果它處於某種多線處理模式下