我有一段HTML代码<li><ahref="zbgginfo.asp?id=414">[询价采购][BXCX20130804]&nbsp;本溪市食品药品检验所高效液相色谱仪采购项目</a>&nbsp;2013-8-27&nbsp;</li><li><ahref="zbgginfo.asp?id=413">[询价采购][BXCX20130801]&nbsp;本溪市食品药品检验所紫外可见分光光度计询价采购</a>&nbsp;2013-8-26&nbsp;</li><li><ahref="zbgginfo.asp?id=412">[公开招标][BXCG20130604]&nbsp;辽宁冶金技师学院拟建设专业所需设备采购</a>&nbsp;2013-8-22&nbsp;</li>我的正则
<li><ahref="([\w./\?&=-]*)">([\s\S]*?[^<]*)</a>&nbsp;2013-8-26&nbsp;</li>我只本匹配出 2013-8-26 的链接地址 和链接名称 
但我的正则 匹配出来却是
1   zbgginfo.asp?id=414
2   [询价采购][BXCX20130804]&nbsp;本溪市食品药品检验所高效液相色谱仪采购项目</a>&nbsp;2013-8-27&nbsp;</li><li><ahref="zbgginfo.asp?id=413">[询价采购][BXCX20130801]&nbsp;本溪市食品药品检验所紫外可见分光光度计询价采购
我想应该是 [\s\S]*?[^<]* 这里有问题 查了一下资料 大约明白是贪婪 匹配最多的字符 
但我不知道应该怎么写才能 只本匹配出 2013-8-26 的链接地址 和链接名称 求大神帮我看看  不胜感激c#正则html

解决方案 »

  1.   


                System.IO.StreamReader reader = new System.IO.StreamReader("e:\\mh.txt");
                string s = reader.ReadToEnd();
                string mstr = @"(?is)(?<=<ahref="")[^""<>]+(?="">((?!<li>).)+013-8-26)";
                System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(mstr);
                System.Text.RegularExpressions.Match m = reg.Match(s);
                MessageBox.Show(m.Value);结果 zbgginfo.asp?id=413
      

  2.   

    这样<li><ahref="([^"]*?)">([\s\S]*?[^<]*)(?=</a>&nbsp;2013-8-26&nbsp;</li>)