現有一段字串,其中有多個<dl class = "dl_oil_coast">...</dl>的文本,需用正則表達式取出所有相關的文本,之前用@"<dl[^>]+?class=\W*dl_oil_coast\b[^>]*>[\s\S]+?</dl>" 只能取出第一個匹配的文本,求各位對正則表達式有研究的前輩們給些提示,謝謝~!
字串如:<html><body><a href="javascript:loadMenu('/v3/inc/left/left_menu2.jsp?sub=2&sub2=1','/v3/jsp/pet/prc/foreign/KDFQ0100_l.jsp');">more</a>
</span>
</p>
<dl class="dl_oil_coast">
<dt class="gasoline">Dubai</dt>
<dd class="coast">108.86
</dd>
<dd><span class="gap_up">1.55
</span></dd>
<dt class="lamp">Brent</dt>
<dd class="coast">109.72
</dd>
<dd><span class="gap_down">0.77
</span></dd>
<dt class="diesel">WTI</dt>
<dd class="coast">100.42
</dd>
<dd><span class="gap_down">0.84
</span></dd>
</dl>
<br>
<p class="graph_caption"></p>
<p class="graph"><p class="graph_caption"></p>
<p class="graph"></p>
<p class="oil_coast_table_caption">2011. 12. 07 ($/bbl)
<span align="right">
<a href="javascript:loadMenu('/v3/inc/left/left_menu2.jsp?sub=2&sub2=2','/v3/jsp/pet/prc/foreign/KDFQ0300_l.jsp');">more</a>
</span>
</p>
<dl class="dl_oil_coast">
<dt class="diesel">WTI (NYMEX)</dt>
<dd class="coast">100.49
</dd>
<dd><span class="gap_down">0.79
</span></dd>
<dt class="lamp">Brent (ICE)</dt>
<dd class="coast">109.53
</dd>
<dd><span class="gap_down">1.28
</span></dd>
</dl>
<br/><body></html>

解决方案 »

  1.   

    参考:
    public static IList<string> GetPicPath(string M_Content) 
            {
                IList<string> im = new List<string>();//定义一个泛型字符类
                Regex reg = new Regex(@"(?is)<li>地\s*址:(?<name>.+?)</li>");
                MatchCollection mc = reg.Matches(M_Content); //设定要查找的字符串
                foreach(Match m in mc)
                {
                    im.Add(m.Groups["name"].Value);
                }
                return im;
              
            }
      

  2.   

    循环输出就行 两次
       string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));
                string pattern = @"(?im)<dl[^>]*?dl_oil_coast[^>]*?>[\s\S]*?</dl>";
                foreach (Match m in Regex.Matches(tempStr, pattern))
                {
                    //循环输出
                    string text = m.Value;
                    /*
          
                     
                     */
                }