/// <summary>
        /// Получение регулярного выражения (список вариантов) для заданной отсортированной коллекции
        /// </summary>
        /// <param name="sortedCollection">отсортированная коллекция строк</param>
        /// <param name="converter">конвертер для преобразования каждого элемента коллекции</param>
        /// <returns>регулярное выражение</returns>
        private static string GetVariantsFromSortedCollection(List <string> sortedCollection, StringToRegexConverter converter)
        {
            StringBuilder builder = new StringBuilder();

            foreach (string str in sortedCollection)
            {
                builder.Append("|");
                string convertedValue = ConvertStringForRegex(str);
                if (converter != null)
                {
                    convertedValue = converter(convertedValue);
                }
                builder.Append("(" + convertedValue + ")");
            }
            builder.Remove(0, 1);

            if (sortedCollection.Count() > 1)
            {
                builder.Insert(0, "(");
                builder.Append(")");
            }

            return(builder.ToString());
        }
 /// <summary>
 /// Получение регулярного выражения (список вариантов) для заданной коллекции
 /// </summary>
 /// <param name="collection">коллекция строк</param>
 /// <param name="converter">конвертер для преобразования каждого элемента коллекции</param>
 /// <returns>регулярное выражение</returns>
 public static string GetVariantsFromCollection(IEnumerable <string> collection, StringToRegexConverter converter = null)
 {
     return(GetVariantsFromSortedCollection(GetSortedCollection(collection, _comparer), converter));
 }