You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取忽略 及部分HTML标签的Java子字符串

Java提取含HTML标签和换行符字符串中的目标子串

下面提供几种实用的Java实现方式,按需选择:

方法1:先清理干扰内容,再查找目标

先把所有HTML标签、换行符这类干扰内容移除,得到纯文本后直接查找目标字符串,适合目标子串在纯文本中是连续的情况。

public class TargetExtractor {
    public static void main(String[] args) {
        // 示例原始字符串
        String rawContent = "<div class=\"bank-name\">\nHDFC</a> Bank</td>";
        String target = "HDFC Bank";
        
        // 移除所有HTML标签
        String noTags = rawContent.replaceAll("<[^>]+>", "");
        // 移除换行符并去除首尾空白
        String cleanedText = noTags.replaceAll("\\n", "").trim();
        
        if (cleanedText.contains(target)) {
            System.out.println("提取到目标:" + target);
        } else {
            System.out.println("未找到目标子串");
        }
    }
}
  • replaceAll("<[^>]+>", ""):通过正则匹配并移除所有HTML标签(匹配以<开头、>结尾的任意内容)
  • replaceAll("\\n", ""):移除换行符,trim()用来去掉首尾多余空白

方法2:正则直接匹配拆分的目标子串

如果目标子串被HTML标签或换行拆分(比如HDFC和Bank之间插了标签),可以用正则允许中间存在任意干扰内容,直接匹配目标。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TargetExtractor {
    public static void main(String[] args) {
        String rawContent = "<a href=\"#\">HDFC</a>\n<div>Bank</td>";
        // 正则:匹配HDFC和Bank之间允许任意空白、标签等干扰内容
        String regex = "HDFC\\s*(?:<[^>]+>|\\s)*Bank";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(rawContent);
        
        if (matcher.find()) {
            System.out.println("提取到目标:HDFC Bank");
            // 若需要获取实际匹配的内容(包含中间干扰),可以用matcher.group()
            // System.out.println("匹配到的完整内容:" + matcher.group());
        } else {
            System.out.println("未找到目标子串");
        }
    }
}
  • \\s*:匹配任意数量的空白(包括换行、空格)
  • (?:<[^>]+>|\\s)*:非捕获组,匹配任意数量的HTML标签或空白,确保HDFC和Bank之间的干扰都被忽略

方法3:用HTML解析库处理复杂HTML

如果原始内容是完整的HTML文档,用专业的HTML解析库(比如Jsoup)更稳定,避免正则处理复杂HTML时的漏洞。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class TargetExtractor {
    public static void main(String[] args) {
        String rawHtml = "<table><tr><td><span class=\"name\">HDFC</span> Bank</td></tr></table>";
        // 解析HTML文档
        Document doc = Jsoup.parse(rawHtml);
        // 获取所有纯文本内容,自动移除标签和格式
        String plainText = doc.text();
        
        String target = "HDFC Bank";
        if (plainText.contains(target)) {
            System.out.println("提取到目标:" + target);
        } else {
            System.out.println("未找到目标子串");
        }
    }
}
  • 注意:使用Jsoup需要在项目中引入依赖(Maven可添加Jsoup的依赖坐标)
  • Jsoup的text()方法会自动合并HTML中的所有文本,忽略标签、换行和格式,处理复杂HTML更可靠

内容的提问来源于stack exchange,提问作者vikramvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:50:42