C#正则表达式解析HTML [重复]

Posted

技术标签:

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

我的价值 1

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

【问题讨论】:

标签是否总是相同的格式(例如 3 层深,一个 tr、一个 td 和一个字体) 你用什么语言来解析这个? 【参考方案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标签。

【讨论】:

以上是关于C#正则表达式解析HTML [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c#正则表达式捕获两个字符串之间的字符串[重复]

通过正则表达式在c#中打开html标签[重复]

C#中特定html标签的正则表达式[重复]

替代正则表达式以解析链接的 HTML 页面 [重复]

C#使用正则表达式检查字符串中重复出现的词

在 HTML 单元格中使用 HTML 解析 Python 正则表达式 [重复]