452. Java 正则表达式 - 文本替换
文章目录452. Java 正则表达式 - 文本替换1️⃣ replaceFirst() 和 replaceAll()功能示例 1替换单词 dog 为 cat示例 2使用正则表达式替换2️⃣ appendReplacement() 和 appendTail()功能示例3️⃣ String 类中的替换方法示例✅ 小结452. Java 正则表达式 - 文本替换在正则表达式处理中文本替换是非常常见的操作。Java 提供了多种方式完成替换从简单的替换到更灵活的逐步替换。1️⃣replaceFirst()和replaceAll()功能replaceFirst()只替换匹配到的第一个子串replaceAll()替换匹配到的所有子串示例 1替换单词dog为catimportjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassReplaceDemo{privatestaticStringREGEXdog;privatestaticStringINPUTThe dog says meow. All dogs say meow.;privatestaticStringREPLACEcat;publicstaticvoidmain(String[]args){PatternpPattern.compile(REGEX);Matchermp.matcher(INPUT);// 替换所有匹配INPUTm.replaceAll(REPLACE);System.out.println(INPUT);}}输出结果Thecat saysmeow.Allcats say meow.说明dog被替换为cat如果只想替换第一个匹配调用replaceFirst(REPLACE)即可。示例 2使用正则表达式替换importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassReplaceDemo2{privatestaticStringREGEXa*b;privatestaticStringINPUTaabfooaabfooabfoob;privatestaticStringREPLACE-;publicstaticvoidmain(String[]args){PatternpPattern.compile(REGEX);Matchermp.matcher(INPUT);INPUTm.replaceAll(REPLACE);System.out.println(INPUT);}}输出结果-foo-foo-foo-说明a*b匹配零个或多个 a 后跟一个 b的模式可以看到复杂模式同样可以直接替换2️⃣appendReplacement()和appendTail()功能提供更灵活的替换控制可逐个处理匹配与replaceAll()效果相同但可在替换过程中进行逻辑处理示例importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassRegexDemo{privatestaticStringREGEXa*b;privatestaticStringINPUTaabfooaabfooabfoob;privatestaticStringREPLACE-;publicstaticvoidmain(String[]args){PatternpPattern.compile(REGEX);Matchermp.matcher(INPUT);StringBuffersbnewStringBuffer();while(m.find()){// 逐个替换匹配m.appendReplacement(sb,REPLACE);}// 将剩余文本追加到 sbm.appendTail(sb);System.out.println(sb.toString());}}输出结果-foo-foo-foo-说明appendReplacement可以在每次匹配时动态生成替换内容appendTail用于追加最后剩余的文本3️⃣String类中的替换方法JavaString类提供了和Matcher类等效的方法使用更简单方法功能replaceFirst(String regex, String replacement)替换第一个匹配子串replaceAll(String regex, String replacement)替换所有匹配子串示例Stringinputaabfooaabfooabfoob;Stringresultinput.replaceAll(a*b,-);System.out.println(result);// 输出: -foo-foo-foo-说明内部实现原理与Pattern.compile(regex).matcher(str).replaceAll()相同适合快速处理简单替换场景✅ 小结replaceFirst()/replaceAll()→快速替换支持正则表达式appendReplacement()/appendTail()→灵活控制每个匹配可在替换过程中加入逻辑String.replaceFirst()/String.replaceAll()→方便快捷无需创建Pattern/Matcher