【问题标题】:Regular expression to extract span tag value [closed]用于提取跨度标记值的正则表达式 [关闭]
【发布时间】:2018-08-27 06:15:11
【问题描述】:

我需要使用 c# 提取 nHKS8cG006 来自"Content from Eikon: <span class="tr-pnac" id="x2">ID:nHKS8cG006</span>" 这里“来自 Eikon 的内容应该作为正则表达式的一部分包含在内,并且 span 的类名名称始终保持不变,但 id 值可能会有所不同,例如 x18,17,x96 等。

谢谢。

【问题讨论】:

  • @TheGeneral 仅限于向我的解决方案添加额外的 dll,因此帮助我更正此 Regex(@"(?Eikon)[:]? \s+)?)'>[(ID:)?)n[A-Za-z0-9]+(?=]) ", RegexOptions.IgnoreCase);
  • 你的问题是什么?你是怎么做到的?我们不在这里做你的工作。除此之外,这里有一个提示:要从 HTML 中提取或解析信息,请使用 HTML 解析器,例如HtmlAgilityPack.
  • 正则表达式其实很简单:regexr.com/3uge7
  • @Chris tnk 你。
  • 欢迎您!你可以评论我的评论:)

标签: c# html regex


【解决方案1】:

您可以使用下面的代码而无需其他组件。它使用 System.Xml 中的标准类。

var txt = "Content from Eikon: <span class=\"tr-pnac\" id=\"x2\">ID:nHKS8cG006</span>";
var xml = new System.Xml.XmlDocument();
xml.LoadXml($"<root>{txt}</root>");
var spanNodes = xml.DocumentElement.SelectNodes("//span[contains(@class, 'tr-pnac')]");
//or
//var spanNodes = xml.DocumentElement.SelectNodes("//span[@class='tr-pnac']");
foreach (XmlNode n in spanNodes)
{
    System.Diagnostics.Debug.WriteLine(n.InnerText.Substring(3));
}

这是适合您的正则表达式版本:

var txt = "Content from Eikon: <span class=\"tr-pnac\" id=\"x2\">ID:nHKS8cG006</span>";
var regex = new Regex("Content from Eikon: <span class=\"tr-pnac\" id=\"[a-zA-Z0-9]+\">ID:(?<id>[a-zA-Z0-9]+)</span>", RegexOptions.IgnoreCase);
var match = regex.Match(txt);
System.Diagnostics.Debug.WriteLine(match.Groups["id"].Value);

【讨论】:

  • 谢谢。但是,实时有多个类名为 tr-pnac 的跨度标签,但我想提取具有模式 Content from Eikon: &lt;span class=\"tr-pnac\" id=\"x2\"&gt;ID:nHKS8cG006&lt;/span 的跨度的值
【解决方案2】:

最好使用Html Agility Pack LINK

解析 HTML 的正则表达式不是一个好习惯。

// From File
var doc = new HtmlDocument();
doc.Load(filePath);

// From String
var doc = new HtmlDocument();
doc.LoadHtml(html);

// From Web
var url = "http://html-agility-pack.net/";
var web = new HtmlWeb();
var doc = web.Load(url);

string whatYouNeed = doc.GetElementbyId("x2");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2011-04-01
    相关资源
    最近更新 更多