// http://stackoverflow.com/q/33181434/5290909
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string input = "abcdbcdcdd";
// Loop all patterns
for (int N = 2; N <= 5; N++)
{
string pattern = @"(.)(?<=(?=(?>.*?\1){" + N + @"})\A.*)";
Console.WriteLine("N = {0}\tPattern: {1}", N, pattern);
Console.WriteLine("\tINPUT '{0}'", input);
MatchCollection matches = Regex.Matches(input, pattern);
// Loop all matches
if (matches.Count > 0)
{
foreach (Match match in matches)
{
Console.WriteLine( "\tChar: '{0}' (pos: {1})", match.Value, match.Index );
}
}
else
{
Console.WriteLine( "\tNo Matches!");
}
}
}
}
Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMzMxODE0MzQvNTI5MDkwOQp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgICAgICBzdHJpbmcgaW5wdXQgPSAiYWJjZGJjZGNkZCI7CiAgICAgICAgCiAgICAgICAgLy8gTG9vcCBhbGwgcGF0dGVybnMKICAgICAgICBmb3IgKGludCBOID0gMjsgTiA8PSA1OyBOKyspCiAgICAgICAgewogICAgICAgIAlzdHJpbmcgcGF0dGVybiA9IEAiKC4pKD88PSg/PSg/Pi4qP1wxKXsiICsgTiArIEAifSlcQS4qKSI7CiAgICAgICAgCQogICAgICAgIAlDb25zb2xlLldyaXRlTGluZSgiTiA9IHswfVx0UGF0dGVybjogezF9IiwgTiwgcGF0dGVybik7CiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKCJcdElOUFVUICd7MH0nIiwgaW5wdXQpOwogICAgICAgIAkKCSAgICAgICAgTWF0Y2hDb2xsZWN0aW9uIG1hdGNoZXMgPSBSZWdleC5NYXRjaGVzKGlucHV0LCBwYXR0ZXJuKTsKCSAgICAgICAgCgkgICAgICAgIC8vIExvb3AgYWxsIG1hdGNoZXMKCSAgICAgICAgaWYgKG1hdGNoZXMuQ291bnQgPiAwKQoJICAgICAgICB7CgkJICAgICAgICBmb3JlYWNoIChNYXRjaCBtYXRjaCBpbiBtYXRjaGVzKQoJCSAgICAgICAgewoJCSAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSggIlx0Q2hhcjogJ3swfScgKHBvczogezF9KSIsIG1hdGNoLlZhbHVlLCBtYXRjaC5JbmRleCApOwoJCSAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UKCSAgICAgICAgewoJICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoICJcdE5vIE1hdGNoZXMhIik7CgkgICAgICAgIH0KICAgICAgICB9Cgl9Cn0=