当前位置: 首页 > news >正文

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""cat"

importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassReplaceDemo{privatestaticStringREGEX="dog";privatestaticStringINPUT="The dog says meow. All dogs say meow.";privatestaticStringREPLACE="cat";publicstaticvoidmain(String[]args){Patternp=Pattern.compile(REGEX);Matcherm=p.matcher(INPUT);// 替换所有匹配INPUT=m.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{privatestaticStringREGEX="a*b";privatestaticStringINPUT="aabfooaabfooabfoob";privatestaticStringREPLACE="-";publicstaticvoidmain(String[]args){Patternp=Pattern.compile(REGEX);Matcherm=p.matcher(INPUT);INPUT=m.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{privatestaticStringREGEX="a*b";privatestaticStringINPUT="aabfooaabfooabfoob";privatestaticStringREPLACE="-";publicstaticvoidmain(String[]args){Patternp=Pattern.compile(REGEX);Matcherm=p.matcher(INPUT);StringBuffersb=newStringBuffer();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)替换所有匹配子串

示例:

Stringinput="aabfooaabfooabfoob";Stringresult=input.replaceAll("a*b","-");System.out.println(result);// 输出: -foo-foo-foo-

💡说明

  • 内部实现原理与Pattern.compile(regex).matcher(str).replaceAll()相同
  • 适合快速处理简单替换场景

✅ 小结

  1. replaceFirst()/replaceAll()快速替换,支持正则表达式
  2. appendReplacement()/appendTail()灵活控制每个匹配,可在替换过程中加入逻辑
  3. String.replaceFirst()/String.replaceAll()方便快捷,无需创建Pattern/Matcher
http://www.cnnetsun.cn/news/3121814.html

相关文章:

  • NBTExplorer:5分钟快速上手Minecraft数据编辑的终极免费工具
  • Claude Code CLI 接入 DeepSeek 实战指南:零GUI、低延迟AI编程工作流
  • InvenTree开源库存管理系统终极指南:从零开始构建高效零件管理平台
  • NoFences:开源免费的Windows桌面栅栏工具,终结桌面混乱时代
  • Karukan:基于神经网络的日语输入系统,实现实时、上下文感知的高级日语转换
  • 【HarmonyOS 7开发者前瞻】01 HarmonyOS 7 开发者适配路线图:从 API 26 Beta 到 Skill、Agent 与 AI 工具链
  • AI 搜索工具烹饪查询结果直链原始食谱,却因 AI 生成食谱问题遭部分美食作家不满
  • 佳能G6080报错5b00维修历程,开始把打印机抱到维修店,维修师傅说修好大概180元,我觉得实在太贵了就没有必要维修了,买一台新的算了,准备买新的时候朋友推荐用佳能V6.200佳能清零软件,最终修好
  • 中小音乐团队版权方案,知保链低成本电子存证批量登记音频
  • PostgresSQL服务部署
  • Oura Ring 5:轻薄升级 40%、续航增一天,软件实用亮点多!
  • 保研每周的具体复习计划
  • 多分类逻辑回归特征选择:最优子集与逐步回归实战指南
  • SpringBoot+Vue 西安工商学院课表管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 微型NLP实践闭环:本地化年度复盘工具设计与实现
  • AI制作:2行3列六格分镜复古手账漫画
  • 柔性制造技术升级:从批量生产到个性化定制,重构制造业生产底层模式
  • 5步掌握Topit:Mac窗口置顶神器,告别窗口遮挡烦恼
  • Three.js 粒子泡泡教程
  • 01-GitHub基础认识
  • ROS 2 的发布/订阅通信验证
  • 二维码批量扫码设备硬件选型与并行解码技术方案研究
  • 未来展望:BiSheng JDK 17路线图与OpenJDK社区贡献计划终极指南
  • 特斯拉Cybercab无方向盘路测曝光!20个月落地,成本优势能否弯道超车?
  • SPI EEPROM与PIC微控制器的嵌入式存储方案设计
  • 项目进度实时监控与资源优化:项目制服务解决方案落地方法论
  • 【沈阳师范大学本科毕业论文】基于Spring boot的青少年 研学网站的设计与实现
  • 超市小程序制作,线上超市小程序开发超市小程序制作
  • 用GPT-5.5重构遗留项目:一套可复用的迁移脚本分享(附避坑指南与教程)
  • USB3.0总线高速数据采集卡,8通道、16位分辨率、5MHz同步采样,程控增益±10V、±5V、±2V、±1V