Вам повезло, потому что на самом деле .NET regex делает это (что я считаю довольно уникальным). По сути, в каждом Match
каждый Group
хранит каждое Captures
, которое было сделано.
Таким образом, вы можете посчитать, сколько раз повторяемый шаблон совпал с входом:
- Создание группы захвата
- Подсчет количества снимков, сделанных этой группой в каждом матче
- Вы также можете перебирать отдельные записи, если хотите!
Вот пример:
Regex r = new Regex(@"\b(hu?a)+\b");
var text = "hahahaha that's funny but not huahuahua more like huahahahuaha";
foreach (Match m in r.Matches(text)) {
Console.WriteLine(m + " " + m.Groups[1].Captures.Count);
}
Это печатает ( как видно на ideone.com ):
hahahaha 4
huahuahua 3
huahahahuaha 5
API ссылки