【问题标题】:C# Regex parsing HTML [duplicate]C#正则表达式解析HTML [重复]
【发布时间】:2011-01-23 06:55:24
【问题描述】:

我的价值 1

我需要“我的价值 1”,请帮助我。 C#语言

【问题讨论】:

  • 标签是否总是相同的格式(例如 3 层深,一个 tr、一个 td 和一个字体)
  • 你用什么语言来解析这个?

标签: c# html regex


【解决方案1】:

试试:

/<tr>\s*<td>\s*<font.*?>(.*?)<\/font>\s*<\/td>\s*<\/tr>/i

在 PHP 中使用:

<?php

if(preg_match('/<tr>\s*<td>\s*<font.*?>(.*?)<\/font>\s*<\/td>\s*<\/tr>/i',
              '<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>',$matches))
        echo $matches[1]; // prints My Value 1
?>

【讨论】:

  • @codaddict 我需要 c# 语言 :-)
【解决方案2】:
function stripTags(markup){
  return markup.replace(/\s*<[^>]*?>\s*/gim,'');
}

假设您真正想要的只是上面“我的价值 1”表示的内部文本。

【讨论】:

    【解决方案3】:

    您无法使用正则表达式正确解析 HTML,因为正则表达式无法处理 HTML 允许的嵌套。要正确地做到这一点。对于您显示的那一行,您可以使用正则表达式,但您不能指望该行保持相同,因此通常必须使用 SAX/DOM 来完成任务。

    【讨论】:

    • 但是您可以使用正则表达式解析恰好是 HTML 的固定字符串。虽然这样做有很多问题,但它们是 OP 可能没有的问题。
    • @Tom - 同意。但是,尽管 OP 今天没有它们,但他可能明天就不会想知道发生了什么,希望如此。
    【解决方案4】:

    由于 HTML 代码非常“不可预测”,我建议使用 HTML 解析工具包。您使用哪种编程语言?在 .NET 中,我使用 HTML Agility Pack 取得了巨大成功。在 Java 中,HTML Parser 可能很方便(尽管我还没有使用它)。

    【讨论】:

      【解决方案5】:

      如果您使用的是 PHP,请在 &lt;/FONT&gt; 上拆分

      $string='<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>';
      $s = explode('</FONT>',$string);
      foreach ($s as $v){
           if ( strpos($v,"<FONT") !==FALSE) {
              $t = explode(">",$v);
              print end($t)."\n";
          }
      
      }
      

      输出

      $ php test.php
      My Value 1
      

      【讨论】:

        【解决方案6】:

        在 perl 中我会使用

        my $string='<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>';
        $string =~ m/(<.*?>)*([^<]*)(<.*?>)*/;
        print $2;
        

        得到想要的结果。最后一部分不是绝对必要的,

        (<.*?>)*([^<]*)
        

        也可以

        【讨论】:

          【解决方案7】:

          如果你想获取标签内的内容,我认为下面的正则表达式就足够了:

          ^<.*>([^<>]+)<.*>$
          

          只有在标签之间确实有任何数据时才会起作用,否则它将给出不匹配。

          【讨论】:

          • 我只需要值“我的价值 1”
          【解决方案8】:

          我认为使用正则表达式解析 HTML 不是一个明智的想法,正如 spa 所强调的那样。 以前对类似问题的经典答案是RegEx match open tags except XHTML self-contained tags

          【讨论】:

            【解决方案9】:

            c#语言

             string input = "<tr><TD><FONT size=\"2\">My Value 1</FONT></TD></tr>";
             string pattern = @"<[^>]*?>";
             string output = Regex.Replace(input, pattern, ""); //My Value 1
            

            只是为了删除所有的html标签。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-04-29
              • 2016-06-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多