using System; using System.Collections.Generic; using System.Text.RegularExpressions; public class Test { public static void Main() { string text = "One word, duel. Limes said bye."; string pattern = @"\b(?\p{L}+)(?:\P{L}+(?(\p{L})(?<=\1\P{L}+\1)\p{L}*))+\b"; Match result = Regex.Match(text, pattern, RegexOptions.IgnoreCase); List output = new List(); if (result.Success) { foreach (Capture c in result.Groups["w"].Captures) output.Add(c.Value); } Console.WriteLine(string.Join(", ", output)); } }