using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
public class Test
{
public static void Main()
{
var phrases = new List<string> { @"(one)", @".two.", "[three]" };
phrases = phrases.OrderByDescending(x => x.Length).ToList();
var pattern = $@"(?!\B\w)(?:{string.Join("|", phrases.Select(z => Regex.Escape(z)))})(?<!\w\B)";
var text = "[three] (one) .two. One[three]more time(one)here we.two.have a text";
var matches = Regex.Matches(text, pattern).Cast<Match>().Select(x => x.Value).ToList();
Console.WriteLine(string.Join(", ", matches));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5MaW5xOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBwaHJhc2VzID0gbmV3IExpc3Q8c3RyaW5nPiB7IEAiKG9uZSkiLCBAIi50d28uIiwgIlt0aHJlZV0iIH07CgkJcGhyYXNlcyA9IHBocmFzZXMuT3JkZXJCeURlc2NlbmRpbmcoeCA9PiB4Lkxlbmd0aCkuVG9MaXN0KCk7CgkJdmFyIHBhdHRlcm4gPSAkQCIoPyFcQlx3KSg/OntzdHJpbmcuSm9pbigifCIsIHBocmFzZXMuU2VsZWN0KHogPT4gUmVnZXguRXNjYXBlKHopKSl9KSg/PCFcd1xCKSI7CgkJdmFyIHRleHQgPSAiW3RocmVlXSAob25lKSAudHdvLiBPbmVbdGhyZWVdbW9yZSB0aW1lKG9uZSloZXJlIHdlLnR3by5oYXZlIGEgdGV4dCI7CgkJdmFyIG1hdGNoZXMgPSBSZWdleC5NYXRjaGVzKHRleHQsIHBhdHRlcm4pLkNhc3Q8TWF0Y2g+KCkuU2VsZWN0KHggPT4geC5WYWx1ZSkuVG9MaXN0KCk7CgkJQ29uc29sZS5Xcml0ZUxpbmUoc3RyaW5nLkpvaW4oIiwgIiwgbWF0Y2hlcykpOwoJfQp9