我想找到使用正则表达式的特殊文本的HTML表格行。
在上表第一个单元格文本'Total'中,我想替换第一行。
<table>
<tr><td>Total</td><td>255</td></tr>
<tr><td>XYz</td><td>441</td></tr>
</table>
答案 0 :(得分:1)
要回答您的问题,这将匹配并允许您替换该行。
(<tr><td>Total.*?</tr>)
但是,如果可能的话,我还鼓励你使用像HTMLAgilityPack这样的东西(将优雅地处理格式错误的HTML)或纯粹的XML解析器,如果你有幸拥有严格的XHTML标记(罕见)。
答案 1 :(得分:0)
不幸的是,您无法将HTML与正则表达式可靠地匹配。这是因为HTML使用正则表达式是context-free language而不是regular language parseable。
请考虑使用HTML解析器。对于C#,HTML Agility Pack是一个不错的选择,正如上面评论中提到的mgnoonan。
答案 2 :(得分:0)
必须做出一些假设,您的HTML输入字符串是有效的HTML(格式正确),否则函数将 失败 :P
试试这个
private static MatchCollection GetSpecialTables(string inputStr, string ftrName)
{
try
{
return Regex.Matches(inputStr, string.Format(@"<table>\s+<tr><td>{0}</td>.+?</table>", Regex.Escape(ftrName)), RegexOptions.Singleline);
}
catch (ArgumentException ex)
{
// Syntax error in the regular expression, handle it
return null;
}
}
// use it this way!
static void Main()
{
var matches = GetSpecialTables(myHtml, "Total");
foreach (Match match in matches)
{
// match.Value;
}
}