2013-06-29 64 views
1

我正試圖在下面找到這個非常簡單字符串的正則表達式。如何使用正則表達式獲取字符串的一部分

我不知道該怎麼做。

考慮:

A.B.C.MSI_AlphaName 
C.D.E.MSI_AlphaName_1 
X.Y.Z.MSI_AlphaName_2 
... 
MSI_AlphaName_99 

等。這是什麼正則表達式,因爲我需要提取AlphaName

我曾嘗試:

.+\.MSI_(.+)(?:_\d+)? 

回答

3

我會用這樣的表達:

MSI_([^_]+)(?:_|$) 

捕獲組將第一個下劃線後_一路匹配一切第二下劃線或結束或字符串,以先到者爲準。

+0

我想MSI以及問題中提到的。 – p0lAris

+0

@ flippex17你說過「我需要提取'AlphaName'」。你也需要'MSI'嗎? – dasblinkenlight

+0

哦,我需要MSI作爲限制。但我明白了:[^ _] + MSI _([^ _] +)(?:_ | $) – p0lAris

0

相反的+,你將要匹配[^_](該組中不"_"字符),除非你想在第一之後的所有「_」

所以,你的表情應該是這樣的:

.+\.MSI_([^_]+)(?:_\d+)? 
+0

謝謝。這也解決了它。 – p0lAris

相關問題