【问题标题】:how can I get a simpler data如何获得更简单的数据
【发布时间】:2011-07-24 12:36:21
【问题描述】:

我有 matchCollection。 我需要组索引 1。 现在我从大量演员表中取出数据,我想避免它。

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

我需要得到没有<a></a> 的“texttexttext”

 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;
 } 

【问题讨论】:

标签: c# regex match


【解决方案1】:

我建议您使用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);
        }
    }
}

【讨论】:

  • 否决票的任何理由?请在投票时发表评论。
【解决方案2】:

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

        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);
        } 

【讨论】:

  • 我碰巧razobratsya解析器不能,这是一个很好的工作变体。
猜你喜欢
  • 2023-03-06
  • 2021-12-14
  • 2015-05-30
  • 2012-12-20
  • 1970-01-01
  • 2022-01-19
  • 2017-01-20
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多