using System;
using System.Collections .Generic ;
using System.Linq ;
using System.Text .RegularExpressions ;
using System.IO ;
public class Test
{
public static void Main( )
{
var s = "Since there is limited overhead space on the plane, I assure you, there will be no fee for checking the bags, I can go ahead and fill out all the checked baggage forms for you." ;
var lst = new List< string> ( ) { "no fee, I fill out the forms" , "some other" } ;
var pattern = string.Format ( @"(?s)\b (?:{0})\b " ,
string.Join ( "|" ,
lst.Select ( x =>
"(" + string.Join ( @")\b (.*?)\b (" ,
Regex.Split ( x, @"\W+" ) .Where ( t => ! string.IsNullOrWhiteSpace ( t) )
) + ")"
)
)
) ;
//Console.WriteLine(pattern);
int cnt = 0 ;
var res = Regex.Replace ( s, pattern,
g => string.Join ( "" , g.Groups .Cast < Group> ( ) .Skip ( 1 )
.Where ( f => ! string.IsNullOrEmpty ( f.Value ) )
.SelectMany ( ( b, i) => i % 2 == 0 ?
"<b>" + b.Value + "</b>" : b.Value ) ) ) ;
Console.WriteLine ( res) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKdXNpbmcgU3lzdGVtLklPOwpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIHMgPSAiU2luY2UgdGhlcmUgaXMgbGltaXRlZCBvdmVyaGVhZCBzcGFjZSBvbiB0aGUgcGxhbmUsIEkgYXNzdXJlIHlvdSwgdGhlcmUgd2lsbCBiZSBubyBmZWUgZm9yIGNoZWNraW5nIHRoZSBiYWdzLCBJIGNhbiBnbyBhaGVhZCBhbmQgZmlsbCBvdXQgYWxsIHRoZSBjaGVja2VkIGJhZ2dhZ2UgZm9ybXMgZm9yIHlvdS4iOwoJCXZhciBsc3QgPSBuZXcgTGlzdDxzdHJpbmc+KCkgeyJubyBmZWUsIEkgZmlsbCBvdXQgdGhlIGZvcm1zIiwic29tZSBvdGhlciJ9OwoJCXZhciBwYXR0ZXJuID0gc3RyaW5nLkZvcm1hdChAIig/cylcYig/OnswfSlcYiIsIAoJCQlzdHJpbmcuSm9pbigifCIsIAoJCQkJbHN0LlNlbGVjdCh4ID0+IAoJCQkJCSIoIiArIHN0cmluZy5Kb2luKEAiKVxiKC4qPylcYigiLAoJCQkJCQlSZWdleC5TcGxpdCh4LCBAIlxXKyIpLldoZXJlKHQgPT4gIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodCkpCgkJCQkJKSArICIpIgoJCQkJKQoJCQkpCgkJKTsKCQkvL0NvbnNvbGUuV3JpdGVMaW5lKHBhdHRlcm4pOwoJCWludCBjbnQgPSAwOwoJCXZhciByZXMgPSBSZWdleC5SZXBsYWNlKHMsIHBhdHRlcm4sCgkJCWcgPT4gc3RyaW5nLkpvaW4oIiIsIGcuR3JvdXBzLkNhc3Q8R3JvdXA+KCkuU2tpcCgxKQoJCQkuV2hlcmUoZiA9PiAhc3RyaW5nLklzTnVsbE9yRW1wdHkoZi5WYWx1ZSkpCgkJCS5TZWxlY3RNYW55KChiLGkpID0+IGkgJSAyID09IDAgPyAKCQkJIjxiPiIgKyBiLlZhbHVlICsgIjwvYj4iIDogYi5WYWx1ZSApICkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKHJlcyk7CgkJCQoJCQoJfQp9