You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK1.8环境下Java正则Matcher.find()匹配结果异常问题咨询

问题根源

  • 量词使用不符合预期:你写的[a-zA-Z]*中*的含义是匹配0次及以上的字母,你预期要求「至少1个字母」,应该将*替换为+,修正后的正则为([a-zA-Z]+), ([a-zA-Z]+)。
  • find()方法的特性导致部分匹配:Matcher.find()不需要匹配整个输入字符串,只要在字符串中找到任意一段符合规则的子串就会返回true。你输入Bond, 007时,Bond, 后的位置刚好可以匹配0个字母,所以原正则匹配到了Bond, 这段子串,第二个分组自然返回空字符串。

修复方案

如果要验证整串完全符合你的规则,二选一即可:

  1. 保留find()调用,给正则加上首尾边界限制:^([a-zA-Z]+), ([a-zA-Z]+)$,^代表字符串起始位置,$代表字符串结束位置,避免部分匹配
  2. 直接将代码中的mch.find()替换为mch.matches(),matches()方法默认要求正则匹配整个输入字符串,不需要额外加边界符

内容的提问来源于stack exchange,提问作者Aging Hacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:05