Как это работает в сравнении? Он использует LINQ, поэтому он может быть немного медленнее, не уверен ...
List<String> allTerms = new List<String>(new String(){"string1", "string2", "string3", "string4"});
List<String> matches = allTerms.Where(item => Regex.IsMatch(bigTextToSearchForTerms, item, RegexOptions.IgnoreCase));
Для реализации метода FIND используются классические предикаты, поэтому он должен быть быстрее, чем LINQ:
static bool Match(string checkItem)
{
return Regex.IsMatch(bigTextToSearchForTerms, checkItem, RegexOptions.IgnoreCase);
}
static void Main(string[] args)
{
List<String> allTerms = new List<String>(new String(){"string1", "string2", "string3", "string4"});
List<String> matches = allTerms.Find(Match);
}
Или это использует лямбда-синтаксис для реализации классического предиката, который снова должен быть быстрее, чем LINQ, но более читаемым, чем предыдущий синтаксис:
List<String> allTerms = new List<String>(new String(){"string1", "string2", "string3", "string4"});
List<String> matches = allTerms.Find(checkItem => Regex.IsMatch(bigTextToSearchForTerms, checkItem, RegexOptions.IgnoreCase));
Я не проверял ни одного из них на производительность, но все они реализуют вашу идею итерации по списку поиска с использованием регулярных выражений. Это просто разные способы его реализации.