如何使用RegEx获取字符串的一部分

时间:2013-06-29 00:53:26

标签: c# regex

我试图在下面找到这个非常简单的字符串的正则表达式。

我不知道该怎么做。

考虑:

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

等等。鉴于我需要提取AlphaName,这将是什么样的正则表达式?

我试过了:

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

2 个答案:

答案 0 :(得分:3)

我会用这个表达式:

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

捕获组将匹配第一个下划线_之后的所有内容,一直到第二个下划线或结尾或字符串,以先到者为准。

答案 1 :(得分:0)

而不是。+,你需要匹配[^_](不是"_"的字符集),除非你想要在第一个“_”之后的所有内容

所以你的表达式如下:

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