<p class="page">第一页</p>
<p class="txt">wofjowjfwojfwoeriu</p><p class="txt">wofjowfwoeriu</p>
<p class="page">第二页</p>
<p class="txt">2wofjow2jfwojfwo2eriu</p>
<p class="page">第三页</p>
<p class="txt">wofjo3wjfwojfwoeriu</p><p class="txt">wo3fjowfwo33eriu</p>
如何用正则从以上文本中取出指定内容后按以下形式存储string[,] newArray = { {"第一页", "<p class=\"txt\">wofjowjfwojfwoeriu</p><p class=\"txt\">wofjowfwoeriu</p>
"}, ...,从此类推 };

解决方案 »

  1.   

            string str = "..";
            MatchCollection mc = Regex.Matches(str, @"(?s)<p class=""page"">([^<]*)</p>\s*((?:<p class=""txt"">[^<]*</p>)+)");
            string[,] newArray = new string[mc.Count, 2];
            for (int i = 0; i < mc.Count; i++)
            {
                string v1 = mc[i].Groups[1].Value;
                string v2 = mc[i].Groups[2].Value;
                newArray[i, 0] = v1;
                newArray[i, 1] = v2;
            }
      

  2.   


    void Main()
    {
     string s=@"<p class=""page"">第一页</p>
    <p class=""txt"">wofjowjfwojfwoeriu</p><p class=""txt"">wofjowfwoeriu</p>
    <p class=""page"">第二页</p>
    <p class=""txt"">2wofjow2jfwojfwo2eriu</p>
    <p class=""page"">第三页</p>
    <p class=""txt"">wofjo3wjfwojfwoeriu</p><p class=""txt"">wo3fjowfwo33eriu111</p>"; foreach(Match m in Regex.Matches(s,@"(?is)<p\sclass=""page"">([^<]+)</p>.*?((<p\sclass=""txt"">[^<]*</p>[^<]*)+)"))
    {
        Console.WriteLine(m.Groups[1].Value);
    Console.WriteLine(m.Groups[2].Value);
    }

    /*
    第一页
    <p class="txt">wofjowjfwojfwoeriu</p><p class="txt">wofjowfwoeriu</p>第二页
    <p class="txt">2wofjow2jfwojfwo2eriu</p>第三页
    <p class="txt">wofjo3wjfwojfwoeriu</p><p class="txt">wo3fjowfwo33eriu111</p> */

      

  3.   

    不好意思,不都是<p class="txt">....</p>
    内容中class="不定"
      

  4.   

    我再清楚的说明一下问题:<p class="page">第一页</p>
    任意html代码1
    <p class="page">第二页</p>
    任意html代码2
    <p class="page">第三页</p>
    任意html代码3
    我想要的数据结构如下页标题     页内容
    第一页     任意html代码1
    第二页     任意html代码2
    第三页     任意html代码3
      

  5.   

    1楼的正则改为:
    @"(?s)<p class=""page"">([^<]*)</p>(.*?)(?=<p class=""page"">|$)"