2011-02-08 42 views
2

我該如何去獲得的值,例如我的正則表達式有什麼問題?

  1. <div class="detail"> Hello </div>
  2. <div class="detail"> World </div>

     string x = " <div class="results-list clearfix"> 
           <div class="detail"> Hello 
           </div> 
         </div> 
         <div class="results-list clearfix"> 
           <div class="detail"> World 
           </div> 
         </div>   
        "; 
    
        String pattern = @"<div class=""results-list clearfix"">(?<Content>[^<]*)</div>"; 
    
        Regex rx = new Regex(pattern,RegexOptions.Multiline); 
        Match m = rx.Match(x); 
    
        while (m.Success) 
        { 
         string zz = m.Groups["Content"].Value; 
         m = m.NextMatch(); 
        } 
    
+2

你`字符串x`值是無效的C# - 你需要使用一個逐字字符串(開始與`@`)和逃避內部引號`」 `。 – Oded 2011-02-08 13:37:11

+0

看看這個主題。http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not – 2011-02-08 13:46:24

回答

1

我覺得這是你的問題""results-list clearfix""。在使用文字字符串時,您可以刪除額外的"'s。

0

對這種解析使用正則表達式是一個壞主意。針對這種特定場景使用XML解析器。我建議LINQ to XML,即XElement.Parse(...)

不要忘了把html包裝在單個根元素中。

0

嘗試這種模式與單線選項:

string pattern = "<div\\sclass=\"results-list clearfix\">\\s*(?<Content><div[^>]*>.*?</div>)"