2014-03-02 212 views
0

我保存的HTML頁面文字,我想使用正則表達式的文件拔出名之間的空白。沒有什麼東西會被退回,我想是因爲元素之間的空白。我試圖在span和anchor之間添加\s*。請幫我解決它......正則表達式元素

下面是HTML的例子:

<li> 
    <span class="name"> 
      <a href="/players/player-name.html">Stanley,&nbsp;Kyle</a> 
    </span> 
</li> 

我使用C#,這裏是我的代碼:

 static void Main(string[] args) 
    { 
     using (StreamReader r = new StreamReader(@"textfile.txt")) 
     { 

      string content = r.ReadToEnd(); 

      Regex r1 = new Regex("<span class=\"name\"><a.*>(.*?)</a></span>"); 

      MatchCollection mc = r1.Matches(content); 
      foreach (Match m in mc) 
      { 
       Console.WriteLine(m.Groups[1].Value); 
      } 
     } 
     Console.ReadLine(); 
     Console.WriteLine(); 

    } 
+0

所以你試着添加'\ s *'。你能向我們展示一個你如何做到的例子嗎?另外,不要用正則表達式解析HTML。使用[Html Agility Pack](https://htmlagilitypack.codeplex.com/)或其他。 – Ryan

+1

注意,如果你沒有使用原義字符串或雙反斜線,它會剛剛結束一樣's'。所以'@ 「的 \ S * (。*?) \ S *」'和介意'@'。 – Ryan

+0

謝謝你,我說: @ 「的 \ S * \ S *(*?)」 - 和它的工作!完美!!! –

回答

1
Regex r1 = new Regex(
    @"<span class=""name"">\s*<a.*?>(.*?)</a>\s*</span>", 
    RegexOptions.Multiline 
); 
+0

我得到一個編譯錯誤「無法識別的轉義序列」中的正則表達式突出秒。 –

+0

這裏是一個用轉義序列...正則表達式R1 =新的Regex( 「<跨度類= \」 名\ 「> \\ S * (。*?) \\ S *」,RegexOptions.Multiline ); – Charls

+0

@Charls多行選項不會在這裏做任何事* – Jerry