2010-03-03 99 views
0

我的价值1C#正则表达式解析HTML

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

+0

到目前为止你做了什么? – 2010-03-03 16:03:47

+0

将标签总是在相同的格式(例如3层深,tr,td和字体) – chillysapien 2010-03-03 16:04:26

+0

是相同的格式 – Chicharito 2010-03-03 16:10:33

回答

2

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标签。

+0

其工作感谢 – Chicharito 2010-03-04 09:15:36

+0

不客气。 – ldp615 2010-03-06 13:27:56

0

尝试:

/<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 
?> 
+0

不工作codaddict – Chicharito 2010-03-03 16:09:46

+0

@oraclee,它怎么不工作?它回来了什么? – Lazarus 2010-03-03 16:11:01

+0

@Lazarus return null – Chicharito 2010-03-03 18:28:12

0
function stripTags(markup){ 
    return markup.replace(/\s*<[^>]*?>\s*/gim,''); 
} 

这是假定你真正想要的是上面的 “我的价值1” 代表的内部文本。

3

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

+1

但是你可以解析一个固定的字符串,它恰好是正则表达式的HTML。虽然这样做有很多问题,但它们是OP可能没有的问题。 – Tom 2010-03-03 16:11:23

+2

@Tom - 同意。但尽管OP今天不具备这些功能,但他可能明天也不会怀疑发生了什么,希望。 – msw 2010-03-03 16:14:57

7

由于HTML代码非常“不可预知”,我建议使用HTML解析工具包。你使用哪种编程语言?在.NET中,我使用HTML Agility Pack获得了巨大成功。在Java HTML Parse r可能很方便(虽然我还没有与它合作)。

0

,如果你使用的是PHP,Perl中各执</FONT>

$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 
+0

我需要c#语言:-) – Chicharito 2010-03-03 22:42:17

0

我会用

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

,以获得期望的结果。最后一部分是不是绝对必要的,

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

也能发挥作用

0

如果你想在标签内的内容我想下面的正则表达式是不够的:

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

它将只有在标签之间确实存在任何数据的情况下才能工作,否则会导致不匹配。

+0

我只需要值“我的价值1” – Chicharito 2010-03-03 22:41:22