请问,如何使用正则表达式匹配html标签以外的内容
其实是个搜索的功能
现在读取到HTML文件后,需要查看其中内容是否包含输入的字符串
若HTML如<table>....</table> 这样输入table,不能有返回结果的
而对于<table>...table..</table>,则返回结果
期待答复,谢谢

解决方案 »

  1.   

    /// <summary>
        /// 返回模板阶段。检验每个主题的阶段是否一致,若不一致抛出文档结构异常。
        /// 每个阶段填充Num,Name属性
        /// </summary>
        public List<Stage> GetStages()
        {        listStages.Clear();
            List<Theme> listTheme = GetThemes();        Regex r_stage = new Regex(@"Stage\s\d+:");
            Regex r_theme = new Regex(@"Theme\s\d+:");        for (int i = 0; i < listTheme.Count; i++)
            {
                List<Stage> listStage = new List<Stage>();
                for (int j = listTheme[i].ID + 1; j < dtExcel.Rows.Count; j++)
                {
                    Match m_stage = r_stage.Match(dtExcel.Rows[j][0].ToString());
                    Match m_theme = r_theme.Match(dtExcel.Rows[j][0].ToString());
                    if (m_stage.Success)
                    {
                        Stage stage = new Stage();
                        stage.ID = j;
                        stage.Num = int.Parse(Regex.Match(dtExcel.Rows[j][0].ToString().Split(':')[0], @"\d+").Value);
                        stage.StaName = dtExcel.Rows[j][0].ToString().Split(':')[1];
                        listStage.Add(stage);                }
                    else if (m_theme.Success)
                    {
                        break;
                    }
                }
                listStages.Add(listStage);
                if (listStages[0].Count == listStage.Count)
                {
                    for (int k = 0; k < listStage.Count; k++)
                    {
                        if (listStage[k].Num != listStages[0][k].Num || listStage[k].StaName != listStages[0][k].StaName)
                        {
                            throw new Exception((listStage[k].ID + 2).ToString() + "行,文档结构异常!");
                        }
                    }
                }
                else
                {
                    throw new Exception((listStage[0].ID + 2).ToString() + "行,文档结构异常!");
                }
            }
            return listStages[0];
        }
      

  2.   

     /// <summary>
        /// 得到某主题某模块下评估问题组。每个AssessmentCriteria填充Num,Criteria,Theme.Stage属性
        /// </summary>
        public List<AssessmentCriteria> GetCriteria(int theme, int stage)
        {
            List<AssessmentCriteria> listAssessmentCriteria = new List<AssessmentCriteria>();
            List<Theme> listTheme = GetThemes();
            List<Stage> listStage = GetStages();
            int themeRow = listTheme[theme].ID;
            int stageRow = listStages[theme][stage].ID;
            for (int i = stageRow + 1; i < dtExcel.Rows.Count; i++)
            {
                int indexAss = 0;
                if (dtExcel.Rows[i][0].ToString().Trim() != "")
                {
                    AssessmentCriteria assessmentCriteria = new AssessmentCriteria();
                    assessmentCriteria.Num = indexAss + 1;
                    assessmentCriteria.Criteria = dtExcel.Rows[i][1].ToString();
                    assessmentCriteria.Stage = listStage[stage];
                    assessmentCriteria.Theme = listTheme[theme];
                    listAssessmentCriteria.Add(assessmentCriteria);
                }
                else
                {
                    break;
                }        }
            return listAssessmentCriteria;
        }    /// <summary>
        /// 返回模块名称。模块填充,Name和Version属性
        /// </summary>
        public TRACC GetTRACC()
        {
            string strTracc = dtExcel.Rows[0][0].ToString();
            Regex reg = new Regex(@"(?<=\()[^\[\]]+(?=\))");
            TRACC tracc = new TRACC();
            tracc.Name = strTracc.Substring(0, strTracc.IndexOf('('));
            tracc.Version = reg.Match(strTracc).Value;
            return tracc;
        }
    }
      

  3.   

    ReadAssessmentTemplate rat = new ReadAssessmentTemplate(@"E:\WebSite\领导管理变革模块.xlsx;", "Sheet1");        List<Theme> listTheme = rat.GetThemes();
            if (listTheme.Count > 0)
            {
                Response.Write("<font color='red'>theme</font><br/>");
                for (int i = 0; i < listTheme.Count; i++)
                {
                    Response.Write(listTheme[i].ID.ToString() + "," + listTheme[i].Name + "," + listTheme[i].Num.ToString() + "<br/>");
                }
            }        List<Stage> listStage = rat.GetStages();
            if (listStage.Count > 0)
            {
                Response.Write("<font color='red'>stage</font><br/>");
                for (int i = 0; i < listStage.Count; i++)
                {
                    Response.Write(listStage[i].ID.ToString() + "," + listStage[i].StaName + "," + listStage[i].Num.ToString() + "<br/>");
                }
            }        Response.Write("Name:"+rat.GetTRACC().Name+"<br/>");
            Response.Write("Version:"+rat.GetTRACC().Version+"<br/>");        List<AssessmentCriteria> listAc = rat.GetCriteria(0,0);
            if (listAc.Count > 0)
            {
                Response.Write("<font color='red'>ac</font><br/>");
                for (int i = 0; i < listAc.Count; i++)
                {
                    Response.Write(listAc[i].Criteria.ToString() + "<br/>");
                }
            }