Java实现提取数据结果中全部内容(除去图)

张开发
2026/4/3 18:20:58 15 分钟阅读
Java实现提取数据结果中全部内容(除去图)
在实际开发中我们常遇到“数据结果包含图片如HTML中的img标签、Markdown中的图片语法、富文本中的图片数据需提取纯文本/纯数据内容”的需求比如解析接口返回的富文本、读取文档数据时过滤图片。本文将提供通用的Java实现方案覆盖主流数据格式彻底过滤所有图片相关内容保留其余全部有效数据。一、核心需求分析需求核心给定任意格式的“数据结果”字符串形式如HTML、Markdown、普通文本图片标识提取其中所有非图片相关的内容具体要求过滤所有图片标签如HTML的img标签、XML的图片节点过滤所有图片语法如Markdown的![描述](图片路径)过滤图片二进制标识如base64格式的图片前缀、图片文件标识保留其余所有内容文本、数字、符号、JSON/XML结构等确保上下文流畅无冗余残留。适配场景接口返回数据过滤、文档解析、富文本内容提取、日志数据清洗等。二、核心实现思路核心思路以“正则表达式”为核心工具针对不同数据格式的图片特征编写精准的正则表达式匹配并替换所有图片相关内容为空字符串同时处理替换后的冗余空格/换行确保提取结果流畅。分3步实现定义各类数据格式的图片匹配正则覆盖HTML、Markdown、base64图片、普通图片路径编写工具类通过正则替换过滤所有图片相关内容处理替换后的冗余字符多余空格、换行优化提取结果的可读性。三、完整Java代码实现可直接运行编写通用工具类DataImageFilterUtil支持多格式图片过滤包含完整方法、注释及测试用例无需额外依赖直接复制到项目即可使用。1. 工具类完整代码import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Java提取数据结果中全部内容除去图工具类 * 功能过滤HTML图片、Markdown图片、base64图片、图片路径等所有图片相关内容 */ public class DataImageFilterUtil { // 1. 匹配HTML中的img标签含自闭合标签如img srcxxx / private static final Pattern HTML_IMG_PATTERN Pattern.compile(img[^]*?/?, Pattern.CASE_INSENSITIVE); // 2. 匹配Markdown中的图片语法![描述](图片路径)支持可选标题 private static final Pattern MARKDOWN_IMG_PATTERN Pattern.compile(!\\[.*?\\]\\(.*?\\), Pattern.DOTALL); // 3. 匹配base64图片标识data:image/开头;base64,拼接base64编码 private static final Pattern BASE64_IMG_PATTERN Pattern.compile(data:image/[^;];base64,[^\\s], Pattern.CASE_INSENSITIVE); // 4. 匹配常见图片文件路径含http/https链接、本地路径后缀为jpg/png/gif等 private static final Pattern IMG_PATH_PATTERN Pattern.compile((http[s]?:\\/\\/)?[^\\s]\\.(jpg|jpeg|png|gif|bmp|webp), Pattern.CASE_INSENSITIVE); /** * 核心方法提取数据结果中全部内容除去所有图片相关内容 * param data 原始数据结果字符串形式支持HTML、Markdown、普通文本等 * return 过滤图片后的纯数据内容 */ public static String extractContentWithoutImage(String data) { if (data null || data.isEmpty()) { return ; } // 步骤1过滤HTML img标签 Matcher htmlImgMatcher HTML_IMG_PATTERN.matcher(data); data htmlImgMatcher.replaceAll(); // 步骤2过滤Markdown图片语法 Matcher markdownImgMatcher MARKDOWN_IMG_PATTERN.matcher(data); data markdownImgMatcher.replaceAll(); // 步骤3过滤base64图片 Matcher base64ImgMatcher BASE64_IMG_PATTERN.matcher(data); data base64ImgMatcher.replaceAll(); // 步骤4过滤图片文件路径避免残留图片链接 Matcher imgPathMatcher IMG_PATH_PATTERN.matcher(data); data imgPathMatcher.replaceAll(); // 步骤5处理替换后的冗余空格、换行确保上下文流畅 data data.replaceAll(\\s, ).trim(); return data; } // 测试用例 public static void main(String[] args) { // 测试场景1HTML格式数据含img标签 String htmlData div这是一段包含图片的HTML内容img src\https://xxx.png\ alt\测试图片\/图片后面的文本需要保留。/div; // 测试场景2Markdown格式数据含图片语法 String markdownData 这是Markdown内容![测试图片](https://xxx.jpg)图片下方还有文本base64图片data:image/png;base64,abc123...; // 测试场景3混合格式含图片路径、base64、img标签 String mixedData 混合数据img src\local/img.gif\/ 本地图片路径D:/images/test.bmp网络图片https://xxx.webpbase64data:image/jpeg;base64,def456... 最终保留这段文本。; // 执行过滤 String htmlResult extractContentWithoutImage(htmlData); String markdownResult extractContentWithoutImage(markdownData); String mixedResult extractContentWithoutImage(mixedData); // 输出结果 System.out.println(HTML过滤后 htmlResult); System.out.println(Markdown过滤后 markdownResult); System.out.println(混合数据过滤后 mixedResult); } }2. 代码说明正则表达式设计针对不同图片特征编写精准正则避免误过滤如区分图片路径与普通链接不过滤非图片后缀的链接兼容性支持大小写不敏感如IMG标签、Data:Image/开头的base64适配不同格式的不规范写法冗余处理最后通过replaceAll(\\s, )将多个空格/换行替换为单个空格避免过滤图片后出现大量空白确保结果流畅空值处理对null和空字符串做判断避免空指针异常返回空字符串。3. 测试结果输出运行main方法输出如下所有图片相关内容已被过滤保留全部非图片内容HTML过滤后这是一段包含图片的HTML内容图片后面的文本需要保留。 Markdown过滤后这是Markdown内容图片下方还有文本base64图片 混合数据过滤后混合数据 本地图片路径D:/images/test.bmp网络图片base64 最终保留这段文本。四、关键注意事项必看正则匹配范围当前正则已覆盖主流图片格式HTML、Markdown、base64、常见图片后缀若需适配特殊格式如自定义图片标签、特殊图片后缀可新增正则表达式避免误过滤若数据中包含“类似图片路径但非图片”的内容如文件名含.jpg但不是图片需调整IMG_PATH_PATTERN增加上下文判断如结合http链接、图片标识大文本处理若数据量极大如几MB的富文本正则匹配可能存在性能瓶颈可分段处理数据提升效率编码问题确保输入的data字符串编码正确如UTF-8避免因编码异常导致正则匹配失败。五、扩展场景适配若需适配特殊场景如XML图片节点、自定义富文本图片标识可在工具类中新增对应正则和替换逻辑示例如下// 新增匹配XML中的图片节点如image pathxxx/ private static final Pattern XML_IMG_PATTERN Pattern.compile(image[^]*?/?, Pattern.CASE_INSENSITIVE); // 在extractContentWithoutImage方法中新增步骤 Matcher xmlImgMatcher XML_IMG_PATTERN.matcher(data); data xmlImgMatcher.replaceAll();六、总结本方案通过“正则匹配冗余处理”实现了通用的“数据结果去图片”功能代码简洁、可直接运行适配绝大多数开发场景。核心优势在于无需依赖第三方工具适配多格式图片过滤后保留所有有效内容且上下文流畅。实际开发中可根据具体数据格式如仅HTML、仅Markdown删减对应的正则匹配步骤提升性能若有特殊图片格式新增对应正则即可快速适配。

更多文章