/// <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()); }
/// <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(); } }
public SmaiTag_Row[] Tags_Cut(SmaiTag_Row tagOri, string sTag) { return(this.Tags_Cut(tagOri.Full, sTag)); }