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

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

文章目录

  • 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()很适合前缀匹配场景
http://www.jsqmd.com/news/1110944/

相关文章:

  • 如何解决区域创新部门在政策资金投放中的“撒胡椒面”问题?
  • 港股AI新股成“韭菜镰刀”:上市拉高、配股、入港股通后暴跌,散户成最终买单者
  • 彻底解决 OpenClaw 杀毒拦截、路径报错、网关离线全套方案(含安装包)
  • 如何快速获取网盘直链:LinkSwift网盘下载助手完整指南
  • 从吃灰到生产力:用Armbian让旧电视盒子重获新生
  • GPT-4稀疏激活真相:万亿参数如何实现2%动态路由
  • Dify实战指南:从AI应用编排到企业级部署的30+核心模式解析
  • LU,大鼠脑定位仪 小鼠脑定位仪 大动物定位仪 小动物脑定位仪
  • 为什么专业机房都离不开防火门?一文讲透它的重要性
  • 大模型辅助搭建生产制造型企业排单助手
  • 经济周期与服饰品类匹配程序,区分繁荣期奢品,下行期平价服饰最优备货比例。
  • 索尼 PS6 将用 Zen 6 LP 低功耗核心,专为后台闲置工作降能耗
  • 分享:一站式 AI 工具全栈实验室|Chaos AI 研究室
  • 【Java课程设计/毕业设计】基于 SpringBoot 的智能瑜伽健身服务管理系统的设计与实现 基于 SpringBoot 的普拉提会馆会员权益与课程管理系统【附源码、数据库、万字文档】
  • A 股上市公司高管数字背景数据集
  • Whisky:在macOS上重构Windows应用运行边界的架构革命
  • 2026AI论文工具红黑榜出炉!教你选对工具,写作不踩坑
  • 67|技能治理:版本、禁用回滚与共享策略
  • TikTokDownload Cookie自动获取:告别手动烦恼的10分钟终极指南
  • 2026 年居家高温灼伤护理科普:热水烫伤应急处理与避坑实操指南
  • 面向对象设计在Java开发中的核心作用
  • AI教材写作必备:低查重AI工具,为教材编写保驾护航!
  • Artillery性能测试实战:从脚本编写到结果分析全流程指南
  • 69_Python时间日期处理
  • 全球公司集体反省:从“Token管够”到“小模型经济学”,省钱风潮来袭!
  • 如何3分钟搞定QQ空间数据备份:GetQzonehistory智能导出工具完整指南
  • STM32F439ZG与DS28EC20 1-Wire EEPROM嵌入式存储方案
  • 如何通过HWInfo插件实现FanControl智能风扇控制:完整配置指南
  • 2026论文写作新利器!5款AI论文软件实测,从框架到内容一步到位
  • 苹果提前发布系统更新修复 29 个安全漏洞,归咎于人工智能威胁!