using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Linq;
public class Test
{
public static void Main()
{
var text = "there are big widgets in this phrase blue widgets too";
var words = "big blue widgets";
var pattern = $@"(\s*(?<!\w)(?:{string.Join("|", words.Split(' ').Select(Regex.Escape))})(?!\w)\s*)";
string result = string.Concat(Regex.Split(text, pattern, RegexOptions.IgnoreCase).Select((str, index) =>
index % 2 == 0 && !string.IsNullOrWhiteSpace(str) ? $"<b>{str}</b>" : str));
Console.WriteLine(result);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKdXNpbmcgU3lzdGVtLkxpbnE7CnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgdGV4dCA9ICJ0aGVyZSBhcmUgYmlnIHdpZGdldHMgaW4gdGhpcyBwaHJhc2UgYmx1ZSB3aWRnZXRzIHRvbyI7CgkJdmFyIHdvcmRzID0gImJpZyBibHVlIHdpZGdldHMiOwoJCXZhciBwYXR0ZXJuID0gJEAiKFxzKig/PCFcdykoPzp7c3RyaW5nLkpvaW4oInwiLCB3b3Jkcy5TcGxpdCgnICcpLlNlbGVjdChSZWdleC5Fc2NhcGUpKX0pKD8hXHcpXHMqKSI7CgkJc3RyaW5nIHJlc3VsdCA9IHN0cmluZy5Db25jYXQoUmVnZXguU3BsaXQodGV4dCwgcGF0dGVybiwgUmVnZXhPcHRpb25zLklnbm9yZUNhc2UpLlNlbGVjdCgoc3RyLCBpbmRleCkgPT4KICAgICAgICAgICAgICAgIGluZGV4ICUgMiA9PSAwICYmICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHN0cikgPyAkIjxiPntzdHJ9PC9iPiIgOiBzdHIpKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShyZXN1bHQpOwoJfQoJCgkKfQoK