2013-06-29 32 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

相关问题