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

Java实现搜索词高亮时保留原文本大小写的问题求助

保留原文本大小写的搜索词高亮实现

你的问题出在替换时直接用了搜索词的原始大小写,而没有引用原文本中匹配到的内容。要解决这个问题,只需要利用正则表达式的反向引用,把匹配到的原文本内容保留下来即可。

修正思路

正则表达式里的$0代表整个匹配到的内容(也就是原文本中符合搜索词的那个词,保留了它原本的大小写),把替换字符串改成用$0代替硬编码的搜索词,就能实现保留原文本大小写的高亮。

另外,为了避免搜索词中包含正则特殊字符(比如.、*等)导致匹配出错,建议用Pattern.quote(term)对搜索词进行转义处理。

修正后的代码

String textToBeHighlighted = "apples and oranges";  
String searchString = "APPles"; 

String[] searchTerms = searchString.split(" ");
            
for (String term : searchTerms) {
    // 转义搜索词中的正则特殊字符,同时开启不区分大小写的匹配
    String pattern = "(?i)\\b" + Pattern.quote(term) + "\\b";
    // 用$0引用原文本中匹配到的内容,保留原大小写
    String replacement = "<b>$0</b>";
    
    textToBeHighlighted = textToBeHighlighted.replaceAll(pattern, replacement);
}
            
System.out.println(textToBeHighlighted);    

输出结果

运行后会得到你期望的:

"<b>apples</b> and oranges"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:53:20