在C#中过滤正则表达式搜索重复匹配的首选方法是什么?

Ste*_*ev0 8 c# regex duplicates

关于我早先的一个问题,出现了一个新的问题.我有一些代码使用正则表达式来查找电子邮件地址.它工作得很好,除了它返回重复的匹配.我搜索了这个网站,发现很久以前的一个问题是处理类似的问题,答案与将正则表达式逻辑与字符串[]和Distinct()方法混合有关.不幸的是,我对阵列的理解仍然有限.

我的代码将所有正则表达式匹配放入a MatchCollection.除此之外,我如何与此MatchCollection进行交互以仅为正则表达式添加唯一匹配?

Mar*_*ers 11

您可以通过做Distinct如果你调用.NET中3.5或更新Cast你的比赛集合,这样就可以使用LINQ扩展方法:

MatchCollection matchCollection = Regex.Matches(input, pattern);
List<string> matches = matchCollection
    .Cast<Match>()
    .Select(m => m.Value)
    .Distinct()
    .ToList();
Run Code Online (Sandbox Code Playgroud)

这假设您在文件顶部有以下用法:

using System.Linq;
using System.Collections.Generic;
Run Code Online (Sandbox Code Playgroud)