C# 使用正则表达式提取 HTML 纯文本

Mia
Mia
发布时间:2026-10-13 | 3人浏览过
原创

在 C# Web 或后端开发场景中,常需从 HTML 富文本中提取纯文字内容。通过 System.Text.RegularExpressions 库中的正则替换机制,可按顺序剔除 JavaScript、CSS 样式块及所有 HTML 标记,并清理冗余空格与异常引用符,最终输出整洁的字符串。

准备工作

本示例基于标准 .NET Framework 或 .NET Core/5+ 环境,依赖 using System.Text.RegularExpressions; 命名空间。无需额外安装第三方 NuGet 包(如 AngleSharp),适用于简单的轻量级文本抓取需求。

执行步骤

第1步:构建基础方法框架

创建一个静态辅助类方法 Html2Text,接收 HTML 字符串作为输入参数。首先进行非空判断,若输入为空则直接返回空字符串,以节省无效计算资源。

第2步:剔除内联样式表与脚本块

在处理前,优先移除可能包含敏感数据或干扰阅读的 <style> 和 <script> 块及其内部内容。

  1. 定义 regEx_style 匹配 <style[^>]*?>[\s\S]*?</style>。
  2. 定义 regEx_script 匹配 <script[^>]*?>[\s\S]*?</script>。
  3. 调用 Regex.Replace 将这些区域替换为空。

第3步:剥离所有 HTML 标签

使用 regEx_html = "<[^>]+>" 匹配任意尖括号内的内容并删除,确保只留下可见的文本节点。

第4步:清洗空白字符

执行 Regex.Replace(htmlStr, "\\s*|\t|\r|\n", ""),批量删除换行符、制表符及普通空格。随后再次替换连续的空格,防止部分排版残留。

第5步:标准化与去重特殊符号

由于不同来源的 HTML 可能混用直引号(")与 HTML 实体编码引号(”),通过链式 Replace 清除异常的引号字符,最后调用 Trim() 去除首尾空格。

public static string Html2Text(string htmlStr)
{
    if (String.IsNullOrEmpty(htmlStr))
    {
        return "";
    }
    // 定义各部分的正则表达式模式 
    string regEx_style = "<style[^>]*?>[\\s\\S]*?</style>"; 
    string regEx_script = "<script[^>]*?>[\\s\\S]*?</script>";
    string regEx_html = "<[^>]+>"; 
    
    // 依次执行替换操作
    htmlStr = Regex.Replace(htmlStr, regEx_style, ""); // 1. 删除 CSS 
    htmlStr = Regex.Replace(htmlStr, regEx_script, ""); // 2. 删除 JS 
    htmlStr = Regex.Replace(htmlStr, regEx_html, "");   // 3. 删除 HTML 标记 
    
    // 4. 去除各类空白符(含 tab、回车、换行)
    htmlStr = Regex.Replace(htmlStr, "\\s*|\t|\r|\n", "");
    htmlStr = htmlStr.Replace(" ", ""); // 清理剩余空格
    
    // 5. 针对某些乱码或异常编码的引号进行清洗
    htmlStr = htmlStr.Replace("\"", "");
    htmlStr = htmlStr.Replace("‘", "").Replace("’", "");
    
    return htmlStr.Trim();
}

排错与建议

关于 Unicode 标点符号:代码中涉及的特殊引号替换逻辑可能因编辑器或源文件编码(如 UTF-8 vs GBK)显示不同。如果运行后发现特定引号未被清理,请检查源码文件实际保存的字节表示,并确保 Replace 中使用的是原始可视字符。

性能考量:该方法对简单结构网页速度较快,但若需解析复杂的嵌套 DOM 树,正则替换在复杂场景下可能存在遗漏,建议引入专业的 HTML 解析库(如 CsQuery 或 HtmlAgilityPack)。

以上就是C#使用正则表达式过滤html标签提取纯文本的详细内容,更多关于C#正则处理与前端格式清洗的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表