2013-10-30 44 views
1
"LIM-1-2::PROVPEC=NTK552DA,CTYPE=\"LIM C-Band\":OOS-AU,UEQ" 
"2XOSC-1-4::PROVPEC=NTK554BA,CTYPE=\"OSC w/WSC 2 Port SFP 2 Port 10/100 BT\":OOS-AU,UEQ" 
"P155M-1-4-1::PROVPEC=NTK592NP,CTYPE=\"OC-3 0-15dB CWDM 1511 nm\":OOS-AU,UEQ" 

我在一個文件中有這個數據。我需要爲第一臺設備提取-1-2,同樣爲最後一臺設備提取-1-4-1。我將在稍後使用這些數據。我能夠弄清楚如何獲得-1-1,但它不夠多才能獲得-1-1-4。在設計正則表達式時需要幫助

設備也可以有一個subslot.This名單是暫定的。 EQP-shelf-slot-subslot。我需要一些表達式,可以檢查是否存在子隙或不提供我出去形式-shelf槽,子槽或-shelf插槽

+3

不知道我甚至會打擾這裏的正則表達式,只是在第一個'::'分割,然後再在第一個'-'上分割。 –

+1

你可以請你張貼到目前爲止? –

+0

@David Parsson($ commandline =〜/\".*.((+.).* PROVPEC =(。*?),/) –

回答

1

如何:

my ($wanted) = $str =~ /^\w+([^:]+)/; 

,或者,如果報價是部分字符串:

my ($wanted) = $str =~ /^"\w+([^:]+)/; 
+0

'''是我猜的部分文件內容。 – jkshah

+1

看起來,雙引號是OP數據的一部分,所以'/「\ w +([^:] +)/'可能更好匹配 – Kenosis

+0

@Kenosis它不會給我任何輸出 my $ String =」 LIM-1-1 :: PROVPEC = NTK552DA,CTYPE = 「; 我的$的String1 =」 ENT-EQPT :: P155M-1-4-1:P155M1 :: NTK592NP :: IS「; 如果($字符串= /「\ w +([^:] +)/){ print」AID = $ 1 \ n「; } –