Какой предпочтительный способ фильтрации регулярных выражений для поиска повторяющихся совпадений в C #

Новый вопрос возник в связи с моим более ранним вопросом . У меня есть код, который использует регулярные выражения для поиска адресов электронной почты. Это' отлично работает, за исключением того, что он возвращает повторяющиеся совпадения. Я искал этот сайт и обнаружил вопрос давным-давно, который имел дело с аналогичной проблемой, и ответ имел какое-то отношение к смешению логики регулярных выражений со строкой [] и методом Distinct (). К сожалению, мое понимание массивов все еще ограничено.

Мой код помещает все совпадения регулярных выражений в MatchCollection . Кроме того, как мне взаимодействовать с этим MatchCollection , чтобы добавлять только уникальные совпадения в регулярное выражение?

8
задан Community 23 May 2017 в 12:32
поделиться

1 ответ

Вы можете сделать это, используя 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;
11
ответ дан 5 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: