/// <summary>
        /// Производит поиск всех Email в исходной строке
        /// </summary>
        /// <param name="str">Исходная строка</param>
        /// <returns></returns>
        public static List <string> FindEmails(string str)
        {
            var obj    = new EmailSearchStateMaсhine();
            var result = FindEmails(str, obj);

            return(obj.resultStrings);
        }
        /// <summary>
        /// Производит поиск всех Email в исходной строке
        /// </summary>
        /// <param name="str">Исходная строка</param>
        /// <param name="stateTarce">Данные о состояниях конечного автомата</param>
        /// <returns></returns>
        public static List <string> FindEmails(string str, out List <int> stateTarce)
        {
            var obj    = new EmailSearchStateMaсhine();
            var result = FindEmails(str, obj);

            stateTarce = obj.traceData;

            return(obj.resultStrings);
        }
        static List <string> FindEmails(string str, EmailSearchStateMaсhine stateMaсhine)
        {
            str = '^' + str + '$';

            foreach (var item in str.ToCharArray())
            {
                stateMaсhine.currentState(item);
            }

            return(stateMaсhine.resultStrings);
        }