2011-07-24 135 views
1

我有matchCollection。 而且我需要组索引1. 现在我从大量的演员中提取数据,我想避免它。我怎样才能得到一个更简单的数据

示例:startTag = <a>,endTag = </a> Html = <a>texttexttext</a>

我需要得到 “texttexttext” 用了<a></a>

var regex = new Regex(startTag + "(.*?)" + endTag, RegexOptions.IgnoreCase); 
var matchCollection = regex.Matches(html); 
foreach (var item in matchCollection) 
{ 

     string temp = ((Match)(((Group)(item)).Captures.SyncRoot)).Groups[1].Value; 
} 
+1

你知道正则表达式和HTML/XML是坏朋友吗? –

+0

@Marc Gravell,为什么?我不知道如何去 – Mediator

+1

为什么在这里使用SyncRoot? –

回答

1

你可以使用一个捕获组。您可能还想使用命名组。注意我添加到正则表达式的括号。

 var html = "<a>xx yyy</a> <a>bbb cccc</a>"; 
     var startTag = "<a>"; 
     var endTag = "</a>"; 
     var regex = new Regex(startTag + "((.*?))" + endTag, RegexOptions.IgnoreCase); 
     var matchCollection = regex.Matches(html); 
     foreach (Match item in matchCollection) 
     { 
      var data = item.Groups[1]; 
      Console.WriteLine(data); 
     } 

这甚至更好一点,因为命名组更容易抓取。

 var html = "<a>xx yyy</a> <a>bbb cccc</a>"; 
     var startTag = "<a>"; 
     var endTag = "</a>"; 
     var regex = new Regex(startTag + "(?<txt>(.*?))" + endTag, RegexOptions.IgnoreCase); 
     var matchCollection = regex.Matches(html); 
     foreach (Match item in matchCollection) 
     { 
      var data = item.Groups["txt"]; 
      Console.WriteLine(data); 
     } 
+0

-1提出了一个解决方案来解析正则表达式的HTML。 –

+0

我碰巧razobratsya解析器不能,在这是一个很好的工作变量。 – Mediator

2

我会建议你使用Html Agility Pack解析HTML,而不是正则表达式various reasons

因此,为了与找到一个HTML文档中所有的锚文本将它应用到你的例子:

using System; 
using System.Net; 
using HtmlAgilityPack; 

class Program 
{ 
    static void Main() 
    { 
     string html = ""; 
     using (var client = new WebClient()) 
     { 
      html = client.DownloadString("http://stackoverflow.com"); 
     } 

     var doc = new HtmlDocument(); 
     doc.LoadHtml(html); 
     foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a")) 
     { 
      // Will print all text contained inside all anchors 
      // on http://stackoverflow.com 
      Console.WriteLine(link.InnerText); 
     } 
    } 
} 
+1

任何downvote的原因? downvoting时请留言。 –

+0

最近它发生太多了,而且经常没有任何解释... – Tigran

相关问题