正则表达式以获取字符串中的最后一个冒号以及其后的所

时间:2009-05-26 21:19:09

标签: c# regex

我正在尝试编写一个正则表达式,它将获取最后一个':'及其后的所有内容。这是我在C#中的正则表达式:

Regex rx5 = new Regex(@"[A-Za-z.][^\s][^:]{1,}$",RegexOptions.Singleline); 

它有效,除了它包含':'。如何在':'之后获取所有内容,而不包括':'?

6 个答案:

答案 0 :(得分:11)

不使用正则表达式,而是使用String.LastIndexOf和Substring()

答案 1 :(得分:2)

我会使用这个正则表达式:

^(?:[^:]*:)+([^:]*)$

第一个匹配组将在最后一个:之后包含其余部分。

答案 2 :(得分:2)

你最好做str.Substring(str.LastIndexOf(':')+ 1)。

正则表达式功能强大,但在有更简单的方法时不要尝试使用它们。

答案 3 :(得分:1)

使用一个组,你也可以将正则表达式重写为更简单的东西:

Regex rx5 = new Regex(":([^:]*)$",RegexOptions.Singleline);

然后你有:

Match ma = rx5.Match("test:1:2:3");
if (ma.Success)
{
    // your content is in ma.Groups[1].Value
}

答案 4 :(得分:1)

或者您可以使用以下模式:

Regex rx5 = new Regex("[^:]+)$",RegexOptions.Singleline);

答案 5 :(得分:1)

使用lookbehind不包括最后一个“:”

 Regex rx5 = new Regex("(?<=:)([^:]*)$",RegexOptions.Singleline);