【问题标题】:Get <element> inner content by class with Regex使用正则表达式按类获取 <element> 内部内容
【发布时间】:2023-04-02 13:42:02
【问题描述】:

我正在尝试使用 myClass 类获取每个 &lt;td&gt; 元素的 myTEXT

示例:&lt;td class="myClass" colspan="3"&gt;myTEXT&lt;/td&gt;

我尝试使用类似 Using regex to get text between multiple HTML tags 的东西,但我必须按 myClass 进行过滤。

我是前瞻新手,我可以使用 (?=(&lt;td.*)class="myClass".*?&gt;){1}(.*?)&lt;\/td&gt; 进行匹配,但它包括 &lt;td(...)&gt;&lt;/td&gt;

所以我的问题是,我怎样才能使用 myClass 类在每个 &lt;td&gt; 之间只获取文本 between

【问题讨论】:

  • 如果您正在解析 HTML,则有比使用 RegEx 更好的方法。或者,如果您必须使用正则表达式并且它本身是一行,您可以使用 ^\s*\(?.*)\$ 其中 text 成为捕获组。
  • 对,就是解析HTML。您还建议返回错误:regexr.com/3f165
  • 因为您提出了一个 c# 问题,所以我使用了 .NET 正则表达式语法。用 regexstorm 测试,它似乎工作
  • 你真的想使用HTML Agiligy Pack,而不是滚动你的regex

标签: c# regex


【解决方案1】:

也许……你可以用这个 http://html-agility-pack.net/

这个是支持xpath语法的,所以你可以这样使用:

HtmlAgilityPack.HtmlDocumnet doc = new HtmlAgilityPath.HtmlDocumnet();
doc.LoadHtml(your html string);

HtmlAgilityPack.HtmlNodeCollection col = doc.DocumentNode.SelectNodes("//img");
foreach(var node in col) {
    Console.WriteLine(node.OuterHtml);
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2015-04-28
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多