找到字符串的最后一部分

时间:2014-02-18 22:37:44

标签: c# regex

我真的不擅长使用RegEx,每当我尝试使用它时,它会让我很烦恼。 我有一个字符串:

        "aaa bbb ccc - ddd eee fff - xxx yyy zzz";

我试图得到的是最后一个' - '

之后的子串

如果我使用模式“^。* - (。*)$”,如下所示,它不起作用。

        string pattern = "aaa bbb ccc - ddd eee fff - xxx yyy zzz";
        Match match = Regex.Match(pattern, @"^.* - (.*)$", RegexOptions.IgnoreCase);

什么模式可以匹配.Captures.Count等于1,而match.Captures [0] .Value等于“xxx yyy zzz”?

我必须使用Regex,因为我有一个泛型函数,模式是一个参数。

模式应该是什么?

背景:

我有一个在生产中隐藏的功能,该功能的主要工作是:

        ..............................
        string name = xxx;
        Regex regex = new Regex(pattern);
        Match match = regex.Match(name);
        if (match != null)
        {
           for (int index = match.Captures.Count - 1; index > 0; index--)
              name = name.Remove(match.Captures[index].Index, match.Captures[index].Length);

        }
        xxx = name;
        ...........................

1 个答案:

答案 0 :(得分:9)

正则表达式再一次,对于这类事情来说太过分了。只需使用LastIndexOf

var result = pattern.Substring(pattern.LastIndexOf("-") + 1);

输出:xxx yyy zzz

编辑:

正则表达式版本:(.)(?<=- )([^-])+$。不要在字符串的开头打扰(使用^)..你只关心结束。

不知道为什么你需要这个。我很想看到你的“非简化”版本的功能。