// 示例用法:
string inputhtml = "<html><body><h1>Hello, World!</h1>This is a <b>test</b>.</body></html>";
string plainText = RemoveHtmlTags(inputHtml);
Console.WriteLine(plainText); // 输出: "Hello, World!This is a test."
public static string RemoveHtmlTags(string html)
{
// 正则表达式用于匹配HTML标签
Regex regex = new Regex("<.?>", RegexOptions.Singleline | RegexOptions.Compiled);
// 利用正则表达式的Replace方法移除所有匹配的HTML标签
string result = regex.Replace(html, String.Empty);
return result;
}
这个正则表达式<.?>是非贪婪匹配任何以 < 开始、以 > 结束的字符串,它会尽可能少地匹配字符以找到每个HTML标签。
请把稳,虽然此方法对付大略场景可能有效,但对繁芜的HTML文档(特殊是含有嵌套标签、注释、CDATA等内容)可能不足健壮,由于它无法处理所有可能的HTML构造。
第二个核心代码是:正则表达式"<[^>]>"
public static string ExtractPlainTextFromHtml(string html)
{
// 利用正则表达式匹配所有的HTML标签
// 把稳:这个大略的正则表达式适用于大多数根本HTML构造,但可能无法处理繁芜嵌套或分外格式的HTML
Regex regex = new Regex("<[^>]>", RegexOptions.Singleline | RegexOptions.Compiled);
// 利用Replace方法去除所有匹配到的HTML标签,并返回纯文本内容
string plainText = regex.Replace(html, String.Empty);
return plainText.Trim(); // 为了得到更整洁的结果,可以对结果进行trim操作以去除多余的空缺字符
}
在这段代码中,我们定义了一个名为ExtractPlainTextFromHtml的方法,该方法利用正则表达式 <[^>]> 来查找并更换所有HTML标签。这里的正则表达式表示任何以 < 开始、以 > 结束的非空字符串(即HTML标签),Singleline 选项使.能匹配换行符,以便跨多行搜索标签,而 Compiled 选项则是为了优化正则表达式的性能。
第二个核心代码是:正则表达式"<[^>]>"
public static string RemoveHtmlTags(string html)
{
// 正则表达式,匹配所有HTML标签
string pattern = "<[^>]+>";
// 利用Regex.Replace方法移除所有匹配的HTML标签
return Regex.Replace(html, pattern, String.Empty);
}
请把稳,此方法仅移除HTML标记,不会解析或处理嵌入在HTML中的JavaScript代码或其他非标记内容。此外,此方法也无法处理不规范或不符合预期格式的HTML标记。如果须要更繁芜的HTML解析或清理,您可能须要利用专门的HTML解析库,如AngleSharp或HtmlAgilityPack等。
只管上述方法对付许多大略场景已经足够有效,但在面对繁芜的HTML文档时,由于HTML本身的嵌套和分外构造,大略的正则表达式可能无法完美地解析并移除所有标签。在这种情形下,推举利用专门为处理HTML设计的库,如HtmlAgilityPack,它可以准确地解析HTML并供应丰富的API用于提取纯文本内容。