我真的不擅长使用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;
...........................
答案 0 :(得分:9)
正则表达式再一次,对于这类事情来说太过分了。只需使用LastIndexOf
:
var result = pattern.Substring(pattern.LastIndexOf("-") + 1);
输出:xxx yyy zzz
编辑:
正则表达式版本:(.)(?<=- )([^-])+$
。不要在字符串的开头打扰(使用^
)..你只关心结束。
不知道为什么你需要这个。我很想看到你的“非简化”版本的功能。