我正在尝试编写一个正则表达式,它将获取最后一个':'及其后的所有内容。这是我在C#中的正则表达式:
Regex rx5 = new Regex(@"[A-Za-z.][^\s][^:]{1,}$",RegexOptions.Singleline);
它有效,除了它包含':'。如何在':'之后获取所有内容,而不包括':'?
答案 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);