2014-03-02 118 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