Exemple #1
0
        /// <summary>
        /// 태그를 검색하여 dataTag객체를 리턴합니다.
        /// </summary>
        /// <param name="sOri">검색할 원본 데이터</param>
        /// <param name="sTag">검색할 태그</param>
        /// <returns></returns>
        public SmaiTag_Row[] Tags_Cut(string sOri, string sTag)
        {
            List <SmaiTag_Row> listReturn = new List <SmaiTag_Row>();


            //태그 추출
            string[] sFull = Regex.Matches(sOri
                                           , "<" + sTag + "(.*?)>(.*?)</" + sTag + ">"
                                           , RegexOptions.IgnoreCase | RegexOptions.Singleline)
                             .Cast <Match>().Select(m => m.Value).ToArray();

            //태그 갯수 만큼 아이템 생성
            foreach (string sItem in sFull)
            {
                SmaiTag_Row tagTemp = new SmaiTag_Row();
                //태그
                tagTemp.Tag = sTag;
                //전체 데이터
                tagTemp.Full = sItem;

                //태그 해드 추출
                tagTemp.Head = Regex.Matches(tagTemp.Full
                                             , "<" + sTag + "(.*?)>"
                                             , RegexOptions.IgnoreCase
                                             | RegexOptions.Singleline)[0].Value;
                //태그 헤드 제거
                tagTemp.Value = Regex.Replace(tagTemp.Full
                                              , "<" + sTag + "(.*?)>"
                                              , string.Empty
                                              , RegexOptions.IgnoreCase);
                //테그 풋 제거
                tagTemp.Value = Regex.Replace(tagTemp.Value
                                              , "</" + sTag + ">"
                                              , string.Empty
                                              , RegexOptions.IgnoreCase);

                //리스트에 추가 한다.
                listReturn.Add(tagTemp);
            }

            //태그 해드 추출
            //var bbb = Regex.Matches(sOri
            //			, "<" + sTag + ">"
            //			, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            //어트리뷰트 추출
            //var ccc = Regex.Matches(sOri
            //			, @"[^>] *= ""(.*?)"
            //			, RegexOptions.IgnoreCase);

            //어트리 뷰트만 선택
            //Regex.Matches(tagTemp.Head
            //, @"(\S+)=[""']?((?:.(?![""']?\s + (?:\S +)=|[> ""']))+.)[""']?"
            //	 , RegexOptions.IgnoreCase | RegexOptions.Singleline)
            //정규식  c# regular expression multiple lines



            return(listReturn.ToArray());
        }
Exemple #2
0
        /// <summary>
        /// 지정한 내용을 분석합니다.
        /// </summary>
        /// <param name="sData">분석할 내용</param>
        public void Analysis(string sData)
        {
            this.SMI = new SmaiData();


            SmaiTag_Row tagSami = this.m_TagCut.Tags_Cut(sData, "SAMI")[0];

            //해드 자르게
            this.SMI.Head = this.m_TagCut.Tags_Cut(tagSami.Value, "HEAD")[0];

            //바디 자르기
            SmaiTag_Row tagBody = this.m_TagCut.Tags_Cut(tagSami.Value, "BODY")[0];

            //자막 정보
            SmaiSync[] tagSync = this.m_TagCut.Tags_Cut_Sync(tagBody.Value);
            if (null != tagSync)
            {
                //리스트에 데이터를 바인딩한다!
                this.SMI.Data = tagSync.ToList();
            }
        }
Exemple #3
0
 public SmaiTag_Row[] Tags_Cut(SmaiTag_Row tagOri, string sTag)
 {
     return(this.Tags_Cut(tagOri.Full, sTag));
 }