using System;
using System.Text.RegularExpressions;
using System.Linq;
public class Test
{
public static void Main()
{
var str = "Mohamed, Hamada and Mahmoud match, but not hammer";
var letters = "mahd";
var pat = string.Format(@"\b{0}\w+\b", string.Join("", letters.Select(s => string.Format(@"(?=\w*{0})", s))));
var result = Regex.Matches(str, pat, RegexOptions.IgnoreCase)
.Cast<Match>()
.Select(match => match.Value)
.ToList();
Console.WriteLine(String.Join("\n", result));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5MaW5xOwpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIHN0ciAgPSAiTW9oYW1lZCwgSGFtYWRhIGFuZCBNYWhtb3VkIG1hdGNoLCBidXQgbm90IGhhbW1lciI7CgkJdmFyIGxldHRlcnMgPSAibWFoZCI7CgkJdmFyIHBhdCA9IHN0cmluZy5Gb3JtYXQoQCJcYnswfVx3K1xiIiwgc3RyaW5nLkpvaW4oIiIsIGxldHRlcnMuU2VsZWN0KHMgPT4gc3RyaW5nLkZvcm1hdChAIig/PVx3KnswfSkiLCBzKSkpKTsKICAJCXZhciByZXN1bHQgPSBSZWdleC5NYXRjaGVzKHN0ciwgcGF0LCBSZWdleE9wdGlvbnMuSWdub3JlQ2FzZSkKICAJCQkuQ2FzdDxNYXRjaD4oKQogIAkJCS5TZWxlY3QobWF0Y2ggPT4gbWF0Y2guVmFsdWUpCiAgCQkJLlRvTGlzdCgpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKFN0cmluZy5Kb2luKCJcbiIsIHJlc3VsdCkpOwoJfQp9