http://topic.csdn.net/u/20101020/22/35cf6fb9-bcc3-400c-a11d-c2914a1c717f.html
这个是前两天提问的,但是回答者的答案都有点问题
如果帮忙解决者并简单解释的80分立刻相送
<dl><dd><span class='l'>电子邮件:</span>[email protected]</dd></dl><dl>
                <dd><span class='l'>姓名:</span>张三</dd></dl>
我想把他放入MatchCollection集合中,然后循环提取其中的数据
 MatchCollection matches = Regex.Matches(content, regStr, RegexOptions.Multiline);
            foreach (Match mc in matches)
            {               
              mydata=  mc.Groups[1].Value;
            }
集合中的第一个位置的值是:电子邮件:[email protected]
第二个位置的值是:姓名:张三

解决方案 »

  1.   

    这样?string test = @"<dl><dd><span class='l'>电子邮件:</span>[email protected]</dd></dl><dl>
      <dd><span class='l'>姓名:</span>张三</dd></dl>";
    Regex reg = new Regex(@"<span[^>]*>([^<]*)</span>([^<]*)</dd>");
    MatchCollection mc = reg.Matches(test);
    foreach (Match m in mc)
    {
         richTextBox2.Text += m.Groups[1].Value + "\n";
         richTextBox2.Text += m.Groups[2].Value + "\n-----------\n";
    }
    /*------输出------
    电子邮件:
    [email protected]
    -----------
    姓名:
    张三
    -----------
    */
      

  2.   

    lxcnn:
    对时那样,但是想请教一个为什么不匹配前面的dd呢
      

  3.   

    这就要看你哪些作为标识了,如果仅仅是我写的那种结构,就可以从全文中区别出你要的内容,那就没必要再加<dd>的限制了,如果这样会取出一些不相关的内容,那就需要严谨些Regex reg = new Regex(@"(?i)<dd><span[^>]*>([^<]*)</span>([^<]*)</dd><");
      

  4.   

    lxcnn:
    麻烦你在这个帖子也回答一下吧
    http://topic.csdn.net/u/20101020/22/35cf6fb9-bcc3-400c-a11d-c2914a1c717f.html这样以来可以帮助别人以后搜索到,二来我可以兑现我的80分承诺!
      

  5.   

    回复lxcnn:
    非常感谢lxcnn:
    还想请教一下(?i)这个是什么意思呢,还有我看到别人(?is)这样写
    劳烦解释一下,谢谢!
      

  6.   

    6楼正则最后多了一个“<”字符Regex reg = new Regex(@"(?i)<dd><span[^>]*>([^<]*)</span>([^<]*)</dd>");(?i) 表示忽略大小写,与RegexOptions.IgnoreCase的作用一样