2016-10-06 31 views
1

下面是一些輸入需要正則表達式匹配模式「 - 」

36 1 36 0ef6c0 id  N8 Online  FC F-Port 50:05:07:68:01:80:fc:ae 
37 1 37 0ef680 id  N8 Online  FC F-Port 50:05:07:68:01:80:fa:1b 
38 1 38 0ef640 id  N8 Online  FC F-Port 50:05:07:68:01:80:fa:2e 
    39 1 39 0ef600 id  N8 Online  FC F-Port 50:05:07:68:01:80:f9:ca 
86 2 22 0eea40 -- -- Online  VE VE-Port 10:00:00:05:33:ea:da:4d "replsa2v" (downstream) 
87 2 23 0eea00 -- -- Offline  VE Disabled (Persistent) 
88 2 24 0ee9c0 -- -- Offline  VE Disabled (Persistent) 

這個正則表達式第4行相匹配。

(?<index>\d+)\s+(?<slot>\d+)\s+(?<port>\d+)\s+(?<address>\w{6,})\s+\b(id|cu)\b\s+(?<speed>\w\d+)\s+\b(?<state>\w+)\s+(?<protocol>\S+)\s+(?<type>\S+)\s(?<extra>.*) 

這一個比賽的最後3

(?<index>\d+)\s+(?<slot>\d+)\s+(?<port>\d+)\s+(?<address>\w{6,})\s+[-]{2}\s+[-]{2}\s+\b(?<state>\w+)\s+(?<protocol>\S+)\s+(?<type>\S+)\s(?<extra>.*) 

我想匹配所有一個模式。代碼有效,但如果我進行單個匹配,它會更乾淨,速度更快。我可以用一種模式做的最好的做法是匹配前4行輸入的前半部分和最後3行的後半部分 - 基本上是第一個' - '之前和最後一個之後的所有內容。

+0

我不知道有反對的話「幫助」過濾器。 Helop是一個錯字,而不是故意的。 –

+0

編輯過的標題要好得多,儘管它沒有真正解釋你要問什麼。匹配* - *很容易。你希望做的不僅僅是這些,不是嗎? (拼寫錯誤來過濾過濾器經常發生在這裏。)我將刪除評論,因爲它不再需要。 :-) –

回答

0

這個工作對我來說:

(?<index>\d+)\s+ 
(?<slot>\d+)\s+ 
(?<port>\d+)\s+ 
(?<address>\w{6,})\s+ 
(id|cu|-{2})\s+ 
(?<speed>\w\d+|-{2})\s+ 
\b(?<state>\w+)\s+ 
(?<protocol>\S+)\s+ 
(?<type>\S+)\s 
(?<extra>.*) 
+0

謝謝。看着你的我看到我的錯誤是在模式中離開\ b \ b標籤。 –