Я новичок в .NET и не столь велик с RegEx, но с тем, что у меня есть следующие code-Удалить дубликаты Captures из списка
var p = GetAllMatches(lines, @"^\s+?([A-Z]{1,2}[0-9]{2}) : |: ([A-Z]{1,2}[0-9]{2})")
.SelectMany(m => m.Groups[1].Captures.Cast<Capture>().Select(c => c.Value).ToList())
.ToList();
private static List<Match> GetAllMatches(List<string> lines, string pattern, RegexOptions options=RegexOptions.None)
{
return lines
.Select(l => Regex.Match(l, pattern, options))
.Where(m => m.Success)
.ToList();
}
... который, я считаю, захватывает порции строка, начинающаяся с «:», за которой следуют 1 или 2 альфа-символа и 2 цифры или части строки, заканчивающиеся на «:», и им предшествуют 1 или 2 альфа-символа и 2 цифры.
Так, например, он должен захватить "C61, C62, C61" в следующем блоке текст-
blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345
Главная Хранение: C61
C62: 1215
C61: 1785blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345blablablabla12345
До сих пор так хорошо. Мой вопрос таков: как я могу это сделать, чтобы он только фиксировал конкретный матч ОДИН РАЗ? Поэтому в приведенном выше примере мне бы хотелось, чтобы он в конечном счете выплюнул «C61, C62», а не «C61, C62, C61». Возможно ли это с RegEx или я должен манипулировать списком после того, как RegEx будет сделан с его захватом? В любом случае, как бы я подошел к нему?
Заранее благодарим за предоставленную помощь.
Спасибо за ответ. Думаю, это было намного проще, чем я думал изначально. – Brady
проблем нет, им приятно работать:) – Nefariis