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

451. Java 正则表达式 - Matcher 的 start(), end(), matches() 和 lookingAt()

451. Java 正则表达式 - Matcher 的 start(), end(), matches() 和 lookingAt()
📅 发布时间:2026/7/2 20:16:20

文章目录

  • 451. Java 正则表达式 - Matcher 的 `start()`, `end()`, `matches()` 和 `lookingAt()`
    • 1️⃣ 使用 `start()` 和 `end()` 方法
      • 功能:
      • 示例:统计单词 `"dog"` 出现次数
    • 2️⃣ 使用 `matches()` 和 `lookingAt()` 方法
      • 功能:
      • 示例:
      • 🔹 小技巧

451. Java 正则表达式 - Matcher 的start(),end(),matches()和lookingAt()

在正则表达式培训中,理解匹配位置和匹配方式非常重要。Matcher类提供了一系列方法帮助我们精确定位匹配,并判断匹配行为。


1️⃣ 使用start()和end()方法

功能:

  • start():返回匹配子序列的起始索引
  • end():返回匹配子序列的结束索引 +1
  • 可以精确知道匹配的内容在原字符串中的位置。

示例:统计单词"dog"出现次数

importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassMatcherDemo{privatestaticfinalStringREGEX="\\bdog\\b";privatestaticfinalStringINPUT="dog dog dog doggie dogg";publicstaticvoidmain(String[]args){Patternp=Pattern.compile(REGEX);Matcherm=p.matcher(INPUT);intcount=0;while(m.find()){count++;System.out.println("Match number "+count);System.out.println("start(): "+m.start());System.out.println("end(): "+m.end());}}}

输出结果:

Matchnumber1start():0end():3Matchnumber2start():4end():7Matchnumber3start():8end():11

💡说明:

  • 使用\b确保"dog"是完整单词,而不是"doggie"或"dogg"的一部分。
  • start()和end()可以结合截取子字符串,比如input.substring(m.start(), m.end())得到匹配的文本。

2️⃣ 使用matches()和lookingAt()方法

功能:

  • matches():要求整个输入字符串匹配正则表达式
  • lookingAt():只要求从输入开头开始匹配,不需要覆盖整个字符串

示例:

importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassMatchesLooking{privatestaticfinalStringREGEX="foo";privatestaticfinalStringINPUT="fooooooooooooooooo";publicstaticvoidmain(String[]args){Patternpattern=Pattern.compile(REGEX);Matchermatcher=pattern.matcher(INPUT);System.out.println("Current REGEX is: "+REGEX);System.out.println("Current INPUT is: "+INPUT);System.out.println("lookingAt(): "+matcher.lookingAt());System.out.println("matches(): "+matcher.matches());}}

输出结果:

CurrentREGEXis:fooCurrentINPUTis:fooooooooooooooooolookingAt():truematches():false

💡说明:

  • lookingAt()返回true,因为输入字符串从开头就是"foo"开始。
  • matches()返回false,因为整个字符串"foooooooooooooooo"并不等于"foo"。

✅总结:

  • start()/end()→ 精确定位匹配位置
  • matches()→ 完全匹配整个输入
  • lookingAt()→ 匹配输入开头部分即可

🔹 小技巧

  1. \b边界匹配符可以避免匹配到单词的一部分
  2. start()/end()与group()搭配,可轻松获取匹配文本及位置
  3. lookingAt()很适合前缀匹配场景

相关新闻

  • 如何解决区域创新部门在政策资金投放中的“撒胡椒面”问题?
  • 彻底解决 OpenClaw 杀毒拦截、路径报错、网关离线全套方案(含安装包)
  • Dify实战指南:从AI应用编排到企业级部署的30+核心模式解析

最新新闻

  • MATLAB黄金分割法动态演示脚本:实时显示区间缩放、函数值对比与收敛过程
  • TinyMCE格式刷插件(formatpainter)轻量版,含配置教程与实战调用示例
  • SPA模式全链路利润计算器,输入设计,生产,门店成本,对比传统分销模式收益。
  • TIA Portal V15可用的西门子PLC随机数生成LGF库(V4.0.2)
  • LV3296与PIC32MX795F512L构建高效条码采集系统
  • 拖到就转:Windows下免安装的HEX转BIN小工具,支持中文路径和长文件名

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • 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 号