C# 查找字符串的最后一部分

C# 查找字符串的最后一部分,c#,regex,C#,Regex,我真的不擅长使用正则表达式,每次我尝试使用它时,它都会让我感到非常困难。 我有一个字符串: "aaa bbb ccc - ddd eee fff - xxx yyy zzz"; 我试图得到的是最后一个'-'后面的子字符串 如果我像下面这样使用模式“^.*-(.*)$”,它将不起作用 string pattern = "aaa bbb ccc - ddd eee fff - xxx yyy zzz"; Match match = Regex.Mat

我真的不擅长使用正则表达式,每次我尝试使用它时,它都会让我感到非常困难。 我有一个字符串:

        "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);
什么模式可以使match.Captures.Count等于1,而match.Captures[0]。值等于“xxx yyy zzz”

我必须使用正则表达式,因为我有一个泛型函数,而模式是一个参数

模式应该是什么

背景:

我在生产中一直在开发一个功能,该功能的主要工作是:

        ..............................
        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;
        ...........................

对于这类事情来说,正则表达式又一次是矫枉过正。只需使用
LastIndexOf

var result = pattern.Substring(pattern.LastIndexOf("-") + 1);
输出:
xxx yyy zzz

编辑:


正则表达式版本:
()(?对不起,我忘了提到我必须使用正则表达式,因为我有一个通用函数,模式是一个参数。正则表达式,你变成什么了?对字符串提取来说太强大了,对HTML解析来说太弱了…为什么你必须使用正则表达式?你正在使用的正则表达式仍然在寻找破折号..这做同样的事情..只是没有正则表达式Function正在使用regex,为了方便起见,我只是简化了问题。我仍然怀疑您是否需要regex。但是我已经更新了我的答案以提供一种工作模式。为什么它不起作用?
匹配。组[1]
似乎是您想要的。根据您的regex,您想要的是组[1]。您希望组[0]是什么应该返回吗?你是说,我想要一个不使用任何组就返回我想要的正则表达式吗?为什么?…这是什么意思?这是一个真正的问题还是一个玩笑?投票时不清楚你在问什么我只是问模式应该是什么,我不明白为什么这个问题不清楚。