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

Java使用replaceAll替换特定字符串结果不符合预期,如何修复?

解决replaceAll替换时误匹配子串的问题

你的问题出在replaceAll()的工作机制上——这个方法是基于正则表达式进行匹配替换的,而不是简单的字符串字面量替换。你的输入"hellol lol"里,hellol的最后三个字符刚好是lol,所以被正则"lol"命中替换,才出现了hellaugh out loud laugh out loud这个不符合预期的结果。

要只替换作为独立单词的lol,我们需要用正则的单词边界\b来限定匹配范围:

String inputString = "hellol lol";
// 使用单词边界\b确保只匹配独立的lol单词,Java中反斜杠需要转义为\\
String result = inputString.replaceAll("\\blol\\b", "laugh out loud");
System.out.println("Normal Form:" + result);

为什么这样有效?

  • \b是正则中的单词边界元字符,它匹配的是单词字符(字母、数字、下划线)和非单词字符之间的位置,或者字符串的首尾位置。
  • 加上\blol\b后,只会匹配被空格/字符串首尾包围的lol,不会匹配hellol这种单词内部的lol子串。

运行修改后的代码,输出就是你想要的:Normal Form:hellol laugh out loud


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:09