【发布时间】:2017-10-31 01:54:43
【问题描述】:
我正在尝试从 HTML 文件中提取一些文本。
这是让我头疼的部分示例:
<TD>
Adresa instalacije:
</TD>
<TD COLSPAN=2>
<TABLE border=0 cellpadding=3 cellspacing="1" bgcolor="#AAAA77" width="100%">
<TR bgcolor="#FFFFCC">
<TD COLSPAN=2><B>SOME TEXT</B></TD>
</TR>
<TR bgcolor="#FFFFCC">
<TD>ADM šifra: </TD>
<TD><B>914122</B></TD>
</TR>
</TABLE>
</TD>
我要提取的部分在
之间 <TD COLSPAN=2><B> </B></TD>
这是我的正则表达式:
var regexAdresa = @"<TD>Adresa korisnika:</TD><TD COLSPAN=2>";
regexAdresa += @"<TABLE border=0 cellpadding=3 cellspacing=""1"" bgcolor=""#AAAA77"" width=""100%"">";
regexAdresa += @"<TR bgcolor=""#FFFFCC"">";
regexAdresa += @"<TD><B>(.*?)</B></TD>";
regexAdresa += @"</TR></TABLE></TD>";
var r0 = new Regex(regexAdresa);
var rr0 = r0.Match(text);
var res0 = rr0.Groups[1].ToString();
我的结果总是 resurs 0。我做错了什么吗?
【问题讨论】:
-
为什么要这样做?查找 HTML 解析器。
-
你不能假装空白不存在。正则表达式匹配你告诉他们匹配的字符;他们不会说“哦,这看起来像 HTML,让我们看看,HTML 的解析规则是什么……”不过,一个合适的 HTML 解析器会很乐意为您忽略空格。
-
惊讶的this还没有关联。
-
@Josef 不,这个很容易。十五分钟前我告诉过你答案。正则表达式的答案,我的意思是——除了“正确”的答案,即使用 HTML 解析器。
-
正如其他人所提到的,您可以使用一些 HTML 解析器,如 HTMLAgilityPack 或其他东西。对于这个特定示例,您可能可以使用像
<TD( COLSPAN=[1-9]+)?><B>[^<>]+<\/B><\/TD>这样的正则表达式,检查 here
标签: c# regex html-parsing