【问题标题】:How to extract data from HTML tag with specific attribute and value using regex in C# [duplicate]如何在 C# 中使用正则表达式从具有特定属性和值的 HTML 标记中提取数据 [重复]
【发布时间】:2021-05-27 03:56:00
【问题描述】:

我一直在尝试从一些 HTML 数据中提取单个值,但我无法完全专注于我正在寻找的部分:

我要读取的行是:

<span class="temp">5</span>

还有很多不同类的“span”标签,所以我只需要接受“temp”类, 然后获取值?

我真的没有使用 Regex 的经验,但一直在尝试弄清楚。 以下是我尝试过的一些线路:

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp"">(.+?)<", RegexOptions.None);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp"">\s*(.+?)\s*</span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp""> (.*?) </span> ", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp"">(([^<]|<[^\/]|<\/[^s]|<\/s[^p]|<\/sp[^a]|<\/spa[^n]|<\/span[^ \t >])*)</span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp"">\s*([^<])\s*</span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp"">\s*(<.*?>) * ([^<] *)\s*</span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"(?<=<span\s *class=""temp""[^><]*>\s*)[^<>]*", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"(?<=<span\s*class=""temp""[^><]*>\s*)[^<>]*", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"(?<=<span\s*class=""temp"">\s*)*", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span[^>] *> (.*?) </ span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp""></span>", RegexOptions.Singleline);

//MatchCollection data = Regex.Matches(searchData, @"<span class=""temp""></span>", RegexOptions.Singleline); 

感谢您提供的任何帮助! 道格

【问题讨论】:

  • 你试过这个@"&lt;span class=""temp""&gt;[^&lt;&gt;]*&lt;/span&gt;"吗?
  • 嗨 gilmutdinov,不幸的是,这也不起作用....
  • 嗨磁控管,谢谢。我会找到另一种方法来提取我正在寻找的东西。谢谢。

标签: c# html regex attributes tags


【解决方案1】:

您可以尝试使用带有 XPATH 表达式的 HtmlAgilityPack 找到您需要的所有元素:

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
    
// select all <span> elements with class 'temp' containing text and no element children
var xpath = "//span[contains(@class, 'temp') and text() and not(*)]";
var nodes = htmlDoc.DocumentNode.SelectNodes(xpath);

foreach (var node in nodes)
{
    Console.WriteLine(node.InnerText);
}

【讨论】:

    猜你喜欢
    • 2018-07-27
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2014-04-29
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多