news 2026/7/1 19:01:08

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
450. Java 正则表达式 - Matcher 类详解

文章目录

  • 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适合复杂替换和按条件替换
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 18:59:39

外景 足球场(Soccer Stadium)

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述足球场(Soccer Stadium) 地址:本地PC端运行(或WebGL端部署链接…

作者头像 李华
网站建设 2026/7/1 18:59:24

数据库范式详细解析

本文档系统讲解关系数据库的四大范式:1NF、2NF、3NF 和 BCNF,并对比它们的区别与联系。 目录 什么是数据库范式第一范式 (1NF)第二范式 (2NF)第三范式 (3NF)BC范式 (BCNF)四大范式对比总结区别与联系实际应用建议 什么是数据库范式 范式(No…

作者头像 李华
网站建设 2026/7/1 18:54:29

学了 GPT-5.5 新特性,我重构了去年写的聊天应用

去年我用 GPT-4 API 开发了一个带 RAG(检索增强生成)的团队知识库聊天应用,当时饱受上下文漂移、Token 消耗过快以及响应延迟的折磨。近期 GPT-5.5 推出了一系列针对多轮对话与长文本推理的新特性,我在 AI 模型聚合平台&#xff0…

作者头像 李华
网站建设 2026/7/1 18:53:15

段码屏普通视角与全视角区别

段码屏普通视角与全视角区别2018-07-16一、核心区别普通视角(TN/HTN):仅正对或某一方向清晰,偏角易变暗、发白、反色,成本低。全视角(FSTN/VA):上下左右接近180清晰无死角&#xff0…

作者头像 李华
网站建设 2026/7/1 18:52:08

MuleSoft企业级AI编排:构建可审计、可治理的大模型集成中枢

1. 项目概述:当企业级集成平台遇上大语言模型,不是叠加,而是重定义工作流“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题里藏着一个正在发生的、静默却剧烈的范式转移。它说的不是“用…

作者头像 李华