news 2026/6/26 22:53:13

445. Java 正则表达式 - 边界匹配器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
445. Java 正则表达式 - 边界匹配器

文章目录

  • 445. Java 正则表达式 - 边界匹配器
    • 📌 常见的边界匹配符
    • 🔍 举例说明
      • 1. `^` 和 `$`:匹配行首和行尾
      • 2. `\b`:单词边界
      • 3. `\B`:非单词边界
      • 4. `\G`:上一个匹配的结束位置
    • 💡 实际应用场景
    • 🚀 总结

445. Java 正则表达式 - 边界匹配器

在前面,我们主要关心的是:某个字符串中有没有匹配成功。但是,有时候我们还想知道:
👉 它是不是出现在行首?
👉 是不是在单词的结尾?
👉 或者是不是紧跟在上一次匹配的后面?

这些都可以通过边界匹配器(Boundary Matchers)来精确控制。


📌 常见的边界匹配符

边界构造符描述
^一行的开始
$一行的结束
\b单词边界(word boundary)
\B非单词边界
\A输入的开始(整个文本,不受多行模式影响)
\G上一个匹配的结束位置
\Z输入的结束(忽略最后的换行符)
\z输入的真正结束(包含换行符)

🔍 举例说明

1.^$:匹配行首和行尾

Pattern p = Pattern.compile("^dog$"); Matcher m = p.matcher("dog");

✅ 输出:匹配成功,因为整个字符串就是dog

但如果前面多了空格呢?

Pattern p = Pattern.compile("^dog$"); Matcher m = p.matcher(" dog");

❌ 不匹配,因为前面多了空格,^要求必须是行首。

那我们允许空格呢?

Pattern p = Pattern.compile("^\\s*dog$"); Matcher m = p.matcher(" dog");

✅ 匹配成功,\s*表示前面可以有任意多个空格。


2.\b:单词边界

单词边界的意思是:匹配的单词必须是完整的,而不是单词中的一部分

Pattern p = Pattern.compile("\\bdog\\b"); Matcher m = p.matcher("The dog plays in the yard.");

✅ 匹配成功,因为dog独立存在。

Pattern p = Pattern.compile("\\bdog\\b"); Matcher m = p.matcher("The doggie plays in the yard.");

❌ 不匹配,因为dogdoggie的一部分,不是完整单词。


3.\B:非单词边界

\b相反,要求匹配的部分不能在单词的边界上。

Pattern p = Pattern.compile("\\bdog\\B"); Matcher m = p.matcher("The doggie plays in the yard.");

✅ 匹配成功,这里dog出现在doggie的开头,不是独立的单词。

Pattern p = Pattern.compile("\\bdog\\B"); Matcher m = p.matcher("The dog plays in the yard.");

❌ 不匹配,因为dog是一个完整单词。


4.\G:上一个匹配的结束位置

\G可以用来连续匹配,要求新匹配必须紧跟上一个。

Pattern p1 = Pattern.compile("dog"); Matcher m1 = p1.matcher("dog dog");

✅ 会找到两个结果:dog(0-3) 和dog(4-7)。

但如果我们用\G

Pattern p2 = Pattern.compile("\\Gdog"); Matcher m2 = p2.matcher("dog dog");

✅ 只找到第一个,因为第二个dog并不是紧挨着第一个结果。

这种情况常用于逐步扫描,比如日志分析。


💡 实际应用场景

  1. 行首/行尾校验
    • 验证输入是不是只包含某个单词:^yes$
    • 检查某一行是不是以分号结尾:;$
  2. 单词搜索
    • 搜索文档中独立出现的 “cat”:\bcat\b,避免误匹配 “catalog”。
  3. 分词
    • 使用\b可以方便地识别单词边界,用于英文分词。
  4. 连续匹配
    • \G常用于循环提取数据,比如 CSV 或者日志中的字段。

🚀 总结

  • ^$→ 行的开头和结尾
  • \b\B→ 单词边界与非边界
  • \A/\Z/\z→ 输入整体的开始与结束
  • \G→ 上一个匹配的结束位置

边界匹配器让我们能更精确地控制匹配位置,而不仅仅是“有没有匹配”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 22:52:21

一文分清 SEO 与 GEO,别再用传统搜索玩法布局 AI 流量

流量渠道正在迭代,网页搜索的红利慢慢消退,AI 问答已经成为采购商找供应商的首要渠道。很多企业还在用 SEO 的逻辑去做 GEO 优化,投入大量精力却看不到曝光提升,本质是没有看懂两种优化模式的核心区别。 首先是流量逻辑不同。SEO…

作者头像 李华
网站建设 2026/6/26 22:49:21

Electron v42.5.0 发布:修复多项问题,更新 Chromium 和 Node.js 版本

跨平台桌面应用构建工具 Electron 发布了 v42.5.0 版本,此次更新修复了多个问题,还对 Chromium 和 Node.js 进行了版本更新。 Electron 简介 Electron 能让开发者使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用,基于 Node.js 和 Chromium&…

作者头像 李华
网站建设 2026/6/26 22:46:24

亚马逊Zoox推双向机器人出租车新外观,多项改进助力大规模生产!

【Zoox推出机器人出租车新外观】亚马逊旗下的自动驾驶汽车公司Zoox为其方正的双向机器人出租车推出了全新外观,称这是该款面向大规模生产车辆的“下一代进化”版本。目前,该公司正在旧金山、拉斯维加斯、奥斯汀和迈阿密提供免费的机器人出租车服务&#…

作者头像 李华
网站建设 2026/6/26 22:43:04

能力的真伪之辨——从“做到极致”到“只会吟诗”

人机协作,仅供参考我们终日追逐的“能力”,究竟哪些是经得起时间淬炼的真金,哪些不过是镀了光的铜片?我深知,价值的产生不取决于灵光乍现的频率,而取决于那束光能否点燃现实的火把。同样,能力的…

作者头像 李华
网站建设 2026/6/26 22:39:46

AI时代终端窗口堆成山?这款工具让我爱不释手

现在写代码,终端窗口比以前多很多。 一个项目开一个 Terminal,一个 worktree 开一个 Terminal,跑服务再开一个,SSH 上机器再开一个。再加上 Claude Code、Codex、Gemini CLI 这类 Agent,桌面上很快就堆出一排窗口和标签…

作者头像 李华
网站建设 2026/6/26 22:35:05

为什么今天AI需要钱学森七十年前提出的答案

1954年,钱学森在美国出版了《工程控制论》(Engineering Cybernetics)一书。这本书的诞生,是在他遭受麦卡锡主义迫害、被美国政府软禁期间完成的。 七十多年后的今天,这本书中的核心思想以一种全新的方式——人工智能—…

作者头像 李华