以下代码不起作用,我试图从HTML表中检索TR字符串。此代码或任何其他解决方案是否存在任何问题?
public static List<string> GetTR(string Tr)
{
List<string> trContents = new List<string>();
string regexTR = @"<(tr|TR)[^<]+>((\s*?.*?)*?)<\/(tr|TR)>";
MatchCollection tr_Matches = Regex.Matches(Tr, regexTR, RegexOptions.Singleline);
foreach (Match match in tr_Matches)
{
trContents.Add(match.Value);
}
return trContents;
}
示例输入字符串如下:
"<TR><TD noWrap align=left>abcd</TD><TD noWrap align=left>SPORT</TD><TD align=left>5AT</TD></TR>"
答案 0 :(得分:6)
使用正则表达式解析HTML是一件麻烦事。
使用HTML Agility Pack等内容正确完成工作。
答案 1 :(得分:0)
我认为这个正则表达式会更合适:
<(tr|TR)[^>]*>.*<\/\1>
答案 2 :(得分:0)
此正则表达式匹配您的输入字符串:
<(tr|TR)+>((\s*?.*?)*?)<\/(tr|TR)>
我删除了“[^&lt;]”...不确定为什么需要它。另外,尝试添加一个非贪婪的比赛...
然而,最好选择像HTML Agility Pak这样的东西(如果你想保持理智):)
答案 3 :(得分:0)
(<(tr|TR)[^<]*>)(.+)((<\(tr|TR)[^<]*>)