Новый вопрос возник в связи с моим более ранним вопросом . У меня есть код, который использует регулярные выражения для поиска адресов электронной почты. Это' отлично работает, за исключением того, что он возвращает повторяющиеся совпадения. Я искал этот сайт и обнаружил вопрос давным-давно, который имел дело с аналогичной проблемой, и ответ имел какое-то отношение к смешению логики регулярных выражений со строкой [] и методом Distinct (). К сожалению, мое понимание массивов все еще ограничено.
Мой код помещает все совпадения регулярных выражений в MatchCollection
. Кроме того, как мне взаимодействовать с этим MatchCollection
, чтобы добавлять только уникальные совпадения в регулярное выражение?
Вы можете сделать это, используя Distinct
в .NET 3.5 или новее. если вы вызываете Cast
в своей коллекции совпадений, чтобы можно было использовать методы расширения LINQ:
MatchCollection matchCollection = Regex.Matches(input, pattern);
List<string> matches = matchCollection
.Cast<Match>()
.Select(m => m.Value)
.Distinct()
.ToList();
Предполагается, что у вас есть следующие варианты использования в верхней части файла:
using System.Linq;
using System.Collections.Generic;