using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var text = "One word, duel. Limes said bye."; var pattern = @"\b(?\p{L}+)(?:\P{L}+(?(\p{L})(?<=\1\P{L}+\1)\p{L}*))+\b"; var result = Regex.Match(text, pattern, RegexOptions.IgnoreCase)?.Groups["w"].Captures .Cast() .Select(x => x.Value); Console.WriteLine(string.Join(", ", result)); } }