【问题标题】:Regular expression to read tags in a HTML正则表达式读取 HTML 中的标签
【发布时间】:2015-01-13 02:47:40
【问题描述】:
<td width="100%"><h1>Chicago, IL Weather</h1></td>

我想获取标签 h1 中的文本。为此,我想在 C# 中使用正则表达式代码。谁能告诉我解决办法?

【问题讨论】:

  • 为什么要使用正则表达式?
  • 看看Parse HTML Links with C#。你不能使用图书馆吗?
  • 使用 DOM 比使用正则表达式更好。请参阅我刚刚发布的回复的后半部分,以解释为什么使用正则表达式进行 HTML 解析不是一个好主意:stackoverflow.com/questions/6224792/…
  • @Ash Burlaczenko - 你觉得正则表达式有点吓人吗?没关系,你不会是第一个。
  • @Spudley - 你为什么不回答这个问题 - 哦等等,你有一个宗教口头禅。他们在世界各地的各个城市都设有演讲者角,以进行这种有偏见的演讲。

标签: c# asp.net regex


【解决方案1】:
    System.Text.RegularExpressions.Regex bodyRegex = new System.Text.RegularExpressions.Regex(@"(<h1[^>]*>[\u0000-\uFFFF]+?</h1>)");
System.Text.RegularExpressions.Match bodyMatch = bodyRegex.Match(line);
        if (bodyMatch.Success)
          {
           FileContent = bodyMatch.Result("$0");
           FileContent = (FileContent.Replace(@"<h1>", "")).Replace(@"</h1>", "");
}

通过这个可以找到第一个h1标签值

【讨论】:

  • 你应该在它被否决之前删除这个答案。关于 StackOverflow 的共识意见是 You do not parse HTML with a regex
  • @Mike Pennington - stackoverflow 的共识是错误的。不要删除这个答案。它是迄今为止唯一一个甚至试图回答所提出的非常具体的问题。
  • @PP,你在争论一个有超过 4000 个赞的答案。
  • @Mike Pennington - 是的。有非常合理的时间和地点使用正则表达式。但我确实为自己考虑。另一方面,如果你只是一个总是随波逐流的人......
  • @PP,我使用正则表达式已有十多年了。我很熟悉它们的用法和限制
【解决方案2】:

试一试

String h1Regex = "<h1[^>]*?>(?<TagText>.*?)</h1>";

MatchCollection mc = Regex.Matches(Data, h1Regex, RegexOptions.Singleline);

foreach (Match m in mc) {
    Console.Writeline (m.Groups["TagText"].Value);
}

【讨论】:

    【解决方案3】:

    你为什么要使用正则表达式,我知道这是最快的方法,但它也有缺点: 1. 打乱了代码的可读性,

    1. 如果您的 html 文件发生更改,编写新的正则表达式对您来说会很痛苦,

    除非你绝对必须,否则离开正则表达式并使用 Html 解析器(如上面提到的 HTMLAgilityPack)。

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 2013-06-12
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多