C# 从Html字符串中删除字符串的父标记直到其结束标记

C# 从Html字符串中删除字符串的父标记直到其结束标记,c#,asp.net,regex,C#,Asp.net,Regex,我有一个很长的字符串,我正在尝试完成的是将该字符串中的一个部分从字符串的父标记删除到其结束标记。(希望我足够清楚) 因此,当我用文本“搜索集成”调用RemoveSection方法时 以前的Html 标题帮助 搜索集成帮助 标题帮助 Remove函数获取的字符串将位于 只有一个部分包含该字符串-因此第一次出现应该由remove函数处理 Html后 标题帮助 标题帮助 您可以使用它。一个简单的LinqPad示例: void Main() { string input = "&

我有一个很长的字符串,我正在尝试完成的是将该字符串中的一个部分从字符串的父标记
删除到其结束标记
。(希望我足够清楚)

因此,当我用文本“搜索集成”调用RemoveSection方法时


以前的Html

标题帮助

搜索集成帮助

标题帮助


  • Remove函数获取的字符串将位于

  • 只有一个部分包含该字符串-因此第一次出现应该由remove函数处理

Html后

标题帮助

标题帮助

您可以使用它。一个简单的LinqPad示例:

void Main()
{
    string input = "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\"><p class=\"SectionHeader\">Header XX<span class=\"help\">Help</span></p></td></tr>"
                + "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\">    <p class=\"SectionHeader\">Search Integration<span class=\"help\">Help</span></p>    </td>    </tr>"
                + "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\">    <p class=\"SectionHeader\">Header YY<span class=\"help\">Help</span></p>    </td>    </tr>";

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(input);

    doc.DocumentNode.SelectSingleNode("//p[text()='Search Integration']").ParentNode.ParentNode.Remove();

    string output = doc.DocumentNode.OuterHtml;

    input.Dump();
    output.Dump();
}
void Main()
{
string input=“

Header XXHelp

“ +“

搜索集成帮助

” +“

标题YYHelp

”; HtmlDocument doc=新的HtmlDocument(); doc.LoadHtml(输入); doc.DocumentNode.SelectSingleNode(“//p[text()='Search Integration']”)。ParentNode.ParentNode.Remove(); 字符串输出=doc.DocumentNode.OuterHtml; input.Dump(); output.Dump(); }
虽然我仍然推荐公认的解决方案,但使用普通正则表达式也可以做到同样的事情

string search = "Search Integration";

string pattern = "<tr(?:(?!/?<tr).)*" + search + "(?:(?!/?tr).)*/tr>";
Regex r = new Regex(pattern, RegexOptions.Singleline);
string result = r.Replace(text, "");
string search=“搜索集成”;
字符串模式=”
void Main()
{
    string input = "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\"><p class=\"SectionHeader\">Header XX<span class=\"help\">Help</span></p></td></tr>"
                + "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\">    <p class=\"SectionHeader\">Search Integration<span class=\"help\">Help</span></p>    </td>    </tr>"
                + "<tr><td class=\"SectionHeaderHolder\" colspan=\"4\">    <p class=\"SectionHeader\">Header YY<span class=\"help\">Help</span></p>    </td>    </tr>";

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(input);

    doc.DocumentNode.SelectSingleNode("//p[text()='Search Integration']").ParentNode.ParentNode.Remove();

    string output = doc.DocumentNode.OuterHtml;

    input.Dump();
    output.Dump();
}
string search = "Search Integration";

string pattern = "<tr(?:(?!/?<tr).)*" + search + "(?:(?!/?tr).)*/tr>";
Regex r = new Regex(pattern, RegexOptions.Singleline);
string result = r.Replace(text, "");