尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

450. Java 正则表达式 - Matcher 类详解

450. Java 正则表达式 - Matcher 类详解
📅 发布时间:2026/7/1 19:04:36

文章目录

  • 450. Java 正则表达式 - Matcher 类详解
    • 1️⃣ 索引方法(Index Methods)
      • 示例:
    • 2️⃣ 查找方法(Study Methods)
      • 示例:
    • 3️⃣ 替换方法(Replacement Methods)
      • 示例 1:`replaceAll`
      • 示例 2:`appendReplacement` + `appendTail`
      • 示例 3:`quoteReplacement`
    • 🔹 小结

450. Java 正则表达式 - Matcher 类详解

Matcher类是 Java 正则表达式中非常核心的类,它提供了定位、匹配和替换等丰富功能。


1️⃣ 索引方法(Index Methods)

这些方法帮助你找到匹配内容在字符串中的起始位置和结束位置。

方法说明
int start()返回上一次匹配的起始索引
int start(int group)返回指定捕获组的起始索引
int end()返回上一次匹配的结束索引(即匹配的最后一个字符的下一个位置)
int end(int group)返回指定捕获组的结束索引

示例:

importjava.util.regex.*;publicclassMatcherIndexDemo{publicstaticvoidmain(String[]args){Stringinput="cat dog cat";Patternpattern=Pattern.compile("(cat)");Matchermatcher=pattern.matcher(input);while(matcher.find()){System.out.println("Found '"+matcher.group(1)+"' from "+matcher.start(1)+" to "+matcher.end(1));}}}

输出:

Found'cat'from0to3Found'cat'from8to11

💡 说明:

  • matcher.group(1)对应第一个捕获组(cat)
  • start()和end()返回精确的索引位置,方便提取或替换匹配内容

2️⃣ 查找方法(Study Methods)

这些方法判断是否存在匹配,并可以控制匹配范围。

方法说明
boolean lookingAt()从输入开头开始匹配,部分匹配成功即返回true
boolean find()查找下一个匹配
boolean find(int start)从指定索引start开始查找下一个匹配
boolean matches()匹配整个输入,完全匹配才返回true

示例:

Patternpattern=Pattern.compile("\\d+");Matchermatcher=pattern.matcher("123abc456");// lookingAtSystem.out.println(matcher.lookingAt());// true,开头是数字// findwhile(matcher.find()){System.out.println("Found: "+matcher.group()+" at "+matcher.start()+"-"+matcher.end());}// matchesMatchermatcher2=pattern.matcher("123");System.out.println(matcher2.matches());// true,整个字符串是数字

3️⃣ 替换方法(Replacement Methods)

Matcher提供了丰富的方法替换匹配内容,适合文本处理。

方法说明
appendReplacement(StringBuffer sb, String replacement)非终结替换,用于循环替换部分匹配
appendTail(StringBuilder sb)终结替换,把剩余未匹配部分追加到结果
replaceAll(String replacement)替换所有匹配
replaceFirst(String replacement)替换第一个匹配
static quoteReplacement(String s)将替换字符串转为字面量字符串,避免$或\被误解

示例 1:replaceAll

Stringinput="cat dog cat";Patternpattern=Pattern.compile("cat");Matchermatcher=pattern.matcher(input);Stringresult=matcher.replaceAll("lion");System.out.println(result);// 输出 lion dog lion

示例 2:appendReplacement+appendTail

Stringinput="one:two:three";Patternpattern=Pattern.compile(":");Matchermatcher=pattern.matcher(input);StringBuffersb=newStringBuffer();while(matcher.find()){matcher.appendReplacement(sb,"|");// 替换每个冒号为 |}matcher.appendTail(sb);// 添加剩余字符串System.out.println(sb.toString());// 输出 one|two|three

示例 3:quoteReplacement

Stringinput="price: $100";Patternpattern=Pattern.compile("\\$\\d+");Matchermatcher=pattern.matcher(input);// 使用字面量替换,避免 $ 被当作正则组Stringreplacement=Matcher.quoteReplacement("$200");Stringresult=matcher.replaceAll(replacement);System.out.println(result);// 输出 price: $200

💡 说明:

  • quoteReplacement很重要,避免$被当作分组引用
  • appendReplacement+appendTail可用于复杂替换逻辑

🔹 小结

  • 索引方法:快速定位匹配位置
  • 查找方法:灵活判断匹配,支持部分匹配和整体匹配
  • 替换方法:替换字符串、循环替换、字面量替换,文本处理利器

✅ 小技巧:

  • replaceAll适合简单替换
  • appendReplacement + appendTail适合复杂替换和按条件替换

相关新闻

  • Acode安卓代码编辑器:在手机上实现专业级编程的终极解决方案
  • 值班岗亭测评:内蒙古日硕科技表现出色,优质但价格略高适合特
  • 【架构实战】领域驱动设计DDD:复杂业务系统的建模与落地

最新新闻

  • STM32多传感器融合定位系统设计与实践
  • JMeter压测必备:ServerAgent服务器CPU与内存监控实战指南
  • LLM应用测试框架Evalite:从原理到实践,构建可量化评估体系
  • WordPress双支付插件:PayPal+Stripe内嵌表单与跳转支付一键启用
  • 油层物理——10. 孔隙介质中多相渗流特性与相对渗透率曲线
  • 构建综合性网络安全实战靶场:从Web渗透到移动端安全

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号