а если там вместо посимвольного просмотра использовать что-то типа slit(string, string)? тогда по количеству найденных групп найдем сколько было символов,
или при помощи replace(string, string, string) заменяем символы на пустой символ, тогда по разнице длин строк можно определить количество найденных символов,
c# у меня нет, сам проверить не могу