public override List <WechatGroup> GetGroupsInOneFile(string filePath, FileOrder order)
        {
            var fileContent = File.ReadAllText(filePath).ReplaceNoNeedSymbols();
            // </div><a class = 'subtitle4'.*?>(.*?)\\(\\d*\\)
            var tableMatches = Regex.Matches(fileContent, "<a class = 'subtitle4'.{0,100}<table(.{0,200}?)abbr=\"群账号\"(.*?)</table>");
            var qqIndex      = GetQQIndex(fileContent);

            var groupList = new List <WechatGroup>();

            foreach (Match aMatch in tableMatches)
            {
                if (qqIndex > 0 && order == FileOrder.Last && fileContent.IndexOf(aMatch.Value) > qqIndex)
                {
                    continue;
                }

                var memberMatches = Regex.Matches(aMatch.Value, @"<tr .*?>(.*?)</tr>");
                var newGroup      = new WechatGroup();
                newGroup.Members = new List <WechatAccountInfo>();
                foreach (Match aMembenMatch in memberMatches)
                {
                    var aNewMember      = new WechatAccountInfo();
                    var memberInfoMatch = Regex.Matches(aMembenMatch.Value, "<td>.*?</td>");
                    if (string.IsNullOrEmpty(newGroup.Account))
                    {
                        newGroup.Account = Regex.Match(memberInfoMatch[1].Value, "<td>(.*)&nbsp;<br/></td>").Groups[1].Value.FilterHtmlSpecialSymbols();
                    }
                    if (string.IsNullOrEmpty(newGroup.Name))
                    {
                        newGroup.Name = Regex.Match(memberInfoMatch[2].Value, "<td>(.*)&nbsp;<br/></td>").Groups[1].Value.FilterHtmlSpecialSymbols();
                    }

                    aNewMember.Account = Regex.Match(memberInfoMatch[3].Value, "<td>(.*)&nbsp;<br/></td>").Groups[1].Value.FilterHtmlSpecialSymbols();
                    aNewMember.Name    = Regex.Match(memberInfoMatch[4].Value, "<td>(.*)&nbsp;<br/></td>").Groups[1].Value.FilterHtmlSpecialSymbols();
                    newGroup.Members.Add(aNewMember);
                }

                groupList.Add(newGroup);
            }
            return(groupList);
        }
        public override List <WechatGroup> GetGroupsInOneFile(string filePath, FileOrder order)
        {
            var fileContent  = File.ReadAllText(filePath).ReplaceNoNeedSymbols();
            var tableMatches = Regex.Matches(fileContent, @"<table .{0,350}?成员(帐|账)号</td>.*?</table>((\s<div)|(<br>)|(\s</body>))");

            var groupList = new List <WechatGroup>();

            foreach (Match aMatch in tableMatches)
            {
                var newGroup = new WechatGroup();
                newGroup.Members = new List <WechatAccountInfo>();
                var memberMatches = Regex.Matches(aMatch.Value, @"<tr\S.*?>(.*?)</table></div></td></tr>");
                foreach (Match aMembenMatch in memberMatches)
                {
                    var aNewMember = new WechatAccountInfo();
                    newGroup.Account = Regex.Match(aMembenMatch.Value, @"</td><td>(.*?)</td><td .*?><div").Groups[1].Value;
                    var memberInfoMatch = Regex.Matches(aMembenMatch.Value, @"<tr><td> .*?</td><td> (.*?)</td></tr>");
                    if (string.IsNullOrEmpty(newGroup.Name))
                    {
                        newGroup.Name = memberInfoMatch[0].Groups[1].Value.FilterHtmlSpecialSymbols();
                    }

                    aNewMember.Name        = memberInfoMatch[1].Groups[1].Value.FilterHtmlSpecialSymbols();
                    aNewMember.Account     = memberInfoMatch[2].Groups[1].Value.FilterHtmlSpecialSymbols();
                    aNewMember.Description = memberInfoMatch[3].Groups[1].Value.FilterHtmlSpecialSymbols();
                    aNewMember.Location    = memberInfoMatch[4].Groups[1].Value.FilterHtmlSpecialSymbols();
                    // aNewMember.Account = memberInfoMatch[5].Groups[1].Value.FilterHtmlSpecialSymbols(); 头像
                    if (memberInfoMatch.Count > 6)
                    {
                        aNewMember.Inway = memberInfoMatch[6].Groups[1].Value.FilterHtmlSpecialSymbols();
                    }

                    newGroup.Members.Add(aNewMember);
                }

                groupList.Add(newGroup);
            }
            return(groupList);
        }